@@ -978,24 +978,32 @@ end
978978
979979function 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