From 4472bf76dc5d9fc50638cb2fb259587a606a60c8 Mon Sep 17 00:00:00 2001 From: Felix Tenley Date: Wed, 4 Aug 2021 22:21:44 +0200 Subject: [PATCH] feat(neovim): update config --- home/editors/lsp.nix | 5 ++- home/editors/neovim/default.nix | 8 +++- home/editors/neovim/init.vim | 3 ++ home/editors/neovim/kitty.vim | 6 --- home/editors/neovim/lsp/lsp.lua | 78 ++++++++++++++++++++++++++------- home/editors/neovim/lsp/lsp.vim | 4 ++ 6 files changed, 78 insertions(+), 26 deletions(-) delete mode 100644 home/editors/neovim/kitty.vim diff --git a/home/editors/lsp.nix b/home/editors/lsp.nix index cd980c5..1b7e05c 100644 --- a/home/editors/lsp.nix +++ b/home/editors/lsp.nix @@ -6,7 +6,7 @@ omnisharp-roslyn rnix-lsp terraform-ls - python3Packages.python-language-server + python3Packages.python-lsp-server nodePackages.bash-language-server nodePackages.vim-language-server nodePackages.yaml-language-server @@ -17,8 +17,9 @@ nodePackages.dockerfile-language-server-nodejs haskellPackages.haskell-language-server nodePackages.diagnostic-languageserver + rust-analyzer - # linters + # linters & formatters nodePackages.eslint # nodePackages.stylelint nodePackages.prettier diff --git a/home/editors/neovim/default.nix b/home/editors/neovim/default.nix index b685dbc..f87202e 100644 --- a/home/editors/neovim/default.nix +++ b/home/editors/neovim/default.nix @@ -11,7 +11,6 @@ in { programs.neovim = { enable = true; - package = pkgs.neovim-nightly; viAlias = true; vimAlias = true; plugins = with pkgs.vimPlugins; [ @@ -31,10 +30,11 @@ in { plenary-nvim gitsigns-nvim vim-test - auto-pairs + nvim-autopairs camelcasemotion wmgraphviz-vim nvim-compe + vim-vsnip (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) nvim-treesitter-context @@ -43,7 +43,11 @@ in { nvim-ts-autotag nvim-ts-context-commentstring + # lsp nvim-lspconfig + nvim-lightbulb + + # dap # nvim-dap # nvim-dap-virtual-text diff --git a/home/editors/neovim/init.vim b/home/editors/neovim/init.vim index 70e0270..d96c6cc 100644 --- a/home/editors/neovim/init.vim +++ b/home/editors/neovim/init.vim @@ -6,6 +6,9 @@ set smartcase set termguicolors set timeoutlen=500 +" reduce CursorHold delay +set updatetime=500 + let g:nvcode_termcolors=256 syntax on colorscheme nvcode diff --git a/home/editors/neovim/kitty.vim b/home/editors/neovim/kitty.vim deleted file mode 100644 index 088453c..0000000 --- a/home/editors/neovim/kitty.vim +++ /dev/null @@ -1,6 +0,0 @@ -let g:kitty_navigator_no_mappings = 1 - -nnoremap {Left-Mapping} :KittyNavigateLeft -nnoremap {Down-Mapping} :KittyNavigateDown -nnoremap {Up-Mapping} :KittyNavigateUp -nnoremap {Right-Mapping} :KittyNavigateRight diff --git a/home/editors/neovim/lsp/lsp.lua b/home/editors/neovim/lsp/lsp.lua index b1d8710..df153d3 100644 --- a/home/editors/neovim/lsp/lsp.lua +++ b/home/editors/neovim/lsp/lsp.lua @@ -1,32 +1,52 @@ local config = require'lspconfig' +local pid = vim.fn.getpid() + +-- lightbulb +vim.cmd [[autocmd CursorHold,CursorHoldI * lua require'nvim-lightbulb'.update_lightbulb()]] + +local on_attach = function(_, bufnr) + -- codelens + vim.api.nvim_command [[autocmd CursorHold,CursorHoldI,InsertLeave lua vim.lsp.codelens.refresh()]] + vim.api.nvim_buf_set_keymap(bufnr, "n", "l", "lua vim.lsp.codelens.run()", {silent = true;}) +end + -- format on save local diagnosticls_on_attach = function(_, bufnr) + on_attach(_, bufnr) vim.api.nvim_command( "au BufWritePre lua vim.lsp.buf.formatting_seq_sync(nil, nil, { 'tsserver', 'diagnosticls' })") end -local pid = vim.fn.getpid() +-- enable lsp snippets for nvim-compe +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true +local servers = { + "bashls", + "jsonls", + "yamlls", + "html", + "cssls", + "dockerls", + "rnix", + "tsserver", + "pylsp", + "terraformls", + "hls", + "rust_analyzer", +} +for _, lsp in ipairs(servers) do + config[lsp].setup { + on_attach = on_attach, + capabilities = capabilities, + } +end -config.bashls.setup{} -config.jsonls.setup{} -config.yamlls.setup{} -config.html.setup{} -config.cssls.setup{} -config.vimls.setup{} -config.dockerls.setup{} -config.rnix.setup{} -config.tsserver.setup{} config.omnisharp.setup{ + capabilities = capabilities, cmd = {"omnisharp", "--languageserver", "--hostPID", tostring(pid)}, } -config.pyls.setup{} -config.terraformls.setup{} -config.hls.setup{} --- based on: https://github.com/mikew/vimrc/blob/master/src/nvim/coc-settings.json --- TODO breaks auto-completion when using with other lsp --- TODO some ts projects are using tsc eslint plugin config.diagnosticls.setup{ on_attach = diagnosticls_on_attach, filetypes = { @@ -148,8 +168,34 @@ config.diagnosticls.setup{ json = {"prettier"}, yaml = {"prettier"}, markdown = {"prettier"}, + nix = {"nixfmt"}, html = {"prettier"}, css = {"stylelint"}, }, }, } + +-- nvim-autoclose & nvim-compe compatibility +local remap = vim.api.nvim_set_keymap +local npairs = require('nvim-autopairs') + +npairs.setup({ + check_ts = true, +}) + +_G.MUtils= {} + +vim.g.completion_confirm_key = "" +MUtils.completion_confirm=function() + if vim.fn.pumvisible() ~= 0 then + if vim.fn.complete_info()["selected"] ~= -1 then + return vim.fn["compe#confirm"](npairs.esc("")) + else + return npairs.esc("") + end + else + return npairs.autopairs_cr() + end +end + +remap('i' , '','v:lua.MUtils.completion_confirm()', {expr = true , noremap = true}) diff --git a/home/editors/neovim/lsp/lsp.vim b/home/editors/neovim/lsp/lsp.vim index d944183..3013783 100644 --- a/home/editors/neovim/lsp/lsp.vim +++ b/home/editors/neovim/lsp/lsp.vim @@ -10,6 +10,7 @@ let g:compe.source = {} let g:compe.source.path = v:true let g:compe.source.calc = v:true let g:compe.source.nvim_lsp = v:true +let g:compe.source.vsnip = v:true inoremap compe#complete() inoremap compe#confirm('') @@ -36,4 +37,7 @@ nnoremap f lua vim.lsp.buf.formatting_seq_sync(nil, nil, nnoremap a lua vim.lsp.buf.code_action() nnoremap r lua vim.lsp.buf.rename() nnoremap d lua vim.lsp.diagnostic.show_line_diagnostics() +nnoremap q lua vim.lsp.diagnostic.set_loclist() +nnoremap [d lua vim.lsp.diagnostic.goto_prev() +nnoremap ]d lua vim.lsp.diagnostic.goto_next()