diff --git a/runtime/lua/vim/lsp/_folding_range.lua b/runtime/lua/vim/lsp/_folding_range.lua index 65143e6e50..99b79e64d9 100644 --- a/runtime/lua/vim/lsp/_folding_range.lua +++ b/runtime/lua/vim/lsp/_folding_range.lua @@ -3,6 +3,13 @@ local log = require('vim.lsp.log') local ms = require('vim.lsp.protocol').Methods local api = vim.api +---@type table +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 diff --git a/runtime/lua/vim/lsp/protocol.lua b/runtime/lua/vim/lsp/protocol.lua index 61431963c0..30baef9254 100644 --- a/runtime/lua/vim/lsp/protocol.lua +++ b/runtime/lua/vim/lsp/protocol.lua @@ -440,6 +440,9 @@ function protocol.make_client_capabilities() foldingRange = { dynamicRegistration = false, lineFoldingOnly = true, + foldingRangeKind = { + valueSet = { 'comment', 'imports', 'region' }, + }, foldingRange = { collapsedText = true, },