Mercurial > vim
changeset 34082:a197265a2e07 v9.1.0010
patch 9.1.0010: Keymap completion is not available
Commit: https://github.com/vim/vim/commit/81642d9d6ff5cd6a90a012b1b98632ce51eeb1a8
Author: Doug Kearns <dougkearns@gmail.com>
Date: Thu Jan 4 22:37:44 2024 +0100
patch 9.1.0010: Keymap completion is not available
Problem: Keymap completion is not available
Solution: Add keymap completion (Doug Kearns)
Add keymap completion to the 'keymap' option, user commands and builtin
completion functions.
closes: #13692
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 04 Jan 2024 22:45:04 +0100 |
parents | ffbe5109233f |
children | 2ff0721f8cc2 |
files | runtime/doc/builtin.txt runtime/doc/map.txt src/cmdexpand.c src/option.c src/testdir/test_cmdline.vim src/testdir/test_options.vim src/usercmd.c src/version.c src/vim.h |
diffstat | 9 files changed, 41 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,4 +1,4 @@ -*builtin.txt* For Vim version 9.1. Last change: 2023 Dec 24 +*builtin.txt* For Vim version 9.1. Last change: 2024 Jan 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -3570,6 +3570,7 @@ getcompletion({pat}, {type} [, {filtered help help subjects highlight highlight groups history |:history| suboptions + keymap keyboard mappings locale locale names (as output of locale -a) mapclear buffer argument mapping mapping name
--- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 9.1. Last change: 2023 December 31 +*map.txt* For Vim version 9.1. Last change: 2024 Jan 04 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1631,6 +1631,7 @@ completion can be enabled: -complete=help help subjects -complete=highlight highlight groups -complete=history :history suboptions + -complete=keymap keyboard mappings -complete=locale locale names (as output of locale -a) -complete=mapclear buffer argument -complete=mapping mapping name
--- a/src/cmdexpand.c +++ b/src/cmdexpand.c @@ -50,6 +50,7 @@ cmdline_fuzzy_completion_supported(expan && xp->xp_context != EXPAND_FILES_IN_PATH && xp->xp_context != EXPAND_FILETYPE && xp->xp_context != EXPAND_HELP + && xp->xp_context != EXPAND_KEYMAP && xp->xp_context != EXPAND_OLD_SETTING && xp->xp_context != EXPAND_STRING_SETTING && xp->xp_context != EXPAND_SETTING_SUBTRACT @@ -1394,6 +1395,7 @@ addstar( || context == EXPAND_COMPILER || context == EXPAND_OWNSYNTAX || context == EXPAND_FILETYPE + || context == EXPAND_KEYMAP || context == EXPAND_PACKADD || context == EXPAND_RUNTIME || ((context == EXPAND_TAGS_LISTFILES @@ -3131,6 +3133,13 @@ ExpandFromContext( char *directories[] = {"syntax", "indent", "ftplugin", NULL}; return ExpandRTDir(pat, 0, numMatches, matches, directories); } +#ifdef FEAT_KEYMAP + if (xp->xp_context == EXPAND_KEYMAP) + { + char *directories[] = {"keymap", NULL}; + return ExpandRTDir(pat, 0, numMatches, matches, directories); + } +#endif #if defined(FEAT_EVAL) if (xp->xp_context == EXPAND_USER_LIST) return ExpandUserList(xp, matches, numMatches);
--- a/src/option.c +++ b/src/option.c @@ -7412,6 +7412,13 @@ set_context_in_set_cmd( xp->xp_context = EXPAND_FILETYPE; return; } +#ifdef FEAT_KEYMAP + if (options[opt_idx].var == (char_u *)&p_keymap) + { + xp->xp_context = EXPAND_KEYMAP; + return; + } +#endif // Now pick. If the option has a custom expander, use that. Otherwise, just // fill with the existing option value.
--- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -545,6 +545,13 @@ func Test_getcompletion() let l = getcompletion('horse', 'filetype') call assert_equal([], l) + if has('keymap') + let l = getcompletion('acc', 'keymap') + call assert_true(index(l, 'accents') >= 0) + let l = getcompletion('nullkeymap', 'keymap') + call assert_equal([], l) + endif + let l = getcompletion('z', 'syntax') call assert_true(index(l, 'zimbu') >= 0) let l = getcompletion('emacs', 'syntax')
--- a/src/testdir/test_options.vim +++ b/src/testdir/test_options.vim @@ -435,6 +435,14 @@ func Test_set_completion() call assert_equal('"set syntax=sshdconfig', @:) call feedkeys(":set syntax=a\<C-A>\<C-B>\"\<CR>", 'xt') call assert_equal('"set syntax=' .. getcompletion('a*', 'syntax')->join(), @:) + + if has('keymap') + " Expand values for 'keymap' + call feedkeys(":set keymap=acc\<Tab>\<C-B>\"\<CR>", 'xt') + call assert_equal('"set keymap=accents', @:) + call feedkeys(":set keymap=a\<C-A>\<C-B>\"\<CR>", 'xt') + call assert_equal('"set keymap=' .. getcompletion('a*', 'keymap')->join(), @:) + endif endfunc " Test handling of expanding individual string option values
--- a/src/usercmd.c +++ b/src/usercmd.c @@ -73,6 +73,9 @@ static struct {EXPAND_HELP, "help"}, {EXPAND_HIGHLIGHT, "highlight"}, {EXPAND_HISTORY, "history"}, +#if defined(FEAT_KEYMAP) + {EXPAND_KEYMAP, "keymap"}, +#endif #if defined(HAVE_LOCALE_H) || defined(X_LOCALE) {EXPAND_LOCALES, "locale"}, #endif