diff options
-rw-r--r-- | runtime/lua/vim/filetype/options.lua | 24 | ||||
-rw-r--r-- | src/nvim/api/options.c | 4 |
2 files changed, 19 insertions, 9 deletions
diff --git a/runtime/lua/vim/filetype/options.lua b/runtime/lua/vim/filetype/options.lua index 77a66991d5..a093c249f7 100644 --- a/runtime/lua/vim/filetype/options.lua +++ b/runtime/lua/vim/filetype/options.lua @@ -3,7 +3,7 @@ local api = vim.api local M = {} local function get_ftplugin_runtime(filetype) - return api.nvim__get_runtime({ + local files = api.nvim__get_runtime({ string.format('ftplugin/%s.vim', filetype), string.format('ftplugin/%s_*.vim', filetype), string.format('ftplugin/%s/*.vim', filetype), @@ -11,6 +11,15 @@ local function get_ftplugin_runtime(filetype) string.format('ftplugin/%s_*.lua', filetype), string.format('ftplugin/%s/*.lua', filetype), }, true, {}) --[[@as string[] ]] + + local r = {} ---@type string[] + for _, f in ipairs(files) do + -- VIMRUNTIME should be static so shouldn't need to worry about it changing + if not vim.startswith(f, vim.env.VIMRUNTIME) then + r[#r + 1] = f + end + end + return r end -- Keep track of ftplugin files @@ -52,14 +61,11 @@ local function update_ft_option_cache(filetype) end for _, f in ipairs(files) do - -- VIMRUNTIME should be static so shouldn't need to worry about it changing - if not vim.startswith(f, vim.env.VIMRUNTIME) then - local mtime = hash(f) - if ftplugin_cache[filetype][f] ~= mtime then - -- invalidate - ft_option_cache[filetype] = nil - ftplugin_cache[filetype][f] = mtime - end + local mtime = hash(f) + if ftplugin_cache[filetype][f] ~= mtime then + -- invalidate + ft_option_cache[filetype] = nil + ftplugin_cache[filetype][f] = mtime end end end diff --git a/src/nvim/api/options.c b/src/nvim/api/options.c index 502c73d02d..7a453c01b4 100644 --- a/src/nvim/api/options.c +++ b/src/nvim/api/options.c @@ -111,6 +111,10 @@ static buf_T *do_ft_buf(char *filetype, aco_save_T *aco, Error *err) // Set curwin/curbuf to buf and save a few things. aucmd_prepbuf(aco, ftbuf); + set_option_value("bufhidden", 0L, "hide", OPT_LOCAL); + set_option_value("buftype", 0L, "nofile", OPT_LOCAL); + set_option_value("swapfile", 0L, NULL, OPT_LOCAL); + set_option_value("modeline", 0L, NULL, OPT_LOCAL); // 'nomodeline' ftbuf->b_p_ft = xstrdup(filetype); |