diff options
| author | Chris <[email protected]> | 2021-03-17 20:32:52 -0400 | 
|---|---|---|
| committer | Chris <[email protected]> | 2021-03-17 20:32:52 -0400 | 
| commit | 6ed2437edbbc49f03df1023f4dae723cc7ba77d3 (patch) | |
| tree | d0b3cf04722baeb9ea042be98af38d9c56c1d292 | |
| parent | 32669553598a8c8b36b2c1884744fee2363b4120 (diff) | |
new language servers and smart document highlighting
| -rw-r--r-- | README.md | 13 | ||||
| -rw-r--r-- | init.lua | 5 | ||||
| -rw-r--r-- | lua/lsp/bash-ls.lua | 2 | ||||
| -rw-r--r-- | lua/lsp/css-ls.lua | 2 | ||||
| -rw-r--r-- | lua/lsp/docker-ls.lua | 2 | ||||
| -rw-r--r-- | lua/lsp/graphql-ls.lua | 2 | ||||
| -rw-r--r-- | lua/lsp/html-ls.lua | 8 | ||||
| -rw-r--r-- | lua/lsp/init.lua | 28 | ||||
| -rw-r--r-- | lua/lsp/java-ls.lua | 1 | ||||
| -rw-r--r-- | lua/lsp/js-ts-ls.lua | 2 | ||||
| -rw-r--r-- | lua/lsp/json-ls.lua | 1 | ||||
| -rw-r--r-- | lua/lsp/lua-ls.lua | 1 | ||||
| -rw-r--r-- | lua/lsp/python-ls.lua | 4 | ||||
| -rw-r--r-- | lua/lsp/vim-ls.lua | 2 | ||||
| -rw-r--r-- | lua/lsp/yaml-ls.lua | 4 | 
15 files changed, 68 insertions, 9 deletions
| @@ -4,7 +4,7 @@ If you are looking for my old configs checkout the two snapshot branches on this  ## Install in one command -**WARNING** Still very experimental will not woek without some configuation +**WARNING** Still very experimental will not work without some configuation  ```bash  bash <(curl -s https://raw.githubusercontent.com/ChristianChiarulli/nvcode/master/utils/installer/install-nv-code.sh) @@ -42,14 +42,22 @@ or if you are using this config alongside your own:  $HOME/.config/nvim/lua/nv-vscode/init.vim  ``` +## efm server is slow on close + +Install the latest with: + +``` +go get github.com/mattn/efm-langserver@HEAD +``` +  ## TODO  **HIGH PRIORITY**  - formatting using efm server for python -- formatting using efm server for lua  - formatting using efm server for prettier/eslint  - learn what opt is  - better install script +- learn nvim-dap in depth  - snippet support  **LOW PRIORITY** @@ -67,4 +75,3 @@ $HOME/.config/nvim/lua/nv-vscode/init.vim  - get logo  - configure neogit  - toggle virtual text diagnostics -- learn nvim-dap in depth @@ -46,5 +46,10 @@ else    require('lsp.python-ls')    require('lsp.json-ls')    require('lsp.yaml-ls') +  require('lsp.vim-ls') +  require('lsp.graphql-ls') +  require('lsp.css-ls') +  require('lsp.docker-ls') +  require('lsp.html-ls')  end diff --git a/lua/lsp/bash-ls.lua b/lua/lsp/bash-ls.lua index 8be0383a..723f71ca 100644 --- a/lua/lsp/bash-ls.lua +++ b/lua/lsp/bash-ls.lua @@ -1,2 +1,2 @@  -- npm i -g bash-language-server -require'lspconfig'.bashls.setup{} +require'lspconfig'.bashls.setup {on_attach = require'lsp'.common_on_attach} diff --git a/lua/lsp/css-ls.lua b/lua/lsp/css-ls.lua new file mode 100644 index 00000000..0da8868d --- /dev/null +++ b/lua/lsp/css-ls.lua @@ -0,0 +1,2 @@ +-- npm install -g vscode-css-languageserver-bin +require'lspconfig'.cssls.setup {on_attach = require'lsp'.common_on_attach} diff --git a/lua/lsp/docker-ls.lua b/lua/lsp/docker-ls.lua new file mode 100644 index 00000000..96a6babb --- /dev/null +++ b/lua/lsp/docker-ls.lua @@ -0,0 +1,2 @@ +-- npm install -g dockerfile-language-server-nodejs +require'lspconfig'.dockerls.setup {on_attach = require'lsp'.common_on_attach} diff --git a/lua/lsp/graphql-ls.lua b/lua/lsp/graphql-ls.lua new file mode 100644 index 00000000..0bd97ed5 --- /dev/null +++ b/lua/lsp/graphql-ls.lua @@ -0,0 +1,2 @@ +-- npm install -g graphql-language-service-cli +require'lspconfig'.graphql.setup {on_attach = require'lsp'.common_on_attach} diff --git a/lua/lsp/html-ls.lua b/lua/lsp/html-ls.lua new file mode 100644 index 00000000..8a13abdb --- /dev/null +++ b/lua/lsp/html-ls.lua @@ -0,0 +1,8 @@ +-- npm install -g vscode-html-languageserver-bin +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true + +require'lspconfig'.html.setup { +    on_attach = require'lsp'.common_on_attach, +    capabilities = capabilities +} diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index 7ae6bab3..6b42f856 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -30,8 +30,7 @@ vim.cmd('nnoremap <silent> K :Lspsaga hover_doc<CR>')  vim.cmd('nnoremap <silent> <C-p> :Lspsaga diagnostic_jump_prev<CR>')  vim.cmd('nnoremap <silent> <C-n> :Lspsaga diagnostic_jump_next<CR>')  -- scroll down hover doc or scroll in definition preview -vim.cmd( -    'nnoremap <silent> <C-f> <cmd>lua require(\'lspsaga.action\').smart_scroll_with_saga(1)<CR>') +vim.cmd('nnoremap <silent> <C-f> <cmd>lua require(\'lspsaga.action\').smart_scroll_with_saga(1)<CR>')  -- scroll up hover doc  vim.cmd(      'nnoremap <silent> <C-b> <cmd>lua require(\'lspsaga.action\').smart_scroll_with_saga(-1)<CR>') @@ -42,3 +41,28 @@ autocmd BufWritePre *.jsx lua vim.lsp.buf.formatting_sync(nil, 100)  autocmd BufWritePre *.lua lua vim.lsp.buf.formatting_sync(nil, 100) ]]  -- Java  -- autocmd FileType java nnoremap ca <Cmd>lua require('jdtls').code_action()<CR> + +local lsp_config = {} + +function lsp_config.common_on_attach(client, bufnr) + +    -- Set autocommands conditional on server_capabilities +    if client.resolved_capabilities.document_highlight then +        vim.api.nvim_exec([[ +      hi LspReferenceRead cterm=bold ctermbg=red guibg=#464646 +      hi LspReferenceText cterm=bold ctermbg=red guibg=#464646 +      hi LspReferenceWrite cterm=bold ctermbg=red guibg=#464646 +      augroup lsp_document_highlight +        autocmd! * <buffer> +        autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight() +        autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references() +      augroup END +    ]], false) +    end +end + +-- Use a loop to conveniently both setup defined servers +-- and map buffer local keybindings when the language server attaches +-- local servers = {"pyright", "tsserver"} +-- for _, lsp in ipairs(servers) do nvim_lsp[lsp].setup {on_attach = on_attach} end +return lsp_config diff --git a/lua/lsp/java-ls.lua b/lua/lsp/java-ls.lua index 31f9744d..d3dcb9d9 100644 --- a/lua/lsp/java-ls.lua +++ b/lua/lsp/java-ls.lua @@ -13,6 +13,7 @@ else      print("Unsupported system")  end  require('jdtls').start_or_attach({ +    on_attach = require'lsp'.common_on_attach,      cmd = {JAVA_LS_EXECUTABLE},      root_dir = require('jdtls.setup').find_root({'gradle.build', 'pom.xml'})  }) diff --git a/lua/lsp/js-ts-ls.lua b/lua/lsp/js-ts-ls.lua index 16b430f4..0c4a02e3 100644 --- a/lua/lsp/js-ts-ls.lua +++ b/lua/lsp/js-ts-ls.lua @@ -7,4 +7,4 @@  -- require'completion'.on_attach(client)  -- require'illuminate'.on_attach(client)  -- end -require'lspconfig'.tsserver.setup {} +require'lspconfig'.tsserver.setup {on_attach = require'lsp'.common_on_attach} diff --git a/lua/lsp/json-ls.lua b/lua/lsp/json-ls.lua index d13fed3f..57c13224 100644 --- a/lua/lsp/json-ls.lua +++ b/lua/lsp/json-ls.lua @@ -1,5 +1,6 @@  -- npm install -g vscode-json-languageserver  require'lspconfig'.jsonls.setup { +    on_attach = require'lsp'.common_on_attach,      commands = {        Format = {          function() diff --git a/lua/lsp/lua-ls.lua b/lua/lsp/lua-ls.lua index ef0e599e..00032b19 100644 --- a/lua/lsp/lua-ls.lua +++ b/lua/lsp/lua-ls.lua @@ -20,6 +20,7 @@ end  require'lspconfig'.sumneko_lua.setup {      cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"}, +    on_attach = require'lsp'.common_on_attach,      settings = {          Lua = {              runtime = { diff --git a/lua/lsp/python-ls.lua b/lua/lsp/python-ls.lua index 11eeef91..19de234a 100644 --- a/lua/lsp/python-ls.lua +++ b/lua/lsp/python-ls.lua @@ -1,2 +1,4 @@  -- npm i -g pyright -require'lspconfig'.pyright.setup{} +require'lspconfig'.pyright.setup{ +    on_attach = require'lsp'.common_on_attach, +} diff --git a/lua/lsp/vim-ls.lua b/lua/lsp/vim-ls.lua new file mode 100644 index 00000000..f2dcb79b --- /dev/null +++ b/lua/lsp/vim-ls.lua @@ -0,0 +1,2 @@ +-- npm install -g vim-language-server +require'lspconfig'.vimls.setup {on_attach = require'lsp'.common_on_attach} diff --git a/lua/lsp/yaml-ls.lua b/lua/lsp/yaml-ls.lua index 904f20ea..e611572b 100644 --- a/lua/lsp/yaml-ls.lua +++ b/lua/lsp/yaml-ls.lua @@ -1,2 +1,4 @@  -- npm install -g yaml-language-server -require'lspconfig'.yamlls.setup{} +require'lspconfig'.yamlls.setup{ +    -- on_attach = require'lsp'.common_on_attach, +} | 
