0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

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>
This commit is contained in:
Doug Kearns
2024-01-04 22:37:44 +01:00
committed by Christian Brabandt
parent f93b1c881a
commit 81642d9d6f
9 changed files with 41 additions and 2 deletions

View File

@@ -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}]) *getcompletion()*
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

View File

@@ -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

View File

@@ -50,6 +50,7 @@ cmdline_fuzzy_completion_supported(expand_T *xp)
&& 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);

View File

@@ -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.

View File

@@ -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')

View File

@@ -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

View File

@@ -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

View File

@@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
10,
/**/
9,
/**/

View File

@@ -841,6 +841,7 @@ extern int (*dyn_libintl_wputenv)(const wchar_t *envstring);
#define EXPAND_SETTING_SUBTRACT 55
#define EXPAND_ARGOPT 56
#define EXPAND_TERMINALOPT 57
#define EXPAND_KEYMAP 58
// Values for exmode_active (0 is no exmode)
#define EXMODE_NORMAL 1