From 45ea8843cbb29f2b0dc84a3201219778293cc714 Mon Sep 17 00:00:00 2001 From: Thies Lennart Alff Date: Fri, 29 Sep 2023 16:15:55 +0200 Subject: [PATCH] do not rely on lsp-zero --- after/plugin/lsp.lua | 111 +++++++++++++++++++++++++------------- lua/lennartalff/remap.lua | 7 +-- 2 files changed, 75 insertions(+), 43 deletions(-) diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua index 83ccf0e..cb0e739 100644 --- a/after/plugin/lsp.lua +++ b/after/plugin/lsp.lua @@ -1,61 +1,96 @@ +local lspconfig = require('lspconfig') +local lsp_defaults = lspconfig.util.default_config + +lsp_defaults.capabilities = vim.tbl_deep_extend( + 'force', + lsp_defaults.capabilities, + require('cmp_nvim_lsp').default_capabilities() +) + +vim.api.nvim_create_autocmd('LspAttach', { + desc = 'LSP actions', + callback = function(event) + local opts = { buffer = event.buf } + vim.keymap.set('n', 'i', 'lua vim.lsp.buf.hover()', opts) + vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + vim.keymap.set('n', 'go', 'lua vim.lsp.buf.type_definition()', opts) + vim.keymap.set('n', 'gr', 'lua vim.lsp.buf.references()', opts) + vim.keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()', opts) + vim.keymap.set('n', 'r', 'lua vim.lsp.buf.rename()', opts) + vim.keymap.set('n', 'f', 'lua vim.lsp.buf.format({async=true})', opts) + vim.keymap.set('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) + vim.keymap.set('n', 'gl', 'lua vim.diagnostic.open_float()', opts) + vim.keymap.set('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) + vim.keymap.set('n', ']d', 'lua vim.diagnostic.goto_next()', opts) + end +}) + +local default_setup = function(server) + lspconfig[server].setup({}) +end + require('mason').setup({ ui = { border = 'rounded' } }) -- Install language servers -require('mason-lspconfig').setup { +require('mason-lspconfig').setup({ ensure_installed = { 'lua_ls', 'clangd', 'pylsp', 'yamlls' - } -} -local lsp = require('lsp-zero').preset({ - manage_nvim_cmp = { - set_sources = 'lsp', - set_basic_mappings = true, - set_extra_mappings = false, - use_luasnip = true, - set_format = true, - documentation_window = true, - } + }, + handlers = { + default_setup, + pylsp = function() + require('lspconfig').pylsp.setup({ + settings = { + pylsp = { + plugins = { + flake8 = { enabled = true }, + autopep8 = { enabled = false }, + yapf = { + enabled = true, + }, + isort = { enabled = true }, + } + } + } + }) + end + }, }) -lsp.on_attach(function(client, bufnr) - lsp.default_keymaps({ buffer = bufnr }) -end) - --- (Optional) Configure lua language server for neovim -require('lspconfig').lua_ls.setup(lsp.nvim_lua_ls()) - -lsp.setup() - local cmp = require('cmp') -local cmp_action = require('lsp-zero').cmp_action() --- configure auto complete key cmp.setup({ - mapping = { - [''] = cmp_action.tab_complete(), - [''] = cmp_action.select_prev_or_fallback(), + sources = { + { name = 'nvim_lsp' }, + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + else + fallback() + end + end), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + else + fallback() + end + end), [''] = cmp.mapping.abort(), [''] = cmp.mapping.complete(), [''] = cmp.mapping.scroll_docs(1), [''] = cmp.mapping.scroll_docs(-1), [''] = cmp.mapping.confirm({ select = false }), - }, + }), window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, }) - -require('lspconfig').pylsp.setup { - settings = { - pylsp = { - plugins = { - autopep8 = { enabled = false }, - yapf = { enabled = true, args = '--style={based_on_style: google column_limit: 80}' }, - } - } - } -} diff --git a/lua/lennartalff/remap.lua b/lua/lennartalff/remap.lua index 596ab06..c5a34aa 100644 --- a/lua/lennartalff/remap.lua +++ b/lua/lennartalff/remap.lua @@ -28,14 +28,11 @@ vim.keymap.set('n', 'f', function() end) -- quickfix navigation -vim.keymap.set('n', '', 'cnextzz') -vim.keymap.set('n', '', 'cprevzz') +-- vim.keymap.set('n', '', 'cnextzz') +-- vim.keymap.set('n', '', 'cprevzz') vim.keymap.set('n', 'j', 'lnextzz') vim.keymap.set('n', 'k', 'lprevzz') -vim.keymap.set('n', 'i', vim.lsp.buf.hover) -vim.keymap.set('n', 'r', vim.lsp.buf.rename) - vim.keymap.set('n', 'dq', vim.diagnostic.setqflist) local function quickfix() vim.lsp.buf.code_action({