# pop the tag stack
var tagstack: dict<any> = gettagstack()
if tagstack.length > 0
- settagstack(winnr(), {'curidx': tagstack.length}, 't')
+ settagstack(winnr(), {curidx: tagstack.length}, 't')
endif
return
endif
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<string> = ['',
- '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
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
# 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
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
endif
var text: string = bnr->getbufline(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)
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
def LspSymbolKindToName(symkind: number): string
var symbolMap: list<string> = ['', '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
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
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 <silent> <buffer> q :quit<CR>
:nnoremap <silent> <buffer> <CR> :call handlers#jumpToSymbol()<CR>
:setlocal nomodifiable
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<dict<any>> = []
var start_row: number
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
# 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
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
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
endwhile
enddef
+# vim: shiftwidth=2 softtabstop=2
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 = ''
def s:gotoDefinition(lspserver: dict<any>): 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
def s:gotoDeclaration(lspserver: dict<any>): 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
def s:gotoTypeDef(lspserver: dict<any>): 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
def s:gotoImplementation(lspserver: dict<any>): 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
def s:hover(lspserver: dict<any>): void
# Check whether LSP server supports getting hover information
if !lspserver.caps->has_key('hoverProvider')
- || !lspserver.caps.hoverProvider
+ || !lspserver.caps.hoverProvider
return
endif
def s:showReferences(lspserver: dict<any>): 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
def s:docHighlight(lspserver: dict<any>): 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
def s:showDocSymbols(lspserver: dict<any>, 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
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
def s:renameSymbol(lspserver: dict<any>, 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
def s:codeAction(lspserver: dict<any>, 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
def s:workspaceSymbols(lspserver: dict<any>, 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