0
0
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:
Bram Moolenaar
2017-01-25 21:36:17 +01:00
parent ba47b51ff8
commit 9e817c8a31
3 changed files with 20 additions and 0 deletions

View File

@@ -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;
} }

View File

@@ -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

View File

@@ -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,
/**/ /**/