patch 9.1.0754: fixed order of items in insert-mode completion menu
Problem: fixed order of items in insert-mode completion menu
Solution: Introduce the 'completeitemalign' option with default
value "abbr,kind,menu" (glepnir).
Adding an new option `completeitemalign` abbr is `cia` to custom
the complete-item order in popupmenu.
closes: #14006
closes: #15760
Signed-off-by: glepnir <glephunter@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim
index caec8ff..1758f74 100644
--- a/src/testdir/test_popup.vim
+++ b/src/testdir/test_popup.vim
@@ -1581,4 +1581,64 @@
call StopVimInTerminal(buf)
endfunc
+func Test_pum_completeitemalign()
+ CheckScreendump
+ let lines =<< trim END
+ func Omni_test(findstart, base)
+ if a:findstart
+ return col(".")
+ endif
+ return {
+ \ 'words': [
+ \ { 'word': 'foo', 'kind': 'S', 'menu': 'menu' },
+ \ { 'word': 'bar', 'kind': 'T', 'menu': 'menu' },
+ \ { 'word': '你好', 'kind': 'C', 'menu': '中文' },
+ \]}
+ endfunc
+ set omnifunc=Omni_test
+ command! -nargs=0 T1 set cia=abbr,kind,menu
+ command! -nargs=0 T2 set cia=abbr,menu,kind
+ command! -nargs=0 T3 set cia=kind,abbr,menu
+ command! -nargs=0 T4 set cia=kind,menu,abbr
+ command! -nargs=0 T5 set cia=menu,abbr,kind
+ command! -nargs=0 T6 set cia=menu,kind,abbr
+ command! -nargs=0 T7 set cia&
+ END
+ call writefile(lines, 'Xscript', 'D')
+ let buf = RunVimInTerminal('-S Xscript', {})
+ call TermWait(buf)
+
+ " T1 is default
+ call term_sendkeys(buf, ":T1\<CR>S\<C-X>\<C-O>")
+ call VerifyScreenDump(buf, 'Test_pum_completeitemalign_01', {})
+ call term_sendkeys(buf, "\<C-E>\<Esc>")
+
+ " T2
+ call term_sendkeys(buf, ":T2\<CR>S\<C-X>\<C-O>")
+ call VerifyScreenDump(buf, 'Test_pum_completeitemalign_02', {})
+ call term_sendkeys(buf, "\<C-E>\<Esc>")
+
+ " T3
+ call term_sendkeys(buf, ":T3\<CR>S\<C-X>\<C-O>")
+ call VerifyScreenDump(buf, 'Test_pum_completeitemalign_03', {})
+ call term_sendkeys(buf, "\<C-E>\<Esc>")
+
+ " T4
+ call term_sendkeys(buf, ":T4\<CR>S\<C-X>\<C-O>")
+ call VerifyScreenDump(buf, 'Test_pum_completeitemalign_04', {})
+ call term_sendkeys(buf, "\<C-E>\<Esc>")
+
+ " T5
+ call term_sendkeys(buf, ":T5\<CR>S\<C-X>\<C-O>")
+ call VerifyScreenDump(buf, 'Test_pum_completeitemalign_05', {})
+ call term_sendkeys(buf, "\<C-E>\<Esc>")
+
+ " T6
+ call term_sendkeys(buf, ":T6\<CR>S\<C-X>\<C-O>")
+ call VerifyScreenDump(buf, 'Test_pum_completeitemalign_06', {})
+ call term_sendkeys(buf, "\<C-E>\<Esc>:T7\<CR>")
+
+ call StopVimInTerminal(buf)
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab