From: Yegappan Lakshmanan Date: Sat, 2 Jan 2021 06:52:54 +0000 (-0800) Subject: Fix problem in showing symbols in a document X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=989fa65f8dc07bc253cdcdc752524f1a8ae0e756;p=vim-lsp.git Fix problem in showing symbols in a document --- diff --git a/autoload/handlers.vim b/autoload/handlers.vim index d79efcb..91ff702 100644 --- a/autoload/handlers.vim +++ b/autoload/handlers.vim @@ -328,28 +328,40 @@ enddef # display the list of document symbols from the LSP server in a window as a # tree -def s:showSymbols(symTable: list>) +def s:showSymbols(symTable: list>, uri: string) var symbols: dict>> var symbolType: string var fname: string + var r: dict> + var name: string + + if uri != '' + fname = LspUriToFile(uri) + endif for symbol in symTable if symbol->has_key('location') + # interface SymbolInformation fname = LspUriToFile(symbol.location.uri) symbolType = LspSymbolKindToName(symbol.kind) - if !symbols->has_key(symbolType) - symbols[symbolType] = [] - endif - var name: string = symbol.name + name = symbol.name if symbol->has_key('containerName') if symbol.containerName != '' name ..= ' [' .. symbol.containerName .. ']' endif endif - symbols[symbolType]->add({name: name, - lnum: symbol.location.range.start.line + 1, - col: symbol.location.range.start.character + 1}) + r = symbol.location.range + else + # interface DocumentSymbol + name = symbol.name + symbolType = LspSymbolKindToName(symbol.kind) + r = symbol.range + endif + if !symbols->has_key(symbolType) + symbols[symbolType] = [] endif + symbols[symbolType]->add({name: name, + lnum: r.start.line + 1, col: r.start.character + 1}) endfor var wid: number = bufwinid('LSP-Symbols') @@ -393,7 +405,7 @@ def s:processDocSymbolReply(lspserver: dict, req: dict, reply: dict, req: dict, reply: d return endif - s:showSymbols(reply.result) + s:showSymbols(reply.result, '') enddef # Process various reply messages from the LSP server