1
0
Fork 0

fix: improve nvim lsp usage

Signed-off-by: Lucas Sta Maria <lucas@priime.dev>
This commit is contained in:
Lucas Sta Maria 2022-08-10 23:09:13 -04:00
parent 4401053898
commit e9df63da9c
No known key found for this signature in database
GPG key ID: F07FB16A826E3B47
5 changed files with 96 additions and 25 deletions

View file

@ -29,6 +29,7 @@ opt("updatetime", 100)
opt("mouse", "a")
vim.g.mapleader = " "
vim.g.copilot_no_tab_map = true
require("plugins")
require("mappings")

View file

@ -1,3 +0,0 @@
vim.g.coq_settings = {auto_start = true}
local coq = require('coq')
vim.cmd('COQnow')

View file

@ -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({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = 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', '<leader>cD', '<cmd>lua vim.lsp.buf.declaration()<CR>')
key('n', '<leader>cd', '<cmd>lua vim.lsp.buf.definition()<CR>')
key('n', '<leader>ch', '<cmd>lua vim.lsp.buf.hover()<CR>')
key('n', '<leader>cp', '<cmd>Lspsaga preview_definition<CR>')
key('n', '<leader>ch', '<cmd>Lspsaga hover_doc<CR>')
key('n', '<leader>ci', '<cmd>lua vim.lsp.buf.implementation()<CR>')
key('n', '<leader>sh', '<cmd>lua vim.lsp.buf.signature_help()<CR>')
key('n', '<leader>sh', '<cmd>Lspsaga signature_help<CR>')
key('n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>')
key('n', '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>')
key('n', '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>')
key('n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>')
key('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>')
key('n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>')
key('n', '<leader>ca', '<cmd>Lspsaga code_action<CR>')
key('n', '<leader>cr', '<cmd>lua vim.lsp.buf.references()<CR>')
key('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>')
key('n', '<leader>cs', '<cmd>lua vim.diagnostic.open_float()<CR>')
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()

View file

@ -20,3 +20,6 @@ map("n", "<leader>op", ":NvimTreeToggle<CR>")
map("n", "<leader>to", ":Telescope<CR>")
map("n", "<leader>tf", ":Telescope find_files<CR>")
map("n", "<leader>tg", ":Telescope live_grep<CR>")
-- copilot
map('i', '<C-a>', 'copilot#Accept("<CR>")', {expr=true, silent=true})

View file

@ -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,
}