To: vim-dev@vim.org
Subject: Patch 6.0.054
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------

Patch 6.0.054
Problem:    When using mswin.vim, CTRL-V pastes a block of text like it is
	    normal text.  Using CTRL-V in blockwise Visual mode leaves "x"
	    characters behind.
Solution:   Make CTRL-V work as it should.  Do the same for the Paste menu
	    entries.
Files:	    runtime/menu.vim, runtime/mswin.vim


*** ../vim60.53/runtime/menu.vim	Wed Oct 31 17:50:48 2001
--- runtime/menu.vim	Wed Oct 31 16:47:20 2001
***************
*** 112,119 ****
  amenu 10.610 &File.Sa&ve-Exit<Tab>:wqa		:confirm wqa<CR>
  amenu 10.620 &File.E&xit<Tab>:qa		:confirm qa<CR>
  
! " Tricky stuff to make pasting work as expected.
! nnoremap <SID>Paste "=@+.'xy'<CR>gPFx"_2x:echo<CR>
  
  " Edit menu
  amenu 20.310 &Edit.&Undo<Tab>u			u
--- 112,131 ----
  amenu 10.610 &File.Sa&ve-Exit<Tab>:wqa		:confirm wqa<CR>
  amenu 10.620 &File.E&xit<Tab>:qa		:confirm qa<CR>
  
