mirror of
https://github.com/windwp/nvim-ts-autotag.git
synced 2025-01-21 23:13:46 -06:00
49 lines
1.4 KiB
Lua
49 lines
1.4 KiB
Lua
local _, ts_utils = pcall(require, "nvim-treesitter.ts_utils")
|
|
local log = require("nvim-ts-autotag._log")
|
|
local get_node_text = vim.treesitter.get_node_text or vim.treesitter.query.get_node_text or ts_utils.get_node_text
|
|
local M = {}
|
|
|
|
M.get_node_text = function(node)
|
|
local _, txt = pcall(get_node_text, node, vim.api.nvim_get_current_buf())
|
|
return vim.split(txt, "\n") or {}
|
|
end
|
|
|
|
M.verify_node = function(node, node_tag)
|
|
local txt = get_node_text(node, vim.api.nvim_get_current_buf())
|
|
if txt:match(string.format("^<%s>", node_tag)) and txt:match(string.format("</%s>$", node_tag)) then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
M.get_cursor = function(bufnr)
|
|
local row, col = unpack(vim.api.nvim_win_get_cursor(bufnr or 0))
|
|
return row - 1, col
|
|
end
|
|
M.dump_node = function(node)
|
|
local text = M.get_node_text(node)
|
|
for _, txt in pairs(text) do
|
|
log.debug(txt)
|
|
end
|
|
end
|
|
|
|
M.is_close_empty_node = function(node)
|
|
local tag_name = ""
|
|
if node ~= nil then
|
|
local text = M.get_node_text(node)
|
|
tag_name = text[#text - 1]
|
|
end
|
|
return tag_name:match("%<%/%>$")
|
|
end
|
|
|
|
M.dump_node_text = function(target)
|
|
log.debug("=============================")
|
|
for node in target:iter_children() do
|
|
local node_type = node:type()
|
|
local text = M.get_node_text(node)
|
|
log.debug("type:" .. node_type .. " ")
|
|
log.debug(text)
|
|
end
|
|
log.debug("=============================")
|
|
end
|
|
return M
|