fix(treesitter): adjust indentation in inspector highlights (#26302)

This commit is contained in:
Gregory Anders 2023-11-29 10:17:53 -06:00 committed by GitHub
parent 400b7842a9
commit 4a8bf24ac6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,6 +8,7 @@ local M = {}
---@field opts table Options table with the following keys: ---@field opts table Options table with the following keys:
--- - anon (boolean): If true, display anonymous nodes --- - anon (boolean): If true, display anonymous nodes
--- - lang (boolean): If true, display the language alongside each node --- - lang (boolean): If true, display the language alongside each node
--- - indent (number): Number of spaces to indent nested lines. Default is 2.
---@field nodes TSP.Node[] ---@field nodes TSP.Node[]
---@field named TSP.Node[] ---@field named TSP.Node[]
local TSTreeView = {} local TSTreeView = {}
@ -143,6 +144,7 @@ function TSTreeView:new(bufnr, lang)
opts = { opts = {
anon = false, anon = false,
lang = false, lang = false,
indent = 2,
}, },
} }
@ -212,7 +214,7 @@ local function set_inspector_cursor(treeview, lang, source_buf, inspect_buf, ins
local cursor_node_id = cursor_node:id() local cursor_node_id = cursor_node:id()
for i, v in treeview:iter() do for i, v in treeview:iter() do
if v.id == cursor_node_id then if v.id == cursor_node_id then
local start = v.depth local start = v.depth * treeview.opts.indent ---@type integer
local end_col = start + #v.text local end_col = start + #v.text
api.nvim_buf_set_extmark(inspect_buf, treeview.ns, i - 1, start, { api.nvim_buf_set_extmark(inspect_buf, treeview.ns, i - 1, start, {
end_col = end_col, end_col = end_col,
@ -236,8 +238,13 @@ function TSTreeView:draw(bufnr)
for _, item in self:iter() do for _, item in self:iter() do
local range_str = get_range_str(item.lnum, item.col, item.end_lnum, item.end_col) local range_str = get_range_str(item.lnum, item.col, item.end_lnum, item.end_col)
local lang_str = self.opts.lang and string.format(' %s', item.lang) or '' local lang_str = self.opts.lang and string.format(' %s', item.lang) or ''
local line = local line = string.format(
string.format('%s%s ; %s%s', string.rep(' ', item.depth), item.text, range_str, lang_str) '%s%s ; %s%s',
string.rep(' ', item.depth * self.opts.indent),
item.text,
range_str,
lang_str
)
if self.opts.lang then if self.opts.lang then
lang_hl_marks[#lang_hl_marks + 1] = { lang_hl_marks[#lang_hl_marks + 1] = {