fix: improve nvim lsp usage
Signed-off-by: Lucas Sta Maria <lucas@priime.dev>
This commit is contained in:
parent
4401053898
commit
e9df63da9c
5 changed files with 96 additions and 25 deletions
|
@ -29,6 +29,7 @@ opt("updatetime", 100)
|
|||
opt("mouse", "a")
|
||||
|
||||
vim.g.mapleader = " "
|
||||
vim.g.copilot_no_tab_map = true
|
||||
|
||||
require("plugins")
|
||||
require("mappings")
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
vim.g.coq_settings = {auto_start = true}
|
||||
local coq = require('coq')
|
||||
vim.cmd('COQnow')
|
|
@ -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()
|
||||
|
|
|
@ -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})
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue