changeset 25666:649d3e9c5914 v8.2.3369

patch 8.2.3369: auto formatting after "cw" leaves cursor in wrong spot Commit: https://github.com/vim/vim/commit/6b36d2a16d7931bac82ef8b5654c68ac456b24bf Author: Bram Moolenaar <Bram@vim.org> Date: Mon Aug 23 21:19:01 2021 +0200 patch 8.2.3369: auto formatting after "cw" leaves cursor in wrong spot Problem: Auto formatting after "cw" leaves cursor in wrong spot. Solution: Do not auto-format after the delete. (closes https://github.com/vim/vim/issues/8789)
author Bram Moolenaar <Bram@vim.org>
date Mon, 23 Aug 2021 21:30:04 +0200
parents 24738d70517a
children ea4ce099b11d
files src/ops.c src/testdir/test_textformat.vim src/version.c
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ops.c
+++ b/src/ops.c
@@ -942,7 +942,8 @@ op_delete(oparg_T *oap)
 	    curwin->w_cursor = curpos;	// restore curwin->w_cursor
 	    (void)do_join(2, FALSE, FALSE, FALSE, FALSE);
 	}
-	auto_format(FALSE, TRUE);
+	if (oap->op_type == OP_DELETE)
+	    auto_format(FALSE, TRUE);
     }
 
     msgmore(curbuf->b_ml.ml_line_count - old_lcount);
@@ -1809,6 +1810,7 @@ op_change(oparg_T *oap)
 	    vim_free(ins_text);
 	}
     }
+    auto_format(FALSE, TRUE);
 
     return retval;
 }
--- a/src/testdir/test_textformat.vim
+++ b/src/testdir/test_textformat.vim
@@ -967,6 +967,13 @@ func Test_fo_a_w()
   exe "normal f4xx"
   call assert_equal(['1 2 5 6 7 ', '8 9'], getline(1, 2))
 
+  " using "cw" leaves cursor in right spot
+  call setline(1, ['Now we g whether that nation, or',
+      \ 'any nation so conceived and,'])
+  set fo=tcqa tw=35
+  exe "normal 2G0cwx\<Esc>"
+  call assert_equal(['Now we g whether that nation, or x', 'nation so conceived and,'], getline(1, 2))
+
   set tw=0
   set fo&
   %bw!
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3369,
+/**/
     3368,
 /**/
     3367,