summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-08-23 21:19:01 +0200
committerBram Moolenaar <Bram@vim.org>2021-08-23 21:19:01 +0200
commit6b36d2a16d7931bac82ef8b5654c68ac456b24bf (patch)
treea1a9f7e2d0a1f1a16955e701307c97e08cadbd57
parent9cd91a1e8816d727fbdbf0b3062288e15abc5f4d (diff)
patch 8.2.3369: auto formatting after "cw" leaves cursor in wrong spotv8.2.3369
Problem: Auto formatting after "cw" leaves cursor in wrong spot. Solution: Do not auto-format after the delete. (closes #8789)
-rw-r--r--src/ops.c4
-rw-r--r--src/testdir/test_textformat.vim7
-rw-r--r--src/version.c2
3 files changed, 12 insertions, 1 deletions
diff --git a/src/ops.c b/src/ops.c
index 614ada5dff..fa6a4c4d1f 100644
--- 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;
}
diff --git a/src/testdir/test_textformat.vim b/src/testdir/test_textformat.vim
index 0dc28c7307..2b76292777 100644
--- 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!
diff --git a/src/version.c b/src/version.c
index a439d99d43..aa5d02a6fa 100644
--- 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,