From c5c5188a0b293582ef3570b8bd6629268f628b2b Mon Sep 17 00:00:00 2001 From: kola Date: Fri, 9 Aug 2024 18:05:31 +0800 Subject: [PATCH 1/3] support treesitter --- autoload/emmet.vim | 8 ++++++-- lua/my_utils.lua | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 lua/my_utils.lua diff --git a/autoload/emmet.vim b/autoload/emmet.vim index efafc3f..2d224b1 100644 --- a/autoload/emmet.vim +++ b/autoload/emmet.vim @@ -379,8 +379,12 @@ function! emmet#getFileType(...) abort endif endif - let pos = emmet#util#getcurpos() - let type = synIDattr(synID(max([pos[1], 1]), max([pos[2], 1]), 1), 'name') + if exists('g:loaded_nvim_treesitter') == 1 + let type = luaeval('require"my_utils".get_node_at_cursor()') + else + let pos = emmet#util#getcurpos() + let type = synIDattr(synID(max([pos[1], 1]), max([pos[2], 1]), 1), 'name') + endif " ignore htmlTagName as it seems to occur too often if type == 'htmlTagName' diff --git a/lua/my_utils.lua b/lua/my_utils.lua new file mode 100644 index 0000000..7f57d9a --- /dev/null +++ b/lua/my_utils.lua @@ -0,0 +1,25 @@ +local M = {} + +M.get_node_at_cursor = function() + local ts_utils = require("nvim-treesitter.ts_utils") + local node = ts_utils.get_node_at_cursor() + if not node then + return nil + end + + while node do + local node_type = node:type() + + if node_type == "element" then + return "html" + elseif node_type == "stylesheet" then + return "css" + end + + node = node:parent() + end + + return "" +end + +return M From 8f1581550da33b627a0abe2023f375ea7fd9220b Mon Sep 17 00:00:00 2001 From: kola Date: Sat, 10 Aug 2024 09:29:20 +0800 Subject: [PATCH 2/3] my_utils.lua -> emmet_utils.lua --- autoload/emmet.vim | 2 +- lua/{my_utils.lua => emmet_utils.lua} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lua/{my_utils.lua => emmet_utils.lua} (100%) diff --git a/autoload/emmet.vim b/autoload/emmet.vim index 2d224b1..b72df01 100644 --- a/autoload/emmet.vim +++ b/autoload/emmet.vim @@ -380,7 +380,7 @@ function! emmet#getFileType(...) abort endif if exists('g:loaded_nvim_treesitter') == 1 - let type = luaeval('require"my_utils".get_node_at_cursor()') + let type = luaeval('require"emmet_utils".get_node_at_cursor()') else let pos = emmet#util#getcurpos() let type = synIDattr(synID(max([pos[1], 1]), max([pos[2], 1]), 1), 'name') diff --git a/lua/my_utils.lua b/lua/emmet_utils.lua similarity index 100% rename from lua/my_utils.lua rename to lua/emmet_utils.lua From 033476412ee2fe3d1050d5568ea1ea44064a8e01 Mon Sep 17 00:00:00 2001 From: kola Date: Sat, 10 Aug 2024 09:32:53 +0800 Subject: [PATCH 3/3] Change treesitter judgment method --- autoload/emmet.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/emmet.vim b/autoload/emmet.vim index b72df01..e242bea 100644 --- a/autoload/emmet.vim +++ b/autoload/emmet.vim @@ -379,7 +379,7 @@ function! emmet#getFileType(...) abort endif endif - if exists('g:loaded_nvim_treesitter') == 1 + if get(g:, 'loaded_nvim_treesitter', 0) let type = luaeval('require"emmet_utils".get_node_at_cursor()') else let pos = emmet#util#getcurpos()