Hi Bram and list,

How to reproduce:
- Prepare the following vim script file.
  $ cat sample1.vim
function! Sample()
    return 'autocmd '
endfunction
call feedkeys("i\<c-r>=Sample()\<CR>\<C-x>\<C-v>")

- Run vanilla vim with execute above file.
  $ vim -Nu NONE -S sample1.vim


Expected behavior (I think):
Current line displayed `autocomd BufAdd` and popup menu is appeared.


Actual behavior:
completion is not performed.
Below message diplayed in last line.
"-- Command-line completion (^V^N^P) Pattern not found"


Is this bug?
I don't know. But I wrote a patch with a test.
Please check an attached patch.
--
Best regards,
Hirohito Higashi (a.k.a. h_east)

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 110a95a..7d58ed1 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4512,6 +4512,8 @@ set_cmd_context(
 	/* pass CMD_SIZE because there is no real command */
 	set_context_for_expression(xp, str, CMD_SIZE);
 # endif
+	while (nextcomm != NULL)
+	    nextcomm = set_one_cmd_context(xp, nextcomm);
     }
     else if (ccline.input_fn)
     {
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index 6db3bf7..767753f 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -172,6 +172,7 @@ func Test_augroup_warning()
   augroup Another
   augroup END
   call assert_true(match(execute('au VimEnter'), "-Deleted-.*VimEnter") >= 0)
+  augroup! Another
 
   " no warning for postpone aucmd delete
   augroup StartOK
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index 34a2251..cd87e00 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -236,22 +236,27 @@ func! Test_popup_completion_insertmode()
   iunmap <F5>
 endfunc
 
-function! ComplTest() abort
-  call complete(1, ['source', 'soundfold'])
-  return ''
-endfunction
-
 func Test_noinsert_complete()
+  function! s:complTest1() abort
+    call complete(1, ['source', 'soundfold'])
+    return ''
+  endfunction
+
+  function! s:complTest2() abort
+    call complete(1, ['source', 'soundfold'])
+    return ''
+  endfunction
+
   new
   set completeopt+=noinsert
-  inoremap <F5>  <C-R>=ComplTest()<CR>
+  inoremap <F5>  <C-R>=s:complTest1()<CR>
   call feedkeys("i\<F5>soun\<CR>\<CR>\<ESC>.", 'tx')
   call assert_equal('soundfold', getline(1))
   call assert_equal('soundfold', getline(2))
   bwipe!
 
   new
-  inoremap <F5>  <C-R>=Test()<CR>
+  inoremap <F5>  <C-R>=s:complTest2()<CR>
   call feedkeys("i\<F5>\<CR>\<ESC>", 'tx')
   call assert_equal('source', getline(1))
   bwipe!
@@ -260,10 +265,17 @@ func Test_noinsert_complete()
   iunmap <F5>
 endfunc
 
+func Test_compl_vim_cmds_after_register_expr()
+  function! s:test_func()
+    return 'autocmd '
+  endfunction
 
-function! Test() abort
-  call complete(1, ['source', 'soundfold'])
-  return ''
-endfunction
+  new
+  call feedkeys("i\<c-r>=s:test_func()\<CR>\<C-x>\<C-v>\<Esc>", 'tx')
+  " When a new autocmd event is added before the 'BufAdd' in ascending order,
+  " we will be a need to change here.
+  call assert_equal('autocmd BufAdd', getline(1))
+  bwipe!
+endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab

Raspunde prin e-mail lui