aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2021-02-16 12:29:31 +0100
committerFlorian Fischer <florian.fl.fischer@fau.de>2021-02-16 12:30:34 +0100
commit1195f8eb8e32810f150b0091a6c23749fdecf767 (patch)
tree87b6f6124b1be627d5d02dc618de2bb95cdd3563
parentd3b15082dc5d81dc341e51e17a0723c5e574793e (diff)
downloadvis-lspc-1195f8eb8e32810f150b0091a6c23749fdecf767.tar.gz
vis-lspc-1195f8eb8e32810f150b0091a6c23749fdecf767.zip
[lspc] add option to autostart a language server on WIN_OPEN events
-rw-r--r--init.lua20
1 files changed, 17 insertions, 3 deletions
diff --git a/init.lua b/init.lua
index a84b3b1..bce126e 100644
--- a/init.lua
+++ b/init.lua
@@ -64,6 +64,8 @@ lspc = {
logging = true,
log_file = 'vis-lspc.log',
log = init_logging,
+ -- automatically start a language server when a new window is opened
+ autostart = true,
}
local clangd = {name = 'clangd', cmd = 'clangd'}
@@ -515,15 +517,19 @@ vis:command_register('lspc-shutdown-server', function(argv, _, win)
ls_shutdown_server(ls)
end)
-local function ls_start_server(syntax)
+local function ls_start_server(syntax, quiet)
if lspc.running[syntax] then
- vis:info('Error: Already a language server running for ' .. syntax)
+ if not quiet then
+ vis:info('Error: Already a language server running for ' .. syntax)
+ end
return
end
local ls_conf = lspc.ls_map[syntax]
if not ls_conf then
- vis:info('Error: No language server available for ' .. syntax)
+ if not quiet then
+ vis:info('Error: No language server available for ' .. syntax)
+ end
return
end
@@ -581,6 +587,14 @@ vis:command_register('lspc-start-server', function(argv, _, win)
ls_start_server(argv[1] or win.syntax)
end)
+vis.events.subscribe(vis.events.WIN_OPEN, function(win)
+ if not lspc.autostart then
+ return
+ end
+
+ ls_start_server(win.syntax, true)
+end)
+
local function lspc_method_textDocumentPositionParams(ls, method, win)
-- check if the language server has a provider for this method
if not ls.capabilities[method .. 'Provider'] then