summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-02-21 23:00:36 +0100
committerBram Moolenaar <Bram@vim.org>2017-02-21 23:00:36 +0100
commitd099e033703ce0772f152b8df8a763f0b65303ee (patch)
tree5ec8e995490879b5d202a4f769a0b8d9a14f4a25
parentbfd30590f6e3475033099d0fb20d9444fa10af6b (diff)
downloadvim-git-d099e033703ce0772f152b8df8a763f0b65303ee.tar.gz
patch 8.0.0347: when using completion comment leader wont workv8.0.0347
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)
-rw-r--r--src/edit.c3
-rw-r--r--src/testdir/test_popup.vim19
-rw-r--r--src/version.c2
3 files changed, 24 insertions, 0 deletions
diff --git a/src/edit.c b/src/edit.c
index d7f89bcbe..25a123e88 100644
--- 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;
}
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 2c6afa06c..2823ed696 100644
--- 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
diff --git a/src/version.c b/src/version.c
index 1d23935fd..2a54dc9cf 100644
--- 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,