changeset 10916:503b28f0a974 v8.0.0347

patch 8.0.0347: when using completion comment leader wont work commit https://github.com/vim/vim/commit/d099e033703ce0772f152b8df8a763f0b65303ee Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 21 23:00:36 2017 +0100 patch 8.0.0347: when using completion comment leader wont work Problem: When using CTRL-X CTRL-U inside a comment, the use of the comment leader may not work. (Klement) Solution: Save and restore did_ai. (Christian Brabandt, closes #1494)
author Christian Brabandt <cb@256bit.org>
date Tue, 21 Feb 2017 23:15:04 +0100
parents b8a3d6f54e15
children d8510de453e0
files src/edit.c src/testdir/test_popup.vim src/version.c
diffstat 3 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/edit.c
+++ b/src/edit.c
@@ -5095,6 +5095,7 @@ ins_complete(int c, int enable_pum)
     int		n;
     int		save_w_wrow;
     int		insert_match;
+    int		save_did_ai = did_ai;
 
     compl_direction = ins_compl_key2dir(c);
     insert_match = ins_compl_use_match(c);
@@ -5378,6 +5379,8 @@ ins_complete(int c, int enable_pum)
 	    {
 		EMSG2(_(e_notset), ctrl_x_mode == CTRL_X_FUNCTION
 					     ? "completefunc" : "omnifunc");
+		/* restore did_ai, so that adding comment leader works */
+		did_ai = save_did_ai;
 		return FAIL;
 	    }
 
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -551,4 +551,23 @@ func Test_completion_can_undo()
   iunmap <Right>
 endfunc
 
+func Test_completion_comment_formatting()
+  new
+  setl formatoptions=tcqro
+  call feedkeys("o/*\<cr>\<cr>/\<esc>", 'tx')
+  call assert_equal(['', '/*', ' *', ' */'], getline(1,4))
+  %d
+  call feedkeys("o/*\<cr>foobar\<cr>/\<esc>", 'tx')
+  call assert_equal(['', '/*', ' * foobar', ' */'], getline(1,4))
+  %d
+  try
+    call feedkeys("o/*\<cr>\<cr>\<c-x>\<c-u>/\<esc>", 'tx')
+    call assert_false(1, 'completefunc not set, should have failed')
+  catch
+    call assert_exception('E764:')
+  endtry
+  call assert_equal(['', '/*', ' *', ' */'], getline(1,4))
+  bwipe!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    347,
+/**/
     346,
 /**/
     345,