nvim: change lsp config and add telecope shortcuts

This commit is contained in:
Daniel Meiburg 2023-02-26 00:19:17 +01:00
parent 139853bed9
commit 927806a627
Signed by: dm
GPG Key ID: E5827ECFFE0AA4F2
4 changed files with 110 additions and 81 deletions

View File

@ -1,23 +1,99 @@
local lsp = require('lsp-zero').preset({ local use = require('packer').use
name = 'recommended',
set_lsp_keymaps = true,
manage_nvim_cmp = true,
suggest_lsp_servers = false,
sign_icons = {
error = 'E',
warn = 'W',
hint = 'H',
info = 'I'
}
})
-- (Optional) Configure lua language server for neovim local lspconfig = require('lspconfig')
lsp.nvim_workspace()
lsp.setup_nvim_cmp({ -- luasnip setup
mapping = lsp.defaults.cmp_mappings({ local luasnip = require 'luasnip'
['<CR>'] = vim.NIL,
})
})
lsp.setup() -- nvim-cmp setup
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' },
},
}
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<leader>d', vim.diagnostic.setloclist, opts)
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(client, bufnr)
-- Enable completion triggered by <c-x><c-o>
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
-- Mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local bufopts = { noremap=true, silent=true, buffer=bufnr }
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, bufopts)
vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', '<leader>ca', vim.lsp.buf.code_action, bufopts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
vim.keymap.set('n', '<leader>f', vim.lsp.buf.formatting, bufopts)
-- vim.api.nvim_create_autocmd(
-- { "BufWrite" }, {command = "lua vim.lsp.buf.formatting()"}
-- )
end
lspconfig.pylsp.setup {
capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()),
on_attach = on_attach,
settings = {
pylsp = {
plugins = {
jedi_completion = {
include_params = true,
},
},
},
},
}
require('lspconfig')['rust_analyzer'].setup{
capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()),
on_attach = on_attach,
-- Server-specific settings...
settings = {
["rust-analyzer"] = {}
}
}

View File

@ -1,6 +1,11 @@
local builtin = require('telescope.builtin') local builtin = require('telescope.builtin')
require('telescope').load_extension('fzf') require('telescope').load_extension('fzf')
vim.keymap.set('n', '<leader>ff', builtin.find_files, {}) vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
vim.keymap.set('n', '<C-p>', builtin.git_files, {}) vim.keymap.set('n', '<leader>fg', builtin.git_files, {})
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {}) vim.keymap.set('n', '<leader>fr', builtin.live_grep, {})
vim.keymap.set('n', '<leader>fb', builtin.buffers, {}) vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
vim.keymap.set('n', '<leader>fs', builtin.grep_string, {})
vim.keymap.set('n', '<leader>fl', builtin.lsp_references, {})
vim.keymap.set('n', '<leader>fd', builtin.diagnostics, {})
vim.keymap.set('n', '<leader>fo', builtin.lsp_document_symbols, {})
vim.keymap.set('n', '<leader>ft', builtin.treesitter, {})

View File

@ -8,7 +8,7 @@ return require('packer').startup(function(use)
requires = { requires = {
{'nvim-lua/plenary.nvim'}, {'nvim-lua/plenary.nvim'},
{'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }} {'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }}
} }
use({ use({
'overcache/NeoSolarized', 'overcache/NeoSolarized',
config = function() config = function()
@ -18,26 +18,9 @@ return require('packer').startup(function(use)
use ('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'}) use ('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'})
use 'tpope/vim-fugitive' use 'tpope/vim-fugitive'
use { use 'neovim/nvim-lspconfig'
'VonHeikemen/lsp-zero.nvim', use 'hrsh7th/nvim-cmp' -- Autocompletion plugin
branch = 'v1.x', use 'hrsh7th/cmp-nvim-lsp' -- LSP source for nvim-cmp
requires = { use 'saadparwaiz1/cmp_luasnip' -- Snippets source for nvim-cmp
-- LSP Support use 'L3MON4D3/LuaSnip' -- Snippets plugin
{'neovim/nvim-lspconfig'}, -- Required end)
{'williamboman/mason.nvim'}, -- Optional
{'williamboman/mason-lspconfig.nvim'}, -- Optional
-- Autocompletion
{'hrsh7th/nvim-cmp'}, -- Required
{'hrsh7th/cmp-nvim-lsp'}, -- Required
{'hrsh7th/cmp-buffer'}, -- Optional
{'hrsh7th/cmp-path'}, -- Optional
{'saadparwaiz1/cmp_luasnip'}, -- Optional
{'hrsh7th/cmp-nvim-lua'}, -- Optional
-- Snippets
{'L3MON4D3/LuaSnip'}, -- Required
{'rafamadriz/friendly-snippets'}, -- Optional
}
}
end)

View File

@ -85,51 +85,16 @@ _G.packer_plugins = {
path = "/home/dm/.local/share/nvim/site/pack/packer/start/NeoSolarized", path = "/home/dm/.local/share/nvim/site/pack/packer/start/NeoSolarized",
url = "https://github.com/overcache/NeoSolarized" url = "https://github.com/overcache/NeoSolarized"
}, },
["cmp-buffer"] = {
loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/cmp-buffer",
url = "https://github.com/hrsh7th/cmp-buffer"
},
["cmp-nvim-lsp"] = { ["cmp-nvim-lsp"] = {
loaded = true, loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", path = "/home/dm/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp",
url = "https://github.com/hrsh7th/cmp-nvim-lsp" url = "https://github.com/hrsh7th/cmp-nvim-lsp"
}, },
["cmp-nvim-lua"] = {
loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/cmp-nvim-lua",
url = "https://github.com/hrsh7th/cmp-nvim-lua"
},
["cmp-path"] = {
loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/cmp-path",
url = "https://github.com/hrsh7th/cmp-path"
},
cmp_luasnip = { cmp_luasnip = {
loaded = true, loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/cmp_luasnip", path = "/home/dm/.local/share/nvim/site/pack/packer/start/cmp_luasnip",
url = "https://github.com/saadparwaiz1/cmp_luasnip" url = "https://github.com/saadparwaiz1/cmp_luasnip"
}, },
["friendly-snippets"] = {
loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/friendly-snippets",
url = "https://github.com/rafamadriz/friendly-snippets"
},
["lsp-zero.nvim"] = {
loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/lsp-zero.nvim",
url = "https://github.com/VonHeikemen/lsp-zero.nvim"
},
["mason-lspconfig.nvim"] = {
loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim",
url = "https://github.com/williamboman/mason-lspconfig.nvim"
},
["mason.nvim"] = {
loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/mason.nvim",
url = "https://github.com/williamboman/mason.nvim"
},
["nvim-cmp"] = { ["nvim-cmp"] = {
loaded = true, loaded = true,
path = "/home/dm/.local/share/nvim/site/pack/packer/start/nvim-cmp", path = "/home/dm/.local/share/nvim/site/pack/packer/start/nvim-cmp",