forked from aniani/vim
patch 8.0.0296: bracketed paste can only append, not insert
Problem: Bracketed paste can only append, not insert. Solution: When the cursor is in the first column insert the text.
This commit is contained in:
parent
7a073549a3
commit
fd8983b09c
@ -1,4 +1,4 @@
|
||||
*term.txt* For Vim version 8.0. Last change: 2017 Jan 27
|
||||
*term.txt* For Vim version 8.0. Last change: 2017 Feb 02
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@ -95,7 +95,12 @@ terminal when entering "raw" mode and 't_BD' when leaving "raw" mode. The
|
||||
terminal is then expected to put 't_PS' before pasted text and 't_PE' after
|
||||
pasted text. This way Vim can separate text that is pasted from characters
|
||||
that are typed. The pasted text is handled like when the middle mouse button
|
||||
is used.
|
||||
is used, it is inserted literally and not interpreted as commands.
|
||||
|
||||
When the cursor is in the first column, the pasted text will be inserted
|
||||
before it. Otherwise the pasted text is appended after the cursor position.
|
||||
This means one cannot paste after the first column. Unfortunately Vim does
|
||||
not have a way to tell where the mouse pointer was.
|
||||
|
||||
Note that in some situations Vim will not recognize the bracketed paste and
|
||||
you will get the raw text. In other situations Vim will only get the first
|
||||
|
@ -9079,8 +9079,13 @@ nv_edit(cmdarg_T *cap)
|
||||
beginline(BL_WHITE|BL_FIX);
|
||||
break;
|
||||
|
||||
case K_PS: /* Bracketed paste works like "a"ppend, unless the
|
||||
cursor is in the first column, then it inserts. */
|
||||
if (curwin->w_cursor.col == 0)
|
||||
break;
|
||||
/*FALLTHROUGH*/
|
||||
|
||||
case 'a': /* "a"ppend is like "i"nsert on the next character. */
|
||||
case K_PS: /* bracketed paste works like "a"ppend */
|
||||
#ifdef FEAT_VIRTUALEDIT
|
||||
/* increment coladd when in virtual space, increment the
|
||||
* column otherwise, also to append after an unprintable char */
|
||||
|
@ -8,18 +8,36 @@ set term=xterm
|
||||
|
||||
func Test_paste_normal_mode()
|
||||
new
|
||||
" In first column text is inserted
|
||||
call setline(1, ['a', 'b', 'c'])
|
||||
2
|
||||
call cursor(2, 1)
|
||||
call feedkeys("\<Esc>[200~foo\<CR>bar\<Esc>[201~", 'xt')
|
||||
call assert_equal('bfoo', getline(2))
|
||||
call assert_equal('bar', getline(3))
|
||||
call assert_equal('foo', getline(2))
|
||||
call assert_equal('barb', getline(3))
|
||||
call assert_equal('c', getline(4))
|
||||
|
||||
" When repeating text is appended
|
||||
normal .
|
||||
call assert_equal('barfoo', getline(3))
|
||||
call assert_equal('bar', getline(4))
|
||||
call assert_equal('barb', getline(4))
|
||||
call assert_equal('c', getline(5))
|
||||
bwipe!
|
||||
|
||||
" In second column text is appended
|
||||
call setline(1, ['a', 'bbb', 'c'])
|
||||
call cursor(2, 2)
|
||||
call feedkeys("\<Esc>[200~foo\<CR>bar\<Esc>[201~", 'xt')
|
||||
call assert_equal('bbfoo', getline(2))
|
||||
call assert_equal('barb', getline(3))
|
||||
call assert_equal('c', getline(4))
|
||||
|
||||
" In last column text is appended
|
||||
call setline(1, ['a', 'bbb', 'c'])
|
||||
call cursor(2, 3)
|
||||
call feedkeys("\<Esc>[200~foo\<CR>bar\<Esc>[201~", 'xt')
|
||||
call assert_equal('bbbfoo', getline(2))
|
||||
call assert_equal('bar', getline(3))
|
||||
call assert_equal('c', getline(4))
|
||||
endfunc
|
||||
|
||||
func Test_paste_insert_mode()
|
||||
|
@ -764,6 +764,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
296,
|
||||
/**/
|
||||
295,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user