Mercurial > vim
changeset 23821:bfc1ae959d9d v8.2.2452
patch 8.2.2452: no completion for the 'filetype' option
Commit: https://github.com/vim/vim/commit/d5e8c92816f35ea1a9298084238a08f35958baa6
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Feb 2 21:10:01 2021 +0100
patch 8.2.2452: no completion for the 'filetype' option
Problem: No completion for the 'filetype' option.
Solution: Add filetype completion. (Martin Tournoij, closes https://github.com/vim/vim/issues/7747)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 02 Feb 2021 21:15:03 +0100 |
parents | 8460878018c0 |
children | b4e8bcf41ad8 |
files | src/option.c src/optiondefs.h src/testdir/test_options.vim src/version.c |
diffstat | 4 files changed, 15 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/option.c +++ b/src/option.c @@ -2419,6 +2419,8 @@ was_set_insecurely(char_u *opt, int opt_ /* * 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;
--- 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},
--- 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()