From e9df63da9cb13a0d70f3a9bfecaeb2a5e36a8e35 Mon Sep 17 00:00:00 2001 From: Lucas Sta Maria Date: Wed, 10 Aug 2022 23:09:13 -0400 Subject: [PATCH] fix: improve nvim lsp usage Signed-off-by: Lucas Sta Maria --- .config/nvim/init.lua | 1 + .config/nvim/lua/completion.lua | 3 - .config/nvim/lua/lsp.lua | 99 ++++++++++++++++++++++++++------- .config/nvim/lua/mappings.lua | 3 + .config/nvim/lua/plugins.lua | 15 ++++- 5 files changed, 96 insertions(+), 25 deletions(-) diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 4d8d311..7fcd4d1 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -29,6 +29,7 @@ opt("updatetime", 100) opt("mouse", "a") vim.g.mapleader = " " +vim.g.copilot_no_tab_map = true require("plugins") require("mappings") diff --git a/.config/nvim/lua/completion.lua b/.config/nvim/lua/completion.lua index 9455cb7..e69de29 100644 --- a/.config/nvim/lua/completion.lua +++ b/.config/nvim/lua/completion.lua @@ -1,3 +0,0 @@ -vim.g.coq_settings = {auto_start = true} -local coq = require('coq') -vim.cmd('COQnow') diff --git a/.config/nvim/lua/lsp.lua b/.config/nvim/lua/lsp.lua index 3852f92..f2a13ba 100644 --- a/.config/nvim/lua/lsp.lua +++ b/.config/nvim/lua/lsp.lua @@ -1,5 +1,60 @@ -local lspconfig = require('lspconfig') +local lspconfig = require("lspconfig") +local saga = require("lspsaga") +local cmp = require("cmp") +cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + end, + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, -- For luasnip users. + }, { + { name = 'buffer' }, + }) + }) + + -- Set configuration for specific filetype. + cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it. + }, { + { name = 'buffer' }, + }) + }) + + -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline('/', { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } + }) + + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }) + }) + + local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) local on_attach = function(client, bufnr) local opts = { noremap = true, silent = true } @@ -18,33 +73,32 @@ local on_attach = function(client, bufnr) -- Mappings key('n', 'cD', 'lua vim.lsp.buf.declaration()') key('n', 'cd', 'lua vim.lsp.buf.definition()') - key('n', 'ch', 'lua vim.lsp.buf.hover()') + key('n', 'cp', 'Lspsaga preview_definition') + key('n', 'ch', 'Lspsaga hover_doc') key('n', 'ci', 'lua vim.lsp.buf.implementation()') - key('n', 'sh', 'lua vim.lsp.buf.signature_help()') + key('n', 'sh', 'Lspsaga signature_help') key('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()') key('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()') key('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))') key('n', 'D', 'lua vim.lsp.buf.type_definition()') key('n', 'rn', 'lua vim.lsp.buf.rename()') - key('n', 'ca', 'lua vim.lsp.buf.code_action()') + key('n', 'ca', 'Lspsaga code_action') key('n', 'cr', 'lua vim.lsp.buf.references()') key('n', 'f', 'lua vim.lsp.buf.formatting()') key('n', 'cs', 'lua vim.diagnostic.open_float()') end -local coq = require('coq') - -lspconfig.ccls.setup(coq.lsp_ensure_capabilities{ +lspconfig.ccls.setup { on_attach = on_attach, capabilities = capabilities, init_options = { cache = { - directory = vim.fn.expand("$HOME/.cache/ccls/") + directory = vim.fn.expand("$HOME/.cache/ccls") } } -}) +} -lspconfig.rust_analyzer.setup(coq.lsp_ensure_capabilities{ +lspconfig.rust_analyzer.setup { on_attach = on_attach, capabilities = capabilities, settings = { @@ -59,24 +113,27 @@ lspconfig.rust_analyzer.setup(coq.lsp_ensure_capabilities{ } } } -}) +} lspconfig.tsserver.setup { on_attach = on_attach, - capabilities = capabilities + capabilities = capabilities, } -lspconfig.tsserver.setup(coq.lsp_ensure_capabilities()) -lspconfig.java_language_server.setup(coq.lsp_ensure_capabilities{ +lspconfig.java_language_server.setup { on_attach = on_attach, capabilities = capabilities, cmd = { "/usr/share/java/java-language-server/lang_server_linux.sh" } -}) - -lspconfig.vuels.setup { - on_attach = on_attach, - capabilities = capabilities } -lspconfig.vuels.setup(coq.lsp_ensure_capabilities()) -lspconfig.racket_langserver.setup {} +lspconfig.racket_langserver.setup { + on_attach = on_attach, + capabilities = capabilities, +} + +lspconfig.ocamllsp.setup { + on_attach = on_attach, + capabilities = capabilities, +} + +saga.init_lsp_saga() diff --git a/.config/nvim/lua/mappings.lua b/.config/nvim/lua/mappings.lua index daaf791..98fb017 100644 --- a/.config/nvim/lua/mappings.lua +++ b/.config/nvim/lua/mappings.lua @@ -20,3 +20,6 @@ map("n", "op", ":NvimTreeToggle") map("n", "to", ":Telescope") map("n", "tf", ":Telescope find_files") map("n", "tg", ":Telescope live_grep") + +-- copilot +map('i', '', 'copilot#Accept("")', {expr=true, silent=true}) diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua index 18fee27..4858907 100644 --- a/.config/nvim/lua/plugins.lua +++ b/.config/nvim/lua/plugins.lua @@ -25,7 +25,14 @@ packer.startup(function() use("akinsho/toggleterm.nvim") -- completion - use{"ms-jpq/coq_nvim",branch='coq'} + use("hrsh7th/cmp-nvim-lsp") + use("hrsh7th/cmp-buffer") + use("hrsh7th/cmp-path") + use("hrsh7th/cmp-cmdline") + use("hrsh7th/nvim-cmp") + use{"glepnir/lspsaga.nvim",branch="main"} + use("github/copilot.vim") + use("L3MON4D3/LuaSnip") -- misc use("davidgranstrom/nvim-markdown-preview") @@ -115,3 +122,9 @@ vim.cmd[[ -- todo-comments require('todo-comments').setup {} + +-- copilot +vim.g.copilot_filetypes = { + ['*'] = false, + ['java'] = true, +}