From 74b11aead415d68ca6e7143ef2111adafce5d705 Mon Sep 17 00:00:00 2001 From: Sam Willcocks Date: Thu, 15 Dec 2022 18:42:05 +0000 Subject: [PATCH] vim: Add lsp completion --- home/vim-dev/default.nix | 7 +++++-- home/vim-dev/dev.lua | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/home/vim-dev/default.nix b/home/vim-dev/default.nix index 46a9e7e..9836086 100644 --- a/home/vim-dev/default.nix +++ b/home/vim-dev/default.nix @@ -18,9 +18,12 @@ in { [ # More fancy shit nvim-treesitter - # Language stuff - nvim-lspconfig trouble-nvim + # Language server/completions + nvim-lspconfig + nvim-cmp + cmp-nvim-lsp + # Language specific rust-vim vim-terraform vim-protobuf diff --git a/home/vim-dev/dev.lua b/home/vim-dev/dev.lua index 46157c4..a16c701 100644 --- a/home/vim-dev/dev.lua +++ b/home/vim-dev/dev.lua @@ -9,12 +9,35 @@ local on_attach = function(client, bufnr) vim.api.nvim_buf_set_keymap(bufnr, 'n', 'f', 'lua vim.lsp.buf.formatting()', opts) end --- Enable Language LSPs +-- Completion +local cmp = require'cmp' +cmp.setup({ + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + }), +}, { + { name = 'buffer' }, +}) + +-- Language servers +local capabilities = require('cmp_nvim_lsp').default_capabilities() + require'lspconfig'.gopls.setup{ on_attach = on_attach, + capabilities = capabilities, } require'lspconfig'.pylsp.setup{ on_attach = on_attach, + capabilities = capabilities, handlers = { ["textDocument/publishDiagnostics"] = vim.lsp.with( vim.lsp.diagnostic.on_publish_diagnostics, { @@ -25,21 +48,26 @@ require'lspconfig'.pylsp.setup{ } } require'lspconfig'.rnix.setup{ - on_attach = on_attach + on_attach = on_attach, + capabilities = capabilities, } require'lspconfig'.rust_analyzer.setup{ - on_attach = on_attach + on_attach = on_attach, + capabilities = capabilities, } require'lspconfig'.dhall_lsp_server.setup{ - on_attach = on_attach + on_attach = on_attach, + capabilities = capabilities, } require'lspconfig'.eslint.setup{ - on_attach = on_attach + on_attach = on_attach, + capabilities = capabilities, } -- Configure volar (vuejs language server stuff) in "takeover" mode require'lspconfig'.volar.setup{ + on_attach = on_attach, + capabilities = capabilities, filetypes = {'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue', 'json'}, - on_attach = on_attach } --[[ If we didn't have takeover mode enabled above, we'd want this require'lspconfig'.tsserver.setup{