diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua index 83ccf0e..cb0e739 100644 --- a/.config/nvim/after/plugin/lsp.lua +++ b/.config/nvim/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/.config/nvim/lua/lennartalff/remap.lua b/.config/nvim/lua/lennartalff/remap.lua index 596ab06..c5a34aa 100644 --- a/.config/nvim/lua/lennartalff/remap.lua +++ b/.config/nvim/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({ diff --git a/home/.zshrc b/home/.zshrc index 88b9228..18f65f6 100644 --- a/home/.zshrc +++ b/home/.zshrc @@ -86,7 +86,7 @@ source $ZSH/oh-my-zsh.sh if [[ -n $SSH_CONNECTION ]]; then export EDITOR='vim' else - export EDITOR='vim' + export EDITOR='nvim' fi alias reboot-windows="systemctl reboot --boot-loader-entry=windows.conf"