From 8bd7acf4094a1bbd973aa79e0b852995a07244d9 Mon Sep 17 00:00:00 2001 From: Danielle McLean Date: Thu, 5 Oct 2023 18:27:14 +1100 Subject: [PATCH] Install and configure yegappan/lsp for language support --- config/vim/init.vim | 4 +++ config/vim/lsp.vim | 66 ++++++++++++++++++++++++++++++++++++++++++ config/vim/plugins.vim | 4 +-- 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 config/vim/lsp.vim diff --git a/config/vim/init.vim b/config/vim/init.vim index fa252f6..0c0b52d 100644 --- a/config/vim/init.vim +++ b/config/vim/init.vim @@ -103,3 +103,7 @@ g:mucomplete#can_complete = { omni: (t) => strlen(&l:omnifunc) > 0 && t =~# '\m\k\%(\k\|\.\)$' } } + +set keywordprg=:LspHover + +source $XDG_CONFIG_HOME/vim/lsp.vim diff --git a/config/vim/lsp.vim b/config/vim/lsp.vim new file mode 100644 index 0000000..28aadc6 --- /dev/null +++ b/config/vim/lsp.vim @@ -0,0 +1,66 @@ +vim9script + +final lspServers = [ + { + name: 'dockerfile-langserver', + filetype: 'dockerfile', + path: expand('~/.local/bin/docker-langserver'), + args: ['--stdio'], + install: 'npm install -g dockerfile-language-server-nodejs', + }, + + { + name: 'tilt-lsp', + filetype: 'bzl', + path: '/usr/local/bin/tilt', + args: ['lsp', 'start'], + install: 'brew install tilt', + }, + + { + name: 'typescript-language-server', + filetype: ['javascript', 'typescript'], + path: '/usr/local/bin/typescript-language-server', + args: ['--stdio'], + install: 'brew install typescript-language-server', + }, + + { + name: 'phpactor', + filetype: 'php', + path: expand('~/bin/phpactor'), + args: ['language-server'], + initializationOptions: { + 'language_server_configuration.auto_config': false, + }, + install: 'curl -Lo phpactor https://github.com/phpactor/phpactor/releases/latest/download/phpactor.phar && chmod u+x phpactor && mv phpactor ~/bin' + }, + + { + name: 'pylsp', + filetype: 'python', + path: '/usr/local/bin/pylsp', + args: [], + install: 'brew install python-lsp-server', + }, + + { + name: 'vim-language-server', + filetype: 'vim', + path: expand('~/.local/bin/vim-language-server'), + args: ['--stdio'], + install: 'npm install -g vim-language-server', + }, +] + +final lspOptions = { + aleSupport: true, +} + +autocmd VimEnter * ++once { + # :call is required here because these functions from vim-lsp won't be + # loaded yet when this file is parsed by Vim, so you get a "function not + # found" error if you try to call them the short way. + call LspAddServer(lspServers) + call LspOptionsSet(lspOptions) +} diff --git a/config/vim/plugins.vim b/config/vim/plugins.vim index 4ee833b..c10257f 100644 --- a/config/vim/plugins.vim +++ b/config/vim/plugins.vim @@ -43,8 +43,7 @@ minpac#add('tpope/vim-unimpaired') minpac#add('wincent/loupe') minpac#add('wincent/terminus') minpac#add('w0rp/ale') - -minpac#add('neoclide/coc.nvim', {branch: 'release'}) +minpac#add('yegappan/lsp') minpac#add('vim-airline/vim-airline') minpac#add('vim-airline/vim-airline-themes') @@ -61,7 +60,6 @@ minpac#add('ehamberg/vim-cute-python') minpac#add('Glench/Vim-Jinja2-Syntax') minpac#add('tweekmonster/braceless.vim') -minpac#add('ternjs/tern_for_vim', {do: () => async#job#start(['npm', 'install'], {})}) minpac#add('vito-c/jq.vim') minpac#add('fladson/vim-kitty')