mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.0.0238: bracketed paste does not disable autoindent
Problem: When using bracketed paste autoindent causes indent to be increased. Solution: Disable 'ai' and set 'paste' temporarily. (Ken Takata)
This commit is contained in:
@@ -9463,12 +9463,17 @@ bracketed_paste(paste_mode_T mode, int drop, garray_T *gap)
|
|||||||
char_u *end = find_termcode((char_u *)"PE");
|
char_u *end = find_termcode((char_u *)"PE");
|
||||||
int ret_char = -1;
|
int ret_char = -1;
|
||||||
int save_allow_keys = allow_keys;
|
int save_allow_keys = allow_keys;
|
||||||
|
int save_paste = p_paste;
|
||||||
|
int save_ai = curbuf->b_p_ai;
|
||||||
|
|
||||||
/* If the end code is too long we can't detect it, read everything. */
|
/* If the end code is too long we can't detect it, read everything. */
|
||||||
if (STRLEN(end) >= NUMBUFLEN)
|
if (STRLEN(end) >= NUMBUFLEN)
|
||||||
end = NULL;
|
end = NULL;
|
||||||
++no_mapping;
|
++no_mapping;
|
||||||
allow_keys = 0;
|
allow_keys = 0;
|
||||||
|
p_paste = TRUE;
|
||||||
|
curbuf->b_p_ai = FALSE;
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
/* When the end is not defined read everything. */
|
/* When the end is not defined read everything. */
|
||||||
@@ -9534,8 +9539,11 @@ bracketed_paste(paste_mode_T mode, int drop, garray_T *gap)
|
|||||||
}
|
}
|
||||||
idx = 0;
|
idx = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
--no_mapping;
|
--no_mapping;
|
||||||
allow_keys = save_allow_keys;
|
allow_keys = save_allow_keys;
|
||||||
|
p_paste = save_paste;
|
||||||
|
curbuf->b_p_ai = save_ai;
|
||||||
|
|
||||||
return ret_char;
|
return ret_char;
|
||||||
}
|
}
|
||||||
|
@@ -35,6 +35,16 @@ func Test_paste_insert_mode()
|
|||||||
call assert_equal('bar donfoo', getline(3))
|
call assert_equal('bar donfoo', getline(3))
|
||||||
call assert_equal('bar doneeb', getline(4))
|
call assert_equal('bar doneeb', getline(4))
|
||||||
call assert_equal('c', getline(5))
|
call assert_equal('c', getline(5))
|
||||||
|
|
||||||
|
set ai et tw=10
|
||||||
|
call setline(1, ['a', ' b', 'c'])
|
||||||
|
2
|
||||||
|
call feedkeys("A\<Esc>[200~foo\<CR> bar bar bar\<Esc>[201~\<Esc>", 'xt')
|
||||||
|
call assert_equal(' bfoo', getline(2))
|
||||||
|
call assert_equal(' bar bar bar', getline(3))
|
||||||
|
call assert_equal('c', getline(4))
|
||||||
|
|
||||||
|
set ai& et& tw=0
|
||||||
bwipe!
|
bwipe!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
@@ -764,6 +764,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
238,
|
||||||
/**/
|
/**/
|
||||||
237,
|
237,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user