From 989fa65f8dc07bc253cdcdc752524f1a8ae0e756 Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Fri, 1 Jan 2021 22:52:54 -0800 Subject: [PATCH] Fix problem in showing symbols in a document --- autoload/handlers.vim | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) 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 -- 2.48.1