From 927806a627a820dad60a525c49ac327eaf8983e6 Mon Sep 17 00:00:00 2001 From: Daniel Meiburg Date: Sun, 26 Feb 2023 00:19:17 +0100 Subject: [PATCH] nvim: change lsp config and add telecope shortcuts --- .config/nvim/after/plugin/lsp.lua | 116 ++++++++++++++++++++---- .config/nvim/after/plugin/telescope.lua | 9 +- .config/nvim/lua/plugins.lua | 31 ++----- .config/nvim/plugin/packer_compiled.lua | 35 ------- 4 files changed, 110 insertions(+), 81 deletions(-) diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua index 037c248..d31c8c2 100644 --- a/.config/nvim/after/plugin/lsp.lua +++ b/.config/nvim/after/plugin/lsp.lua @@ -1,23 +1,99 @@ -local lsp = require('lsp-zero').preset({ - name = 'recommended', - set_lsp_keymaps = true, - manage_nvim_cmp = true, - suggest_lsp_servers = false, - sign_icons = { - error = 'E', - warn = 'W', - hint = 'H', - info = 'I' - } -}) +local use = require('packer').use --- (Optional) Configure lua language server for neovim -lsp.nvim_workspace() +local lspconfig = require('lspconfig') -lsp.setup_nvim_cmp({ - mapping = lsp.defaults.cmp_mappings({ - [''] = vim.NIL, - }) -}) +-- luasnip setup +local luasnip = require 'luasnip' -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({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = 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' }), + [''] = 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', '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', '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 + 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', '', vim.lsp.buf.signature_help, bufopts) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) + vim.keymap.set('n', '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"] = {} + } +} diff --git a/.config/nvim/after/plugin/telescope.lua b/.config/nvim/after/plugin/telescope.lua index 8db588e..c5ea680 100644 --- a/.config/nvim/after/plugin/telescope.lua +++ b/.config/nvim/after/plugin/telescope.lua @@ -1,6 +1,11 @@ local builtin = require('telescope.builtin') require('telescope').load_extension('fzf') vim.keymap.set('n', 'ff', builtin.find_files, {}) -vim.keymap.set('n', '', builtin.git_files, {}) -vim.keymap.set('n', 'fg', builtin.live_grep, {}) +vim.keymap.set('n', 'fg', builtin.git_files, {}) +vim.keymap.set('n', 'fr', builtin.live_grep, {}) vim.keymap.set('n', 'fb', builtin.buffers, {}) +vim.keymap.set('n', 'fs', builtin.grep_string, {}) +vim.keymap.set('n', 'fl', builtin.lsp_references, {}) +vim.keymap.set('n', 'fd', builtin.diagnostics, {}) +vim.keymap.set('n', 'fo', builtin.lsp_document_symbols, {}) +vim.keymap.set('n', 'ft', builtin.treesitter, {}) diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua index c72c610..1830407 100644 --- a/.config/nvim/lua/plugins.lua +++ b/.config/nvim/lua/plugins.lua @@ -8,7 +8,7 @@ return require('packer').startup(function(use) requires = { {'nvim-lua/plenary.nvim'}, {'nvim-telescope/telescope-fzf-native.nvim', run = 'make' }} - } + } use({ 'overcache/NeoSolarized', config = function() @@ -18,26 +18,9 @@ return require('packer').startup(function(use) use ('nvim-treesitter/nvim-treesitter', {run = ':TSUpdate'}) use 'tpope/vim-fugitive' - use { - 'VonHeikemen/lsp-zero.nvim', - branch = 'v1.x', - requires = { - -- LSP Support - {'neovim/nvim-lspconfig'}, -- Required - {'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) + use 'neovim/nvim-lspconfig' + use 'hrsh7th/nvim-cmp' -- Autocompletion plugin + use 'hrsh7th/cmp-nvim-lsp' -- LSP source for nvim-cmp + use 'saadparwaiz1/cmp_luasnip' -- Snippets source for nvim-cmp + use 'L3MON4D3/LuaSnip' -- Snippets plugin + end) diff --git a/.config/nvim/plugin/packer_compiled.lua b/.config/nvim/plugin/packer_compiled.lua index 0d81046..566ed55 100644 --- a/.config/nvim/plugin/packer_compiled.lua +++ b/.config/nvim/plugin/packer_compiled.lua @@ -85,51 +85,16 @@ _G.packer_plugins = { path = "/home/dm/.local/share/nvim/site/pack/packer/start/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"] = { loaded = true, path = "/home/dm/.local/share/nvim/site/pack/packer/start/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 = { loaded = true, path = "/home/dm/.local/share/nvim/site/pack/packer/start/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"] = { loaded = true, path = "/home/dm/.local/share/nvim/site/pack/packer/start/nvim-cmp",