Skip to content

Commit fd244f2

Browse files
committed
fix(ts-context): clear context when buf has no ft/parser
closes #2344
1 parent a9a286e commit fd244f2

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

lua/fzf-lua/previewer/builtin.lua

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -978,24 +978,32 @@ end
978978

979979
function Previewer.base:update_ts_context()
980980
local bufnr = self.preview_bufnr
981-
if not bufnr or not package.loaded["treesitter-context"] then return end
982-
local ft = vim.b[bufnr] and vim.b[bufnr]._ft
983-
if not ft
981+
if not bufnr
984982
or not self.win
985983
or not self.win:validate_preview()
986984
or not self.treesitter.enabled
987985
or not self.treesitter.context
986+
or not package.loaded["treesitter-context"]
988987
then
989988
return
990989
end
990+
local ft = vim.b[bufnr] and vim.b[bufnr]._ft
991+
if not ft then
992+
TSContext.close(self.win.preview_winid)
993+
return
994+
end
991995
-- HACK: since TS async parsing commit we cannot guarantee the TSContext ranges as these will
992996
-- return empty unless parsing is complete and we have no access to the `on_parse` event
993997
-- https://github.com/neovim/neovim/commit/45e606b1fddbfeee8fe28385b5371ca6f2fba71b
994998
-- For more info see #1922
995999
local lang = vim.treesitter.language.get_lang(ft)
996-
if not utils.has_ts_parser(lang) then return end
997-
local parser = vim.treesitter.get_parser(self.preview_bufnr, lang)
998-
if not parser then return end
1000+
if not utils.has_ts_parser(lang) then
1001+
TSContext.close(self.win.preview_winid)
1002+
return
1003+
end
1004+
local parser, err = vim.treesitter.get_parser(self.preview_bufnr, lang)
1005+
-- should never fail since `utils.has_ts_parser` returned true
1006+
assert(parser, "'vim.treesitter.get_parser' err: " .. tostring(err))
9991007
local context_updated
10001008
TSContext.zindex = self.win.winopts.zindex + 20
10011009
for _, t in ipairs({ 0, 20, 50, 100 }) do

0 commit comments

Comments
 (0)