diff options
author | Gregory Anders <greg@gpanders.com> | 2023-08-24 12:48:21 -0500 |
---|---|---|
committer | Gregory Anders <greg@gpanders.com> | 2023-08-24 12:48:21 -0500 |
commit | 020d1f626a3fbda84b84b2f57e8a85662a792a1a (patch) | |
tree | 4631604fa63da09921175b1cff18f13394bcdf3e /runtime/filetype.lua | |
parent | daf7abbc4238dc269e22dd431bc4b1627ef9b6a1 (diff) | |
download | rneovim-020d1f626a3fbda84b84b2f57e8a85662a792a1a.tar.gz rneovim-020d1f626a3fbda84b84b2f57e8a85662a792a1a.tar.bz2 rneovim-020d1f626a3fbda84b84b2f57e8a85662a792a1a.zip |
fix(filetype): call on_detect before setting buffer filetype
The on_detect functions returned by filetype.lua set buffer local
variables which are often used by filetype plugins. For example, the
on_detect function for shell buffers sets variables such as b:is_bash or
b:is_sh, which are used by the sh ftplugin.
When called after setting the buffer's filetype, these variables cannot
be used by the ftplugin (because they are not yet defined). Instead,
call on_detect before setting the buffer filetype so that any buffer
variables set by on_detect can be used in the ftplugin.
Diffstat (limited to 'runtime/filetype.lua')
-rw-r--r-- | runtime/filetype.lua | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/runtime/filetype.lua b/runtime/filetype.lua index cf5fe39656..4a4f37a1c4 100644 --- a/runtime/filetype.lua +++ b/runtime/filetype.lua @@ -18,12 +18,15 @@ vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile', 'StdinReadPost' }, { end) end else - vim.api.nvim_buf_call(args.buf, function() - vim.api.nvim_cmd({ cmd = 'setf', args = { ft } }, {}) - end) + -- on_detect is called before setting the filetype so that it can set any buffer local + -- variables that may be used the filetype's ftplugin if on_detect then on_detect(args.buf) end + + vim.api.nvim_buf_call(args.buf, function() + vim.api.nvim_cmd({ cmd = 'setf', args = { ft } }, {}) + end) end end, }) |