mirror of
https://github.com/neovim/neovim
synced 2025-07-15 16:51:49 +00:00
fix(lsp): advertise supported fold kinds (#34461)
This commit also makes it so that folds which have an unsupported fold
kind have their `kind` ignored.
(cherry picked from commit 35756022cb
)
This commit is contained in:
committed by
github-actions[bot]
parent
3d5be364bc
commit
1077374380
@ -3,6 +3,13 @@ local log = require('vim.lsp.log')
|
||||
local ms = require('vim.lsp.protocol').Methods
|
||||
local api = vim.api
|
||||
|
||||
---@type table<lsp.FoldingRangeKind, true>
|
||||
local supported_fold_kinds = {
|
||||
['comment'] = true,
|
||||
['imports'] = true,
|
||||
['region'] = true,
|
||||
}
|
||||
|
||||
local M = {}
|
||||
|
||||
---@class (private) vim.lsp.folding_range.BufState
|
||||
@ -49,9 +56,14 @@ local function renew(bufnr)
|
||||
|
||||
local kind = range.kind
|
||||
if kind then
|
||||
local kinds = row_kinds[start_row] or {}
|
||||
kinds[kind] = true
|
||||
row_kinds[start_row] = kinds
|
||||
-- Ignore unsupported fold kinds.
|
||||
if supported_fold_kinds[kind] then
|
||||
local kinds = row_kinds[start_row] or {}
|
||||
kinds[kind] = true
|
||||
row_kinds[start_row] = kinds
|
||||
else
|
||||
log.info(('Received unsupported fold kind: "%s"'):format(kind))
|
||||
end
|
||||
end
|
||||
|
||||
for row = start_row, end_row do
|
||||
|
@ -440,6 +440,9 @@ function protocol.make_client_capabilities()
|
||||
foldingRange = {
|
||||
dynamicRegistration = false,
|
||||
lineFoldingOnly = true,
|
||||
foldingRangeKind = {
|
||||
valueSet = { 'comment', 'imports', 'region' },
|
||||
},
|
||||
foldingRange = {
|
||||
collapsedText = true,
|
||||
},
|
||||
|
Reference in New Issue
Block a user