Compare commits

..

2 commits

Author SHA1 Message Date
Danielle McLean
482e34699d
Add support for lua-language-server 2023-10-09 12:20:18 +11:00
Danielle McLean
4fadab0074
Introduce :LspInstall command 2023-10-09 12:20:02 +11:00

View file

@ -9,6 +9,14 @@ const lspServers = [
install: ['npm', 'install', '-g', 'dockerfile-language-server-nodejs'], install: ['npm', 'install', '-g', 'dockerfile-language-server-nodejs'],
}, },
{
name: 'lua-language-server',
filetype: 'lua',
path: '/usr/local/bin/lua-language-server',
args: [],
install: ['brew', 'install', 'lua-language-server'],
},
{ {
name: 'tilt-lsp', name: 'tilt-lsp',
filetype: 'bzl', filetype: 'bzl',
@ -65,18 +73,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()