aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/lua/vim/filetype/options.lua24
-rw-r--r--src/nvim/api/options.c4
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);