From d5e8c92816f35ea1a9298084238a08f35958baa6 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 2 Feb 2021 21:10:01 +0100 Subject: [PATCH] patch 8.2.2452: no completion for the 'filetype' option Problem: No completion for the 'filetype' option. Solution: Add filetype completion. (Martin Tournoij, closes #7747) --- src/option.c | 6 ++++++ src/optiondefs.h | 2 +- src/testdir/test_options.vim | 6 ++++++ src/version.c | 2 ++ 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/option.c b/src/option.c index b4893a10a..bba467e5e 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 6cea0177c..9961bd477 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 c8b2700dd..23e0de437 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=\\\"\", 'xt') call assert_equal('"set key=*****', @:) set key= + + " Expand values for 'filetype' + call feedkeys(":set filetype=sshdconfi\\\"\", 'xt') + call assert_equal('"set filetype=sshdconfig', @:) + call feedkeys(":set filetype=a\\\"\", '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 cc8c728f9..c5f21db2c 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2452, /**/ 2451, /**/ -- 2.40.0