Skip to content

Commit d0ce943

Browse files
committed
feat: refactor treesitter filetype detection
1 parent 55260b1 commit d0ce943

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

lua/vsnip/treesitter.lua

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,30 +28,23 @@ function M.get_ft_at_cursor ( bufnr )
2828

2929
if cur_node then
3030
local parser = ts_parsers.get_parser( bufnr )
31-
local lang = parser:language_for_range( { cur_node:range() } ):lang()
31+
local language_tree_at_cursor = parser:language_for_range( { cur_node:range() } )
32+
local language_at_cursor = language_tree_at_cursor:lang()
3233

33-
local filetype = get_parser_filetype( lang )
34+
local filetype = get_parser_filetype( language_at_cursor )
3435

3536
if filetype ~= "" then
37+
local parent_language_tree = language_tree_at_cursor:parent()
3638

37-
-- XXX: not works
38-
local parent_parser = parser:parent()
39+
if parent_language_tree then
40+
local parent_language = parent_language_tree:lang()
41+
local parent_filetype = get_parser_filetype( parent_language )
3942

40-
if parent_parser then
41-
local parent_lang = parent_parser:lang()
42-
43-
if parent_lang and parent_lang ~= filetype then
44-
local parent_filetype = get_parser_filetype( parent_lang )
45-
46-
if parent_filetype ~= "" then
47-
filetype = filetype .. "." .. parent_filetype .. "/" .. filetype
48-
end
43+
if parent_filetype ~= "" and parent_filetype ~= filetype then
44+
filetype = filetype .. "." .. parent_filetype .. "/" .. filetype
4945
end
5046
end
5147

52-
-- XXX
53-
vim.print( "--- " .. filetype )
54-
5548
return filetype
5649
end
5750
end

0 commit comments

Comments
 (0)