mirror of
https://github.com/neovim/neovim.git
synced 2025-09-07 11:58:17 +00:00
[Backport release-0.9] fix(treesitter): allow foldexpr without highlights (#23673)
fix(treesitter): allow foldexpr without highlights (#23672) Ref nvim-treesitter/nvim-treesitter#4748 Co-authored-by: Lewis Russell <lewis6991@gmail.com>
This commit is contained in:
@@ -136,16 +136,6 @@ function M.get_parser(bufnr, lang, opts)
|
|||||||
return parsers[bufnr]
|
return parsers[bufnr]
|
||||||
end
|
end
|
||||||
|
|
||||||
---@package
|
|
||||||
---@param bufnr (integer|nil) Buffer number
|
|
||||||
---@return boolean
|
|
||||||
function M._has_parser(bufnr)
|
|
||||||
if bufnr == nil or bufnr == 0 then
|
|
||||||
bufnr = api.nvim_get_current_buf()
|
|
||||||
end
|
|
||||||
return parsers[bufnr] ~= nil
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Returns a string parser
|
--- Returns a string parser
|
||||||
---
|
---
|
||||||
---@param str string Text to parse
|
---@param str string Text to parse
|
||||||
|
@@ -279,7 +279,8 @@ function M.foldexpr(lnum)
|
|||||||
lnum = lnum or vim.v.lnum
|
lnum = lnum or vim.v.lnum
|
||||||
local bufnr = api.nvim_get_current_buf()
|
local bufnr = api.nvim_get_current_buf()
|
||||||
|
|
||||||
if not vim.treesitter._has_parser(bufnr) or not lnum then
|
local parser = vim.F.npcall(vim.treesitter.get_parser, bufnr)
|
||||||
|
if not parser then
|
||||||
return '0'
|
return '0'
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -287,7 +288,6 @@ function M.foldexpr(lnum)
|
|||||||
foldinfos[bufnr] = FoldInfo.new()
|
foldinfos[bufnr] = FoldInfo.new()
|
||||||
get_folds_levels(bufnr, foldinfos[bufnr])
|
get_folds_levels(bufnr, foldinfos[bufnr])
|
||||||
|
|
||||||
local parser = vim.treesitter.get_parser(bufnr)
|
|
||||||
parser:register_cbs({
|
parser:register_cbs({
|
||||||
on_changedtree = function(tree_changes)
|
on_changedtree = function(tree_changes)
|
||||||
on_changedtree(bufnr, foldinfos[bufnr], tree_changes)
|
on_changedtree(bufnr, foldinfos[bufnr], tree_changes)
|
||||||
|
Reference in New Issue
Block a user