Skip to content

Commit 317ada1

Browse files
committed
fix(treesitter): dont use treesitter stringbuffers
1 parent 6c53e5f commit 317ada1

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

lua/sidekick/treesitter.lua

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
local M = {}
22

3+
M._scratch_buf = nil ---@type number?
4+
5+
---@param source string
6+
function M.scratch_buf(source)
7+
if not (M._scratch_buf and vim.api.nvim_buf_is_valid(M._scratch_buf)) then
8+
M._scratch_buf = vim.api.nvim_create_buf(false, true)
9+
vim.api.nvim_buf_set_name(M._scratch_buf, "sidekick://highlight")
10+
end
11+
vim.bo[M._scratch_buf].fixeol = false
12+
vim.bo[M._scratch_buf].eol = false
13+
vim.api.nvim_buf_set_lines(M._scratch_buf, 0, -1, false, vim.split(source, "\n", { plain = true }))
14+
return M._scratch_buf
15+
end
16+
317
---@param source string|number
418
---@param opts? {ft:string, start_row?: integer, end_row?: integer, bg?: string}
519
---@return sidekick.Text[]
@@ -121,20 +135,17 @@ end
121135
---@param opts? {ft:string, start_row?: integer, end_row?: integer}
122136
function M.get_extmarks(source, opts)
123137
opts = opts or {}
124-
local buf = type(source) == "number" and source or nil
125-
assert(buf or opts.ft, "Either buf or ft should be specified")
138+
assert(type(source) == "number" or opts.ft, "Either buf or ft should be specified")
139+
140+
local buf = type(source) == "number" and source or M.scratch_buf(source --[[@as string]])
126141

127-
local lang = vim.treesitter.language.get_lang(buf and vim.bo[buf].filetype or opts.ft)
142+
local lang = vim.treesitter.language.get_lang(opts.ft or vim.bo[buf].filetype)
128143

129144
local parser ---@type vim.treesitter.LanguageTree?
130145
if lang then
131146
lang = lang:lower()
132147
local ok = false
133-
if buf then
134-
ok, parser = pcall(vim.treesitter.get_parser, buf, lang)
135-
else
136-
ok, parser = pcall(vim.treesitter.get_string_parser, source, lang)
137-
end
148+
ok, parser = pcall(vim.treesitter.get_parser, buf, lang)
138149
parser = ok and parser or nil
139150
end
140151

0 commit comments

Comments
 (0)