diff options
-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, +} |