From 1195f8eb8e32810f150b0091a6c23749fdecf767 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Tue, 16 Feb 2021 12:29:31 +0100 Subject: [lspc] add option to autostart a language server on WIN_OPEN events --- init.lua | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'init.lua') 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 -- cgit v1.2.3