From: Yegappan Lakshmanan Date: Sun, 20 Dec 2020 00:33:51 +0000 (-0800) Subject: Add support for registering LSP servers using a List of dicts X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=c1362035d2713637c6f7c00c06b4ce7fb37c2de8;p=vim-lsp.git Add support for registering LSP servers using a List of dicts --- diff --git a/autoload/lsp.vim b/autoload/lsp.vim index 0648410..8770c77 100644 --- a/autoload/lsp.vim +++ b/autoload/lsp.vim @@ -725,20 +725,34 @@ def lsp#stop_all_servers() endfor enddef -def lsp#add_server(ftype: string, serverpath: string, args: list) - var sinfo = { - 'path': serverpath, - 'args': args, - 'running': v:false, - 'job': v:none, - 'data': '', - 'nextID': 1, - 'caps': {}, - 'requests': {}, # outstanding LSP requests - 'diags': {}, - 'completePending': v:false - } - lsp_servers->extend({[ftype]: sinfo}) +def lsp#addServer(serverList: list>) + var sinfo: dict + for server in serverList + if !server->has_key('filetype') || !server->has_key('path') || !server->has_key('args') + echomsg 'Error: LSP server information is missing filetype or path or args' + continue + endif + sinfo.ftype = server.filetype + sinfo.path = server.path + if !file_readable(sinfo.path) + echomsg 'Error: LSP server ' .. sinfo.path .. ' is not found' + continue + endif + sinfo.args = server.args + if type(sinfo.args) != v:t_list + echomsg 'Error: Arguments for LSP server ' .. sinfo.path .. ' is not a List' + continue + endif + sinfo.running = v:false + sinfo.job = v:none + sinfo.data = '' + sinfo.nextID = 1 + sinfo.caps = {} + sinfo.requests = {} + sinfo.diags = {} + sinfo.completePending = v:false + lsp_servers->extend({[sinfo.ftype]: sinfo}) + endfor enddef def lsp#showServers()