]> granicus.if.org Git - vim/commitdiff
patch 8.2.3369: auto formatting after "cw" leaves cursor in wrong spot v8.2.3369
authorBram Moolenaar <Bram@vim.org>
Mon, 23 Aug 2021 19:19:01 +0000 (21:19 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 23 Aug 2021 19:19:01 +0000 (21:19 +0200)
Problem:    Auto formatting after "cw" leaves cursor in wrong spot.
Solution:   Do not auto-format after the delete. (closes #8789)

src/ops.c
src/testdir/test_textformat.vim
src/version.c

index 614ada5dff9bc4cb917f78dfdcb2ba5d8bd4c059..fa6a4c4d1f8c53874afacea3b38a7dee69788165 100644 (file)
--- 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;
 }
index 0dc28c7307fa2690f424a3e1c2a4f88d951f1afd..2b7629277716fc5bfa6dd7c0930d488a40ef7555 100644 (file)
@@ -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!
index a439d99d43ba538a21bed2de1963f11c4549e295..aa5d02a6fa7d2253dc7216e56c414dec762cef37 100644 (file)
@@ -755,6 +755,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3369,
 /**/
     3368,
 /**/