vim-patch:8.2.2166: auto format doesn't work when deleting text

Problem:    Auto format doesn't work when deleting text.
Solution:   Make "x" trigger auto format. (closes vim/vim#7504)
d0a1dee3f1
This commit is contained in:
Jan Edmund Lazo
2020-12-20 17:01:31 -05:00
parent 0476f049f4
commit 06869a6940
3 changed files with 15 additions and 2 deletions

View File

@@ -3716,7 +3716,7 @@ static bool ins_compl_prep(int c)
retval = true; retval = true;
} }
auto_format(FALSE, TRUE); auto_format(false, true);
// Trigger the CompleteDonePre event to give scripts a chance to // Trigger the CompleteDonePre event to give scripts a chance to
// act upon the completion before clearing the info, and restore // act upon the completion before clearing the info, and restore
@@ -6503,7 +6503,7 @@ stop_insert (
curwin->w_cursor = tpos; curwin->w_cursor = tpos;
} }
auto_format(TRUE, FALSE); auto_format(true, false);
if (ascii_iswhite(cc)) { if (ascii_iswhite(cc)) {
if (gchar_cursor() != NUL) if (gchar_cursor() != NUL)

View File

@@ -1683,6 +1683,7 @@ int op_delete(oparg_T *oap)
(int)oap->line_count-1, n, deleted_bytes, (int)oap->line_count-1, n, deleted_bytes,
0, 0, 0, kExtmarkUndo); 0, 0, 0, kExtmarkUndo);
} }
auto_format(false, true);
} }
msgmore(curbuf->b_ml.ml_line_count - old_lcount); msgmore(curbuf->b_ml.ml_line_count - old_lcount);

View File

@@ -957,6 +957,18 @@ func Test_fo_a_w()
call assert_equal('g uu uu ', getline(1)[-8:]) call assert_equal('g uu uu ', getline(1)[-8:])
call assert_equal(['uu. foo'], getline(2, '$')) call assert_equal(['uu. foo'], getline(2, '$'))
" using backspace or "x" triggers reformat
call setline(1, ['1 2 3 4 5 ', '6 7 8 9'])
set tw=10
set fo=taw
set bs=indent,eol,start
exe "normal 1G4la\<BS>\<BS>\<Esc>"
call assert_equal(['1 2 4 5 6 ', '7 8 9'], getline(1, 2))
exe "normal f4xx"
call assert_equal(['1 2 5 6 7 ', '8 9'], getline(1, 2))
set tw=0
set fo&
%bw! %bw!
endfunc endfunc