diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-02-02 21:10:01 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-02-02 21:10:01 +0100 |
commit | d5e8c92816f35ea1a9298084238a08f35958baa6 (patch) | |
tree | 8d6777071a59e4433b2f01f1cbf10ad426c405bf | |
parent | e7bebc495d4014d7bc81f863939c35268cb8e97d (diff) | |
download | vim-git-d5e8c92816f35ea1a9298084238a08f35958baa6.tar.gz |
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.c | 6 | ||||
-rw-r--r-- | src/optiondefs.h | 2 | ||||
-rw-r--r-- | src/testdir/test_options.vim | 6 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 15 insertions, 1 deletions
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=\<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 cc8c728f9..c5f21db2c 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, |