From 5d9e82fae0caeacf3c5d837cf5193ed6b167da32 Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Wed, 30 Dec 2020 20:41:57 -0800 Subject: [PATCH] More refactoring --- autoload/handlers.vim | 131 +++++++++++++++++++++-------------------- autoload/lsp.vim | 16 ++--- autoload/lspserver.vim | 36 +++++------ autoload/util.vim | 5 +- 4 files changed, 95 insertions(+), 93 deletions(-) diff --git a/autoload/handlers.vim b/autoload/handlers.vim index 1276d94..89bca56 100644 --- a/autoload/handlers.vim +++ b/autoload/handlers.vim @@ -44,7 +44,7 @@ def s:processDefDeclReply(lspserver: dict, req: dict, reply: dict # pop the tag stack var tagstack: dict = gettagstack() if tagstack.length > 0 - settagstack(winnr(), {'curidx': tagstack.length}, 't') + settagstack(winnr(), {curidx: tagstack.length}, 't') endif return endif @@ -84,41 +84,41 @@ def s:processSignaturehelpReply(lspserver: dict, req: dict, reply: dic endif endif var popupID = popup_atcursor(text, {}) - prop_type_add('signature', {'bufnr': popupID->winbufnr(), 'highlight': 'Title'}) + prop_type_add('signature', {bufnr: popupID->winbufnr(), highlight: 'Title'}) if hllen > 0 - prop_add(1, startcol + 1, {'bufnr': popupID->winbufnr(), 'length': hllen, 'type': 'signature'}) + prop_add(1, startcol + 1, {bufnr: popupID->winbufnr(), length: hllen, type: 'signature'}) endif enddef # Map LSP complete item kind to a character def LspCompleteItemKindChar(kind: number): string var kindMap: list = ['', - 't', # Text - 'm', # Method - 'f', # Function - 'C', # Constructor - 'F', # Field - 'v', # Variable - 'c', # Class - 'i', # Interface - 'M', # Module - 'p', # Property - 'u', # Unit - 'V', # Value - 'e', # Enum - 'k', # Keyword - 'S', # Snippet - 'C', # Color - 'f', # File - 'r', # Reference - 'F', # Folder - 'E', # EnumMember - 'd', # Contant - 's', # Struct - 'E', # Event - 'o', # Operator - 'T' # TypeParameter - ] + 't', # Text + 'm', # Method + 'f', # Function + 'C', # Constructor + 'F', # Field + 'v', # Variable + 'c', # Class + 'i', # Interface + 'M', # Module + 'p', # Property + 'u', # Unit + 'V', # Value + 'e', # Enum + 'k', # Keyword + 'S', # Snippet + 'C', # Color + 'f', # File + 'r', # Reference + 'F', # Folder + 'E', # EnumMember + 'd', # Contant + 's', # Struct + 'E', # Event + 'o', # Operator + 'T' # TypeParameter + ] if kind > 25 return '' endif @@ -173,12 +173,12 @@ def s:processHoverReply(lspserver: dict, req: dict, reply: dict): if reply.result.contents->has_key('kind') # MarkupContent if reply.result.contents.kind == 'plaintext' - hoverText = reply.result.contents.value->split("\n") + hoverText = reply.result.contents.value->split("\n") elseif reply.result.contents.kind == 'markdown' - hoverText = reply.result.contents.value->split("\n") + hoverText = reply.result.contents.value->split("\n") else - ErrMsg('Error: Unsupported hover contents type (' .. reply.result.contents.kind .. ')') - return + ErrMsg('Error: Unsupported hover contents type (' .. reply.result.contents.kind .. ')') + return endif elseif reply.result.contents->has_key('value') # MarkedString @@ -191,9 +191,9 @@ def s:processHoverReply(lspserver: dict, req: dict, reply: dict): # interface MarkedString[] for e in reply.result.contents if type(e) == v:t_string - hoverText->extend(e->split("\n")) + hoverText->extend(e->split("\n")) else - hoverText->extend(e.value->split("\n")) + hoverText->extend(e.value->split("\n")) endif endfor elseif type(reply.result.contents) == v:t_string @@ -205,7 +205,7 @@ def s:processHoverReply(lspserver: dict, req: dict, reply: dict): ErrMsg('Error: Unsupported hover contents (' .. reply.result.contents .. ')') return endif - hoverText->popup_atcursor({'moved': 'word'}) + hoverText->popup_atcursor({moved: 'word'}) enddef # process the 'textDocument/references' reply from the LSP server @@ -227,12 +227,12 @@ def s:processReferencesReply(lspserver: dict, req: dict, reply: dictgetbufline(loc.range.start.line + 1)[0] ->trim("\t ", 1) - qflist->add({'filename': fname, - 'lnum': loc.range.start.line + 1, - 'col': loc.range.start.character + 1, - 'text': text}) + qflist->add({filename: fname, + lnum: loc.range.start.line + 1, + col: loc.range.start.character + 1, + text: text}) endfor - setqflist([], ' ', {'title': 'Language Server', 'items': qflist}) + setqflist([], ' ', {title: 'Language Server', items: qflist}) var save_winid = win_getid() copen win_gotoid(save_winid) @@ -261,10 +261,10 @@ def s:processDocHighlightReply(lspserver: dict, req: dict, reply: dict propName = 'LspTextRef' endif prop_add(docHL.range.start.line + 1, docHL.range.start.character + 1, - {'end_lnum': docHL.range.end.line + 1, - 'end_col': docHL.range.end.character + 1, - 'bufnr': bnr, - 'type': propName}) + {end_lnum: docHL.range.end.line + 1, + end_col: docHL.range.end.character + 1, + bufnr: bnr, + type: propName}) endfor enddef @@ -272,9 +272,9 @@ enddef def LspSymbolKindToName(symkind: number): string var symbolMap: list = ['', 'File', 'Module', 'Namespace', 'Package', 'Class', 'Method', 'Property', 'Field', 'Constructor', 'Enum', - 'Interface', 'Function', 'Variable', 'Constant', 'String', 'Number', - 'Boolean', 'Array', 'Object', 'Key', 'Null', 'EnumMember', 'Struct', - 'Event', 'Operator', 'TypeParameter'] + 'Interface', 'Function', 'Variable', 'Constant', 'String', 'Number', + 'Boolean', 'Array', 'Object', 'Key', 'Null', 'EnumMember', 'Struct', + 'Event', 'Operator', 'TypeParameter'] if symkind > 26 return '' endif @@ -338,9 +338,9 @@ def s:showSymbols(symTable: list>) name ..= ' [' .. symbol.containerName .. ']' endif endif - symbols[symbolType]->add({'name': name, - 'lnum': symbol.location.range.start.line + 1, - 'col': symbol.location.range.start.character + 1}) + symbols[symbolType]->add({name: name, + lnum: symbol.location.range.start.line + 1, + col: symbol.location.range.start.character + 1}) endif endfor @@ -367,11 +367,11 @@ def s:showSymbols(symTable: list>) lnumMap->extend([{}, {}]) for s in syms text->add(' ' .. s.name) - lnumMap->add({'lnum': s.lnum, 'col': s.col}) + lnumMap->add({lnum: s.lnum, col: s.col}) endfor endfor append(line('$'), text) - w:lsp_info = {'filename': fname, 'data': lnumMap} + w:lsp_info = {filename: fname, data: lnumMap} :nnoremap q :quit :nnoremap :call handlers#jumpToSymbol() :setlocal nomodifiable @@ -515,7 +515,7 @@ def s:applyTextEdits(bnr: number, text_edits: list>): void endif bnr->setbufvar('&buflisted', v:true) - var start_line: number = 4294967295 # 2 ^ 32 + var start_line: number = 4294967295 # 2 ^ 32 var finish_line: number = -1 var updated_edits: list> = [] var start_row: number @@ -533,9 +533,9 @@ def s:applyTextEdits(bnr: number, text_edits: list>): void start_line = [e.range.start.line, start_line]->min() finish_line = [e.range.end.line, finish_line]->max() - updated_edits->add({'A': [start_row, start_col], - 'B': [end_row, end_col], - 'lines': e.newText->split("\n", v:true)}) + updated_edits->add({A: [start_row, start_col], + B: [end_row, end_col], + lines: e.newText->split("\n", v:true)}) endfor # Reverse sort the edit operations by descending line and column numbers so @@ -576,7 +576,7 @@ def s:applyTextEdits(bnr: number, text_edits: list>): void # lines. var dellastline: bool = v:false if start_line == 0 && bnr->getbufinfo()[0].linecount == 1 && - bnr->getbufline(1)[0] == '' + bnr->getbufline(1)[0] == '' dellastline = v:true endif @@ -823,7 +823,7 @@ def s:processApplyEditReq(lspserver: dict, request: dict) endif s:applyWorkspaceEdit(workspaceEditParams.edit) # TODO: Need to return the proper result of the edit operation - lspserver.sendResponse(request, {'applied': v:true}, v:null) + lspserver.sendResponse(request, {applied: v:true}, v:null) enddef # process a request message from the server @@ -880,15 +880,15 @@ export def ProcessMessages(lspserver: dict): void lspserver.requests->remove(string(msg.id)) if msg->has_key('result') - lspserver.processReply(req, msg) + lspserver.processReply(req, msg) else # request failed - var emsg: string = msg.error.message + var emsg: string = msg.error.message emsg ..= ', code = ' .. msg.code - if msg.error->has_key('data') - emsg = emsg .. ', data = ' .. string(msg.error.data) - endif - ErrMsg("Error: request " .. req.method .. " failed (" .. emsg .. ")") + if msg.error->has_key('data') + emsg = emsg .. ', data = ' .. string(msg.error.data) + endif + ErrMsg("Error: request " .. req.method .. " failed (" .. emsg .. ")") endif elseif msg->has_key('id') # request message from the server @@ -902,3 +902,4 @@ export def ProcessMessages(lspserver: dict): void endwhile enddef +# vim: shiftwidth=2 softtabstop=2 diff --git a/autoload/lsp.vim b/autoload/lsp.vim index e93007f..95e41df 100644 --- a/autoload/lsp.vim +++ b/autoload/lsp.vim @@ -292,11 +292,11 @@ def lsp#addServer(serverList: list>) s:lspAddServer(server.filetype, lspserver) elseif type(server.filetype) == v:t_list for ftype in server.filetype - s:lspAddServer(ftype, lspserver) + s:lspAddServer(ftype, lspserver) endfor else - ErrMsg('Error: Unsupported file type information "' .. string(server.filetype) - .. '" in LSP server registration') + ErrMsg('Error: Unsupported file type information "' .. + string(server.filetype) .. '" in LSP server registration') continue endif endfor @@ -371,10 +371,10 @@ def lsp#showDiagnostics(): void for [lnum, diag] in items(lspserver.diagsMap[fname]) text = diag.message->substitute("\n\\+", "\n", 'g') qflist->add({'filename': fname, - 'lnum': diag.range.start.line + 1, - 'col': diag.range.start.character + 1, - 'text': text, - 'type': LspDiagSevToType(diag.severity)}) + 'lnum': diag.range.start.line + 1, + 'col': diag.range.start.character + 1, + 'text': text, + 'type': LspDiagSevToType(diag.severity)}) endfor setqflist([], ' ', {'title': 'Language Server Diagnostics', 'items': qflist}) :copen @@ -413,7 +413,7 @@ def lsp#completeFunc(findstart: number, base: string): any else var count: number = 0 while !complete_check() && lspserver.completePending - && count < 1000 + && count < 1000 sleep 2m count += 1 endwhile diff --git a/autoload/lspserver.vim b/autoload/lspserver.vim index 8340879..12cb8b4 100644 --- a/autoload/lspserver.vim +++ b/autoload/lspserver.vim @@ -36,12 +36,12 @@ def s:startServer(lspserver: dict): number cmd->extend(lspserver.args) var opts = {in_mode: 'raw', - out_mode: 'raw', - err_mode: 'raw', - noblock: 1, - out_cb: function('s:output_cb', [lspserver]), - err_cb: function('s:error_cb', [lspserver]), - exit_cb: function('s:exit_cb', [lspserver])} + out_mode: 'raw', + err_mode: 'raw', + noblock: 1, + out_cb: function('s:output_cb', [lspserver]), + err_cb: function('s:error_cb', [lspserver]), + exit_cb: function('s:exit_cb', [lspserver])} ClearTraceLogs() lspserver.data = '' @@ -348,7 +348,7 @@ enddef def s:gotoDefinition(lspserver: dict): void # Check whether LSP server supports jumping to a definition if !lspserver.caps->has_key('definitionProvider') - || !lspserver.caps.definitionProvider + || !lspserver.caps.definitionProvider ErrMsg("Error: LSP server does not support jumping to a definition") return endif @@ -364,7 +364,7 @@ enddef def s:gotoDeclaration(lspserver: dict): void # Check whether LSP server supports jumping to a declaration if !lspserver.caps->has_key('declarationProvider') - || !lspserver.caps.declarationProvider + || !lspserver.caps.declarationProvider ErrMsg("Error: LSP server does not support jumping to a declaration") return endif @@ -382,7 +382,7 @@ enddef def s:gotoTypeDef(lspserver: dict): void # Check whether LSP server supports jumping to a type definition if !lspserver.caps->has_key('typeDefinitionProvider') - || !lspserver.caps.typeDefinitionProvider + || !lspserver.caps.typeDefinitionProvider ErrMsg("Error: LSP server does not support jumping to a type definition") return endif @@ -400,7 +400,7 @@ enddef def s:gotoImplementation(lspserver: dict): void # Check whether LSP server supports jumping to a implementation if !lspserver.caps->has_key('implementationProvider') - || !lspserver.caps.implementationProvider + || !lspserver.caps.implementationProvider ErrMsg("Error: LSP server does not support jumping to an implementation") return endif @@ -449,7 +449,7 @@ enddef def s:hover(lspserver: dict): void # Check whether LSP server supports getting hover information if !lspserver.caps->has_key('hoverProvider') - || !lspserver.caps.hoverProvider + || !lspserver.caps.hoverProvider return endif @@ -463,7 +463,7 @@ enddef def s:showReferences(lspserver: dict): void # Check whether LSP server supports getting reference information if !lspserver.caps->has_key('referencesProvider') - || !lspserver.caps.referencesProvider + || !lspserver.caps.referencesProvider ErrMsg("Error: LSP server does not support showing references") return endif @@ -480,7 +480,7 @@ enddef def s:docHighlight(lspserver: dict): void # Check whether LSP server supports getting highlight information if !lspserver.caps->has_key('documentHighlightProvider') - || !lspserver.caps.documentHighlightProvider + || !lspserver.caps.documentHighlightProvider ErrMsg("Error: LSP server does not support document highlight") return endif @@ -495,7 +495,7 @@ enddef def s:showDocSymbols(lspserver: dict, fname: string): void # Check whether LSP server supports getting document symbol information if !lspserver.caps->has_key('documentSymbolProvider') - || !lspserver.caps.documentSymbolProvider + || !lspserver.caps.documentSymbolProvider ErrMsg("Error: LSP server does not support getting list of symbols") return endif @@ -511,7 +511,7 @@ def s:textDocFormat(lspserver: dict, fname: string, rangeFormat: bool, start_lnum: number, end_lnum: number) # Check whether LSP server supports formatting documents if !lspserver.caps->has_key('documentFormattingProvider') - || !lspserver.caps.documentFormattingProvider + || !lspserver.caps.documentFormattingProvider ErrMsg("Error: LSP server does not support formatting documents") return endif @@ -554,7 +554,7 @@ enddef def s:renameSymbol(lspserver: dict, newName: string) # Check whether LSP server supports rename operation if !lspserver.caps->has_key('renameProvider') - || !lspserver.caps.renameProvider + || !lspserver.caps.renameProvider ErrMsg("Error: LSP server does not support rename operation") return endif @@ -570,7 +570,7 @@ enddef def s:codeAction(lspserver: dict, fname_arg: string) # Check whether LSP server supports code action operation if !lspserver.caps->has_key('codeActionProvider') - || !lspserver.caps.codeActionProvider + || !lspserver.caps.codeActionProvider ErrMsg("Error: LSP server does not support code action operation") return endif @@ -598,7 +598,7 @@ enddef def s:workspaceSymbols(lspserver: dict, sym: string) # Check whether the LSP server supports listing workspace symbols if !lspserver.caps->has_key('workspaceSymbolProvider') - || !lspserver.caps.workspaceSymbolProvider + || !lspserver.caps.workspaceSymbolProvider ErrMsg("Error: LSP server does not support listing workspace symbols") return endif diff --git a/autoload/util.vim b/autoload/util.vim index 7a75046..fd63aab 100644 --- a/autoload/util.vim +++ b/autoload/util.vim @@ -49,7 +49,7 @@ enddef export def LspUriToFile(uri: string): string # Replace all the %xx numbers (e.g. %20 for space) in the URI to character var uri_decoded: string = substitute(uri, '%\(\x\x\)', - '\=nr2char(str2nr(submatch(1), 16))', 'g') + '\=nr2char(str2nr(submatch(1), 16))', 'g') # File URIs on MS-Windows start with file:///[a-zA-Z]:' if uri_decoded =~? '^file:///\a:' @@ -78,7 +78,7 @@ export def LspFileToUri(fname: string): string endif uri = uri->substitute('\([^A-Za-z0-9-._~:/]\)', - '\=printf("%%%02x", char2nr(submatch(1)))', 'g') + '\=printf("%%%02x", char2nr(submatch(1)))', 'g') if on_windows uri = 'file:///' .. uri @@ -89,3 +89,4 @@ export def LspFileToUri(fname: string): string return uri enddef +# vim: shiftwidth=2 softtabstop=2 -- 2.48.1