diff options
author | Lewis Russell <lewis6991@gmail.com> | 2023-02-09 16:08:22 +0000 |
---|---|---|
committer | Lewis Russell <lewis6991@gmail.com> | 2023-02-10 16:15:56 +0000 |
commit | 8a985d12dd6b4a5a4ba825939f36b7b1a324d849 (patch) | |
tree | 4de39129b7f59b0093552edeee82de8d686f17ac /runtime/lua/vim/treesitter.lua | |
parent | f5bad01869df449cb1e4ae7f264bcd5c8150f606 (diff) | |
download | rneovim-8a985d12dd6b4a5a4ba825939f36b7b1a324d849.tar.gz rneovim-8a985d12dd6b4a5a4ba825939f36b7b1a324d849.tar.bz2 rneovim-8a985d12dd6b4a5a4ba825939f36b7b1a324d849.zip |
fix(treesitter): don't trample parsers when filetype!=lang
This allows vim.treesitter.show_tree() to work on buffers where the
filetype does not match the parser language name e.g, bash/sh.
Diffstat (limited to 'runtime/lua/vim/treesitter.lua')
-rw-r--r-- | runtime/lua/vim/treesitter.lua | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/runtime/lua/vim/treesitter.lua b/runtime/lua/vim/treesitter.lua index a15d3ec23c..4127198576 100644 --- a/runtime/lua/vim/treesitter.lua +++ b/runtime/lua/vim/treesitter.lua @@ -96,11 +96,13 @@ function M.get_parser(bufnr, lang, opts) if bufnr == nil or bufnr == 0 then bufnr = a.nvim_get_current_buf() end - if lang == nil then - lang = a.nvim_buf_get_option(bufnr, 'filetype') - end - if parsers[bufnr] == nil or parsers[bufnr]:lang() ~= lang then + if parsers[bufnr] == nil then + lang = lang or a.nvim_buf_get_option(bufnr, 'filetype') + parsers[bufnr] = M._create_parser(bufnr, lang, opts) + elseif lang and parsers[bufnr]:lang() ~= lang then + -- Only try to create a new parser if lang is provided + -- and it doesn't match the stored parser parsers[bufnr] = M._create_parser(bufnr, lang, opts) end |