summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-02-02 21:10:01 +0100
committerBram Moolenaar <Bram@vim.org>2021-02-02 21:10:01 +0100
commitd5e8c92816f35ea1a9298084238a08f35958baa6 (patch)
tree8d6777071a59e4433b2f01f1cbf10ad426c405bf
parente7bebc495d4014d7bc81f863939c35268cb8e97d (diff)
patch 8.2.2452: no completion for the 'filetype' optionv8.2.2452
Problem: No completion for the 'filetype' option. Solution: Add filetype completion. (Martin Tournoij, closes #7747)
-rw-r--r--src/option.c6
-rw-r--r--src/optiondefs.h2
-rw-r--r--src/testdir/test_options.vim6
-rw-r--r--src/version.c2
4 files changed, 15 insertions, 1 deletions
diff --git a/src/option.c b/src/option.c
index b4893a10ad..bba467e5e9 100644
--- a/src/option.c
+++ b/src/option.c
@@ -2419,6 +2419,8 @@ was_set_insecurely(char_u *opt, int opt_flags)
/*
* Get a pointer to the flags used for the P_INSECURE flag of option
* "opt_idx". For some local options a local flags field is used.
+ * NOTE: Caller must make sure that "curwin" is set to the window from which
+ * the option is used.
*/
static long_u *
insecure_flag(int opt_idx, int opt_flags)
@@ -6209,6 +6211,10 @@ set_context_in_set_cmd(
else
xp->xp_backslash = XP_BS_ONE;
}
+ else if (p == (char_u *)&p_ft)
+ {
+ xp->xp_context = EXPAND_FILETYPE;
+ }
else
{
xp->xp_context = EXPAND_FILES;
diff --git a/src/optiondefs.h b/src/optiondefs.h
index 6cea0177cb..9961bd4771 100644
--- a/src/optiondefs.h
+++ b/src/optiondefs.h
@@ -946,7 +946,7 @@ static struct vimoption options[] =
(char_u *)FALSE,
#endif
(char_u *)0L} SCTX_INIT},
- {"filetype", "ft", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
+ {"filetype", "ft", P_STRING|P_EXPAND|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
(char_u *)&p_ft, PV_FT,
{(char_u *)"", (char_u *)0L}
SCTX_INIT},
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index c8b2700dda..23e0de4377 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -332,6 +332,12 @@ func Test_set_completion()
call feedkeys(":set key=\<Tab>\<C-B>\"\<CR>", 'xt')
call assert_equal('"set key=*****', @:)
set key=
+
+ " Expand values for 'filetype'
+ call feedkeys(":set filetype=sshdconfi\<Tab>\<C-B>\"\<CR>", 'xt')
+ call assert_equal('"set filetype=sshdconfig', @:)
+ call feedkeys(":set filetype=a\<C-A>\<C-B>\"\<CR>", 'xt')
+ call assert_equal('"set filetype=' .. getcompletion('a*', 'filetype')->join(), @:)
endfunc
func Test_set_errors()
diff --git a/src/version.c b/src/version.c
index cc8c728f92..c5f21db2c8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2452,
+/**/
2451,
/**/
2450,