feat(lsp): handle deprecated document symbols (#34751)

This commit is contained in:
Maria José Solano
2025-07-06 09:39:37 -07:00
committed by GitHub
parent 580b8cfac7
commit 957093da0d
3 changed files with 97 additions and 1 deletions

View File

@@ -144,6 +144,11 @@ local constants = {
TypeParameter = 26,
},
-- Extra annotations that tweak the rendering of a symbol.
SymbolTag = {
Deprecated = 1,
},
-- Represents reasons why a text document is saved.
TextDocumentSaveReason = {
-- Manually triggered, e.g. by the user pressing save, by starting debugging,
@@ -525,6 +530,9 @@ function protocol.make_client_capabilities()
valueSet = get_value_set(constants.SymbolKind),
},
hierarchicalDocumentSymbolSupport = true,
tagSupport = {
valueSet = get_value_set(constants.SymbolTag),
},
},
rename = {
dynamicRegistration = true,

View File

@@ -1892,6 +1892,11 @@ function M.symbols_to_items(symbols, bufnr, position_encoding)
local end_lnum = range['end'].line + 1
local end_col = get_line_byte_from_position(bufnr, range['end'], position_encoding) + 1
local is_deprecated = symbol.deprecated
or (symbol.tags and vim.tbl_contains(symbol.tags, protocol.SymbolTag.Deprecated))
local text =
string.format('[%s] %s%s', kind, symbol.name, is_deprecated and ' (deprecated)' or '')
items[#items + 1] = {
filename = filename,
lnum = lnum,
@@ -1899,7 +1904,7 @@ function M.symbols_to_items(symbols, bufnr, position_encoding)
end_lnum = end_lnum,
end_col = end_col,
kind = kind,
text = '[' .. kind .. '] ' .. symbol.name,
text = text,
}
end