Introduce :LspInstall command

This commit is contained in:
Danielle McLean 2023-10-09 12:20:02 +11:00
parent 3720e61674
commit 4fadab0074
Signed by: 00dani
GPG key ID: 52C059C3B22A753E

View file

@ -65,18 +65,26 @@ const lspOptions = {
aleSupport: true, aleSupport: true,
} }
command! -nargs=0 -bar LspInstall Install()
export def LazyConfigure(): void export def LazyConfigure(): void
autocmd VimEnter * ++once Configure() autocmd VimEnter * ++once Configure()
enddef enddef
export def Configure(): void export def Configure(): void
g:LspAddServer(lspServers->deepcopy()->filter((_, server) => executable(server.path) == 1)) final installedServers = lspServers->deepcopy()->filter((_, server) => executable(server.path) == 1)
if len(lspServers) != len(installedServers)
echo (len(lspServers) - len(installedServers)) "language servers are configured, but not installed. You may want to run :LspInstall."
endif
g:LspAddServer(installedServers)
g:LspOptionsSet(lspOptions) g:LspOptionsSet(lspOptions)
enddef enddef
export def Install(): void export def Install(): void
# TODO: work out a way nicer approach to automatically installing any # TODO: running all installations in parallel doesn't work super well,
# missing language servers. Maybe use a command or something. # because some package managers use an exclusive lock while they're running.
# Plus you don't get feedback on installation progress. Perhaps use
# term_start() instead, so installs run in series and are visible on screen?
const missing = lspServers->copy() const missing = lspServers->copy()
->filter((_, server) => executable(server.path) == 0) ->filter((_, server) => executable(server.path) == 0)
const jobs = missing->copy() const jobs = missing->copy()