summaryrefslogtreecommitdiff
path: root/.config/nvim/lua/lsp_conf.lua
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2022-10-18 11:06:28 +0200
committerSanto Cariotti <santo@dcariotti.me>2022-10-18 11:06:28 +0200
commitc3867d7cbbfd45bf3938d9d9967a6751f7225d7e (patch)
tree43ee560d398bb9336b3aab920c5e0adf3782290e /.config/nvim/lua/lsp_conf.lua
parentfcd2ac5dd707d0d9a96be5e5ebaaaa11595e5dba (diff)
nvim: use cmp instead of coq
Diffstat (limited to '.config/nvim/lua/lsp_conf.lua')
-rw-r--r--.config/nvim/lua/lsp_conf.lua50
1 files changed, 48 insertions, 2 deletions
diff --git a/.config/nvim/lua/lsp_conf.lua b/.config/nvim/lua/lsp_conf.lua
index a64839e..36b6735 100644
--- a/.config/nvim/lua/lsp_conf.lua
+++ b/.config/nvim/lua/lsp_conf.lua
@@ -1,5 +1,8 @@
local nvim_lsp = require('lspconfig')
-local coq = require('coq')
+-- local coq = require('coq')
+--
+
+local capabilities = require("cmp_nvim_lsp").default_capabilities()
local null_ls = require("null-ls")
local trouble = require("trouble")
@@ -48,6 +51,7 @@ local common_on_attach = function(client, bufnr)
-- Mappings.
vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", opts)
+ vim.api.nvim_buf_set_keymap(bufnr, "n", "ga", "<cmd>lua vim.lsp.buf.code_action()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>", opts)
vim.api.nvim_buf_set_keymap(bufnr, "n", "<space>e", "<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>", opts)
@@ -57,7 +61,7 @@ end
local servers = { 'pyright', 'rust_analyzer', 'tsserver', 'clangd' }
-local capabilities = vim.lsp.protocol.make_client_capabilities()
+-- local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.offsetEncoding = { "utf-16" }
for _, lsp in ipairs(servers) do
nvim_lsp[lsp].setup {
@@ -75,3 +79,45 @@ trouble.setup({
auto_open = false
})
+
+-- nvim-cmp setup
+local luasnip = require 'luasnip'
+local cmp = require 'cmp'
+cmp.setup {
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+ ['<C-d>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-f>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<CR>'] = cmp.mapping.confirm {
+ behavior = cmp.ConfirmBehavior.Replace,
+ select = true,
+ },
+ ['<Tab>'] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+ ['<S-Tab>'] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_prev_item()
+ elseif luasnip.jumpable(-1) then
+ luasnip.jump(-1)
+ else
+ fallback()
+ end
+ end, { 'i', 's' }),
+ }),
+ sources = {
+ { name = 'nvim_lsp' },
+ { name = 'luasnip' },
+ },
+}