mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -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:
committed by
Christian Brabandt
parent
f93b1c881a
commit
81642d9d6f
@@ -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
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@@ -3570,6 +3570,7 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
|
|||||||
help help subjects
|
help help subjects
|
||||||
highlight highlight groups
|
highlight highlight groups
|
||||||
history |:history| suboptions
|
history |:history| suboptions
|
||||||
|
keymap keyboard mappings
|
||||||
locale locale names (as output of locale -a)
|
locale locale names (as output of locale -a)
|
||||||
mapclear buffer argument
|
mapclear buffer argument
|
||||||
mapping mapping name
|
mapping mapping name
|
||||||
|
@@ -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
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@@ -1631,6 +1631,7 @@ completion can be enabled:
|
|||||||
-complete=help help subjects
|
-complete=help help subjects
|
||||||
-complete=highlight highlight groups
|
-complete=highlight highlight groups
|
||||||
-complete=history :history suboptions
|
-complete=history :history suboptions
|
||||||
|
-complete=keymap keyboard mappings
|
||||||
-complete=locale locale names (as output of locale -a)
|
-complete=locale locale names (as output of locale -a)
|
||||||
-complete=mapclear buffer argument
|
-complete=mapclear buffer argument
|
||||||
-complete=mapping mapping name
|
-complete=mapping mapping name
|
||||||
|
@@ -50,6 +50,7 @@ cmdline_fuzzy_completion_supported(expand_T *xp)
|
|||||||
&& xp->xp_context != EXPAND_FILES_IN_PATH
|
&& xp->xp_context != EXPAND_FILES_IN_PATH
|
||||||
&& xp->xp_context != EXPAND_FILETYPE
|
&& xp->xp_context != EXPAND_FILETYPE
|
||||||
&& xp->xp_context != EXPAND_HELP
|
&& xp->xp_context != EXPAND_HELP
|
||||||
|
&& xp->xp_context != EXPAND_KEYMAP
|
||||||
&& xp->xp_context != EXPAND_OLD_SETTING
|
&& xp->xp_context != EXPAND_OLD_SETTING
|
||||||
&& xp->xp_context != EXPAND_STRING_SETTING
|
&& xp->xp_context != EXPAND_STRING_SETTING
|
||||||
&& xp->xp_context != EXPAND_SETTING_SUBTRACT
|
&& xp->xp_context != EXPAND_SETTING_SUBTRACT
|
||||||
@@ -1394,6 +1395,7 @@ addstar(
|
|||||||
|| context == EXPAND_COMPILER
|
|| context == EXPAND_COMPILER
|
||||||
|| context == EXPAND_OWNSYNTAX
|
|| context == EXPAND_OWNSYNTAX
|
||||||
|| context == EXPAND_FILETYPE
|
|| context == EXPAND_FILETYPE
|
||||||
|
|| context == EXPAND_KEYMAP
|
||||||
|| context == EXPAND_PACKADD
|
|| context == EXPAND_PACKADD
|
||||||
|| context == EXPAND_RUNTIME
|
|| context == EXPAND_RUNTIME
|
||||||
|| ((context == EXPAND_TAGS_LISTFILES
|
|| ((context == EXPAND_TAGS_LISTFILES
|
||||||
@@ -3131,6 +3133,13 @@ ExpandFromContext(
|
|||||||
char *directories[] = {"syntax", "indent", "ftplugin", NULL};
|
char *directories[] = {"syntax", "indent", "ftplugin", NULL};
|
||||||
return ExpandRTDir(pat, 0, numMatches, matches, directories);
|
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 defined(FEAT_EVAL)
|
||||||
if (xp->xp_context == EXPAND_USER_LIST)
|
if (xp->xp_context == EXPAND_USER_LIST)
|
||||||
return ExpandUserList(xp, matches, numMatches);
|
return ExpandUserList(xp, matches, numMatches);
|
||||||
|
@@ -7412,6 +7412,13 @@ set_context_in_set_cmd(
|
|||||||
xp->xp_context = EXPAND_FILETYPE;
|
xp->xp_context = EXPAND_FILETYPE;
|
||||||
return;
|
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
|
// Now pick. If the option has a custom expander, use that. Otherwise, just
|
||||||
// fill with the existing option value.
|
// fill with the existing option value.
|
||||||
|
@@ -545,6 +545,13 @@ func Test_getcompletion()
|
|||||||
let l = getcompletion('horse', 'filetype')
|
let l = getcompletion('horse', 'filetype')
|
||||||
call assert_equal([], l)
|
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')
|
let l = getcompletion('z', 'syntax')
|
||||||
call assert_true(index(l, 'zimbu') >= 0)
|
call assert_true(index(l, 'zimbu') >= 0)
|
||||||
let l = getcompletion('emacs', 'syntax')
|
let l = getcompletion('emacs', 'syntax')
|
||||||
|
@@ -435,6 +435,14 @@ func Test_set_completion()
|
|||||||
call assert_equal('"set syntax=sshdconfig', @:)
|
call assert_equal('"set syntax=sshdconfig', @:)
|
||||||
call feedkeys(":set syntax=a\<C-A>\<C-B>\"\<CR>", 'xt')
|
call feedkeys(":set syntax=a\<C-A>\<C-B>\"\<CR>", 'xt')
|
||||||
call assert_equal('"set syntax=' .. getcompletion('a*', 'syntax')->join(), @:)
|
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
|
endfunc
|
||||||
|
|
||||||
" Test handling of expanding individual string option values
|
" Test handling of expanding individual string option values
|
||||||
|
@@ -73,6 +73,9 @@ static struct
|
|||||||
{EXPAND_HELP, "help"},
|
{EXPAND_HELP, "help"},
|
||||||
{EXPAND_HIGHLIGHT, "highlight"},
|
{EXPAND_HIGHLIGHT, "highlight"},
|
||||||
{EXPAND_HISTORY, "history"},
|
{EXPAND_HISTORY, "history"},
|
||||||
|
#if defined(FEAT_KEYMAP)
|
||||||
|
{EXPAND_KEYMAP, "keymap"},
|
||||||
|
#endif
|
||||||
#if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
|
#if defined(HAVE_LOCALE_H) || defined(X_LOCALE)
|
||||||
{EXPAND_LOCALES, "locale"},
|
{EXPAND_LOCALES, "locale"},
|
||||||
#endif
|
#endif
|
||||||
|
@@ -704,6 +704,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
10,
|
||||||
/**/
|
/**/
|
||||||
9,
|
9,
|
||||||
/**/
|
/**/
|
||||||
|
@@ -841,6 +841,7 @@ extern int (*dyn_libintl_wputenv)(const wchar_t *envstring);
|
|||||||
#define EXPAND_SETTING_SUBTRACT 55
|
#define EXPAND_SETTING_SUBTRACT 55
|
||||||
#define EXPAND_ARGOPT 56
|
#define EXPAND_ARGOPT 56
|
||||||
#define EXPAND_TERMINALOPT 57
|
#define EXPAND_TERMINALOPT 57
|
||||||
|
#define EXPAND_KEYMAP 58
|
||||||
|
|
||||||
// Values for exmode_active (0 is no exmode)
|
// Values for exmode_active (0 is no exmode)
|
||||||
#define EXMODE_NORMAL 1
|
#define EXMODE_NORMAL 1
|
||||||
|
Reference in New Issue
Block a user