! " Pasting blockwise and linewise selections is not possible in Insert and
! " Visual mode without the +virtualedit feature.  They are pasted as if they
! " were characterwise instead.
! if has("virtualedit")
!   nnoremap <silent> <SID>Paste :call <SID>Paste()<CR>
!   func! <SID>Paste()
!     let ove = &ve
!     set ve=all
!     normal `^"+gPi
!     let &ve = ove
!   endfunc
! else
!   nnoremap <silent> <SID>Paste "=@+.'xy'<CR>gPFx"_2x
! endif
  
  " Edit menu
  amenu 20.310 &Edit.&Undo<Tab>u			u
***************
*** 123,132 ****
  vmenu 20.340 &Edit.Cu&t<Tab>"+x			"+x
  vmenu 20.350 &Edit.&Copy<Tab>"+y		"+y
  cmenu 20.350 &Edit.&Copy<Tab>"+y		<C-Y>
! nmenu 20.360 &Edit.&Paste<Tab>"+P		<SID>Paste
! vmenu	     &Edit.&Paste<Tab>"+P		"-cx<Esc><SID>Paste"_x
! imenu	     &Edit.&Paste<Tab>"+P		x<Esc><SID>Paste"_s
  cmenu	     &Edit.&Paste<Tab>"+P		<C-R>+
  nmenu 20.370 &Edit.Put\ &Before<Tab>[p		[p
  imenu	     &Edit.Put\ &Before<Tab>[p		<C-O>[p
  nmenu 20.380 &Edit.Put\ &After<Tab>]p		]p
--- 135,149 ----
  vmenu 20.340 &Edit.Cu&t<Tab>"+x			"+x
  vmenu 20.350 &Edit.&Copy<Tab>"+y		"+y
  cmenu 20.350 &Edit.&Copy<Tab>"+y		<C-Y>
! nmenu 20.360 &Edit.&Paste<Tab>"+P		"+gP
  cmenu	     &Edit.&Paste<Tab>"+P		<C-R>+
+ if has("virtualedit")
+   vmenu	     &Edit.&Paste<Tab>"+P		"-c<Esc><SID>Paste
+   imenu	     &Edit.&Paste<Tab>"+P		<Esc><SID>Pastegi
+ else
+   vmenu	     &Edit.&Paste<Tab>"+P		"-c<Esc>gix<Esc><SID>Paste"_x
+   imenu	     &Edit.&Paste<Tab>"+P		x<Esc><SID>Paste"_s
+ endif
  nmenu 20.370 &Edit.Put\ &Before<Tab>[p		[p
  imenu	     &Edit.Put\ &Before<Tab>[p		<C-O>[p
  nmenu 20.380 &Edit.Put\ &After<Tab>]p		]p
***************
*** 689,704 ****
  vmenu 1.20 PopUp.Cu&t			"+x
  vmenu 1.30 PopUp.&Copy			"+y
  cmenu 1.30 PopUp.&Copy			<C-Y>
! nmenu 1.40 PopUp.&Paste			<SID>Paste
! vmenu 1.40 PopUp.&Paste			"-cx<Esc><SID>Paste"_x
! imenu 1.40 PopUp.&Paste			x<Esc><SID>Paste"_s
  cmenu 1.40 PopUp.&Paste			<C-R>+
  vmenu 1.50 PopUp.&Delete		x
  amenu 1.55 PopUp.-SEP2-			:
! vnoremenu 1.60 PopUp.Select\ Blockwise	<C-Q>
  anoremenu 1.70 PopUp.Select\ &Word	vaw
  anoremenu 1.80 PopUp.Select\ &Line	V
! anoremenu 1.90 PopUp.Select\ &Block	<C-Q>
  anoremenu 1.100 PopUp.Select\ &All	ggVG
  
  " The GUI toolbar (for MS-Windows and GTK)
--- 706,726 ----
  vmenu 1.20 PopUp.Cu&t			"+x
  vmenu 1.30 PopUp.&Copy			"+y
  cmenu 1.30 PopUp.&Copy			<C-Y>
! nmenu 1.40 PopUp.&Paste			"+gP
  cmenu 1.40 PopUp.&Paste			<C-R>+
+ if has("virtualedit")
+   vmenu 1.40 PopUp.&Paste		"-c<Esc><SID>Paste
+   imenu 1.40 PopUp.&Paste		<Esc><SID>Pastegi
+ else
+   vmenu 1.40 PopUp.&Paste		"-c<Esc>gix<Esc><SID>Paste"_x
+   imenu 1.40 PopUp.&Paste		x<Esc><SID>Paste"_s
+ endif
  vmenu 1.50 PopUp.&Delete		x
  amenu 1.55 PopUp.-SEP2-			:
! vnoremenu 1.60 PopUp.Select\ Blockwise	<C-V>
  anoremenu 1.70 PopUp.Select\ &Word	vaw
  anoremenu 1.80 PopUp.Select\ &Line	V
! anoremenu 1.90 PopUp.Select\ &Block	<C-V>
  anoremenu 1.100 PopUp.Select\ &All	ggVG
  
  " The GUI toolbar (for MS-Windows and GTK)
***************
*** 725,734 ****
    vmenu 1.70 ToolBar.Cut	"+x
    vmenu 1.80 ToolBar.Copy	"+y
    cmenu 1.80 ToolBar.Copy	<C-Y>
!   nmenu 1.90 ToolBar.Paste	<SID>Paste
!   vmenu      ToolBar.Paste	"-cx<Esc><SID>Paste"_x
!   imenu      ToolBar.Paste	x<Esc><SID>Paste"_s
    cmenu      ToolBar.Paste	<C-R>+
  
    if !has("gui_athena")
      amenu 1.95 ToolBar.-sep3-		<nul>
--- 747,761 ----
    vmenu 1.70 ToolBar.Cut	"+x
    vmenu 1.80 ToolBar.Copy	"+y
    cmenu 1.80 ToolBar.Copy	<C-Y>
!   nmenu 1.90 ToolBar.Paste	"+gP
    cmenu      ToolBar.Paste	<C-R>+
+   if has("virtualedit")
+     vmenu      ToolBar.Paste	"-c<Esc><SID>Paste
+     imenu      ToolBar.Paste	<Esc><SID>Pastegi
+   else
+     vmenu      ToolBar.Paste	"-c<Esc>gix<Esc><SID>Paste"_x
+     imenu      ToolBar.Paste	x<Esc><SID>Paste"_s
+   endif
  
    if !has("gui_athena")
      amenu 1.95 ToolBar.-sep3-		<nul>
*** ../vim60.53/runtime/mswin.vim	Thu Aug 23 13:50:05 2001
--- runtime/mswin.vim	Tue Oct 30 14:41:41 2001
***************
*** 1,7 ****
  " Set options and add mapping such that Vim behaves a lot like MS-Windows
  "
  " Maintainer:	Bram Moolenaar <Bram@vim.org>
! " Last change:	2001 Aug 23
  
  " set the 'cpoptions' to its Vim default
  if 1	" only do this when compiled with expression evaluation
--- 1,7 ----
  " Set options and add mapping such that Vim behaves a lot like MS-Windows
  "
  " Maintainer:	Bram Moolenaar <Bram@vim.org>
! " Last change:	2001 Oct 30
  
  " set the 'cpoptions' to its Vim default
  if 1	" only do this when compiled with expression evaluation
***************
*** 27,44 ****
  vnoremap <C-Insert> "+y
  
  " CTRL-V and SHIFT-Insert are Paste
! nnoremap <silent> <SID>Paste "=@+.'xy'<CR>gPFx"_2x
! map <C-V>		<SID>Paste
! map <S-Insert>		<SID>Paste
! 
! imap <C-V>		x<Esc><SID>Paste"_s
! imap <S-Insert>		x<Esc><SID>Paste"_s
  
  cmap <C-V>		<C-R>+
  cmap <S-Insert>		<C-R>+
  
! vmap <C-V>		"-cx<Esc><SID>Paste"_x
! vmap <S-Insert>		"-cx<Esc><SID>Paste"_x
  
  " Use CTRL-Q to do what CTRL-V used to do
  noremap <C-Q>		<C-V>
--- 27,58 ----
  vnoremap <C-Insert> "+y
  
  " CTRL-V and SHIFT-Insert are Paste
! map <C-V>		"+gP
! map <S-Insert>		"+gP
  
  cmap <C-V>		<C-R>+
  cmap <S-Insert>		<C-R>+
  
! " Pasting blockwise and linewise selections is not possible in Insert and
! " Visual mode without the +virtualedit feature.  They are pasted as if they
! " were characterwise instead.
! if has("virtualedit")
!   nnoremap <silent> <SID>Paste :call <SID>Paste()<CR>
!   func! <SID>Paste()
!     let ove = &ve
!     set ve=all
!     normal `^"+gPi
!     let &ve = ove
!   endfunc
!   imap <C-V>		<Esc><SID>Pastegi
!   vmap <C-V>		"-c<Esc><SID>Paste
! else
!   nnoremap <silent> <SID>Paste "=@+.'xy'<CR>gPFx"_2x
!   imap <C-V>		x<Esc><SID>Paste"_s
!   vmap <C-V>		"-c<Esc>gix<Esc><SID>Paste"_x
! endif
! imap <S-Insert>      	<C-V>
! vmap <S-Insert>      	<C-V>
  
  " Use CTRL-Q to do what CTRL-V used to do
  noremap <C-Q>		<C-V>
*** ../vim60.53/src/version.c	Thu Nov  1 12:22:41 2001
--- src/version.c	Thu Nov  1 14:29:48 2001
***************
*** 608,609 ****
--- 608,611 ----
  {   /* Add new patch number below this line */
+ /**/
+     54,
  /**/

-- 
SUPERIMPOSE "England AD 787".  After a few more seconds we hear hoofbeats in
the distance.  They come slowly closer.  Then out of the mist comes KING
ARTHUR followed by a SERVANT who is banging two half coconuts together.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 ///  Bram Moolenaar -- Bram@moolenaar.net -- http://www.moolenaar.net  \\\
(((   Creator of Vim -- http://vim.sf.net -- ftp://ftp.vim.org/pub/vim   )))
 \\\  Help me helping AIDS orphans in Uganda - http://iccf-holland.org  ///