From 61a052b9603bce6b482712f2df2882e8402b3960 Mon Sep 17 00:00:00 2001 From: Oliver Hartmann Date: Wed, 16 Mar 2022 17:38:38 +0100 Subject: [PATCH] Same for lsp and cmp --- init.lua | 2 - lua/my_plugins.lua | 6 +- lua/{my_cmp.lua => setup/cmp.lua} | 0 .../lspinstall.lua} | 268 +++++++++--------- 4 files changed, 138 insertions(+), 138 deletions(-) rename lua/{my_cmp.lua => setup/cmp.lua} (100%) rename lua/{my_lspinstall.lua => setup/lspinstall.lua} (97%) diff --git a/init.lua b/init.lua index 46c541c..07f156e 100644 --- a/init.lua +++ b/init.lua @@ -12,8 +12,6 @@ require('my_options') require("my_autocommands") -- plugins -require('my_lspinstall') -require('my_cmp') require('my_neogen') require('my_luasnip') -------------------- TREE-SITTER --------------------------- diff --git a/lua/my_plugins.lua b/lua/my_plugins.lua index 5cc01f3..8f64455 100644 --- a/lua/my_plugins.lua +++ b/lua/my_plugins.lua @@ -65,7 +65,8 @@ return require('packer').startup(function() 'f3fora/cmp-spell', 'hrsh7th/cmp-emoji', 'hrsh7th/cmp-cmdline' - } + }, + config = get_setup("cmp") } use {'rafamadriz/friendly-snippets'} use {'onsails/lspkind-nvim'} @@ -84,7 +85,8 @@ return require('packer').startup(function() use {'s1n7ax/nvim-terminal'} use { 'williamboman/nvim-lsp-installer', - requires = {'neovim/nvim-lspconfig'} + requires = {'neovim/nvim-lspconfig'}, + config = get_setup("lspinstall") } use { 'jose-elias-alvarez/null-ls.nvim', diff --git a/lua/my_cmp.lua b/lua/setup/cmp.lua similarity index 100% rename from lua/my_cmp.lua rename to lua/setup/cmp.lua diff --git a/lua/my_lspinstall.lua b/lua/setup/lspinstall.lua similarity index 97% rename from lua/my_lspinstall.lua rename to lua/setup/lspinstall.lua index 4f93c3f..ad778d9 100644 --- a/lua/my_lspinstall.lua +++ b/lua/setup/lspinstall.lua @@ -1,134 +1,134 @@ -local utils = require('utils') - -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities.textDocument.completion.completionItem.documentationFormat = { 'markdown', 'plaintext' } -capabilities.textDocument.completion.completionItem.snippetSupport = true -capabilities.textDocument.completion.completionItem.preselectSupport = true -capabilities.textDocument.completion.completionItem.insertReplaceSupport = true -capabilities.textDocument.completion.completionItem.labelDetailsSupport = true -capabilities.textDocument.completion.completionItem.deprecatedSupport = true -capabilities.textDocument.completion.completionItem.commitCharactersSupport = true -capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } } -capabilities.offsetEncoding = { "utf-16" } -capabilities.textDocument.completion.completionItem.resolveSupport = { - properties = { - 'documentation', - 'detail', - 'additionalTextEdits', - }, -} - -local on_attach = function(client, bufnr) - local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end - local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end - - buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') - vim.api.nvim_buf_set_option(0, 'formatexpr', 'v:lua.vim.lsp.formatexpr()') - - -- Mappings. - local opts = { noremap=true, silent=true } - buf_set_keymap('n', ',', 'lua vim.lsp.diagnostic.goto_prev()', opts) - buf_set_keymap('n', ';', 'lua vim.lsp.diagnostic.goto_next()', opts) - buf_set_keymap('n', 'a', 'Telescope lsp_code_actions', opts) - buf_set_keymap('n', 'd', 'lua vim.lsp.buf.definition()', opts) - buf_set_keymap('n', 'e', 'lua vim.lsp.buf.declaration()', opts) - buf_set_keymap('n', 'h', 'lua vim.lsp.buf.hover()', opts) - buf_set_keymap('n', 'c', 'lua vim.lsp.buf.outgoing_calls()', opts) - buf_set_keymap('n', 'C', 'lua vim.lsp.buf.incoming_calls()', opts) - buf_set_keymap('n', 'm', 'lua vim.lsp.buf.rename()', opts) - -- buf_set_keymap('n', 'r', 'lua vim.lsp.buf.references()') - buf_set_keymap('n', 's', 'lua vim.lsp.buf.document_symbol()', opts) - buf_set_keymap('n', '', 'Telescope lsp_dynamic_workspace_symbols', opts) - buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) - buf_set_keymap('n', 'r', 'Telescope lsp_references', opts) - buf_set_keymap('n', '', 'Telescope lsp_document_symbols', opts) - buf_set_keymap('n', '', 'Telescope lsp_document_symbols', opts) - buf_set_keymap('n', 'v', 'Telescope diagnostics bufnr=0', opts) - buf_set_keymap('n', '', ':ClangdSwitchSourceHeader', opts) - - vim.cmd [[autocmd CursorHold lua vim.diagnostic.open_float({focusable = false})]] - - -- Set some keybinds conditional on server capabilities - if client.resolved_capabilities.document_formatting then - buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) - end - if client.resolved_capabilities.document_range_formatting then - buf_set_keymap('v', 'f', 'lua vim.lsp.buf.range_formatting()', opts) - end - - -- Set autocommands conditional on server_capabilities - if client.resolved_capabilities.document_highlight then - vim.api.nvim_exec([[ - hi LspReferenceRead cterm=bold ctermbg=red guibg=DarkGreen - hi LspReferenceWrite cterm=bold ctermbg=red guibg=DarkRed - augroup lsp_document_highlight - autocmd! * - autocmd CursorHold lua vim.lsp.buf.document_highlight() - autocmd CursorHoldI lua vim.lsp.buf.document_highlight() - autocmd CursorMoved lua vim.lsp.buf.clear_references() - augroup END - ]], false) - end - require "lsp_signature".on_attach({ - bind = true, -- This is mandatory, otherwise border config won't get registered. - handler_opts = { - border = "single" - }, - hi_parameter = "IncSearch" - }, bufnr) -end - -local lsp_installer = require("nvim-lsp-installer") - -local servers = { - "pyright", - "cmake", - "clangd", - "jsonls", - "groovyls", - "sumneko_lua", - "dockerls", -} - -for _, name in pairs(servers) do - local server_is_found, server = lsp_installer.get_server(name) - if server_is_found then - if not server:is_installed() then - print("Installing " .. name) - server:install() - end - end -end - -lsp_installer.on_server_ready(function(server) - local opts = { - on_attach = on_attach, - capabilities = capabilities, - } - - -- (optional) Customize the options passed to the server - if server.name == "clangd" then - opts.cmd = { "clangd" , "--compile-commands-dir=build_nvim"} - end - - -- This setup() function is exactly the same as lspconfig's setup function (:help lspconfig-quickstart) - server:setup(opts) - vim.cmd [[ do User LspAttachBuffers ]] -end) - -local null_ls = require("null-ls") -null_ls.setup { - sources = { - null_ls.builtins.code_actions.gitsigns, - null_ls.builtins.formatting.autopep8, - null_ls.builtins.formatting.prettier, - null_ls.builtins.formatting.stylua, - null_ls.builtins.diagnostics.flake8, - null_ls.builtins.formatting.isort, - null_ls.builtins.formatting.cmake_format - }, - on_attach = on_attach, - capabilities = capabilities -} -vim.diagnostic.config({virtual_text = false}) +local utils = require('utils') + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.documentationFormat = { 'markdown', 'plaintext' } +capabilities.textDocument.completion.completionItem.snippetSupport = true +capabilities.textDocument.completion.completionItem.preselectSupport = true +capabilities.textDocument.completion.completionItem.insertReplaceSupport = true +capabilities.textDocument.completion.completionItem.labelDetailsSupport = true +capabilities.textDocument.completion.completionItem.deprecatedSupport = true +capabilities.textDocument.completion.completionItem.commitCharactersSupport = true +capabilities.textDocument.completion.completionItem.tagSupport = { valueSet = { 1 } } +capabilities.offsetEncoding = { "utf-16" } +capabilities.textDocument.completion.completionItem.resolveSupport = { + properties = { + 'documentation', + 'detail', + 'additionalTextEdits', + }, +} + +local on_attach = function(client, bufnr) + local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end + local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + + buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') + vim.api.nvim_buf_set_option(0, 'formatexpr', 'v:lua.vim.lsp.formatexpr()') + + -- Mappings. + local opts = { noremap=true, silent=true } + buf_set_keymap('n', ',', 'lua vim.lsp.diagnostic.goto_prev()', opts) + buf_set_keymap('n', ';', 'lua vim.lsp.diagnostic.goto_next()', opts) + buf_set_keymap('n', 'a', 'Telescope lsp_code_actions', opts) + buf_set_keymap('n', 'd', 'lua vim.lsp.buf.definition()', opts) + buf_set_keymap('n', 'e', 'lua vim.lsp.buf.declaration()', opts) + buf_set_keymap('n', 'h', 'lua vim.lsp.buf.hover()', opts) + buf_set_keymap('n', 'c', 'lua vim.lsp.buf.outgoing_calls()', opts) + buf_set_keymap('n', 'C', 'lua vim.lsp.buf.incoming_calls()', opts) + buf_set_keymap('n', 'm', 'lua vim.lsp.buf.rename()', opts) + -- buf_set_keymap('n', 'r', 'lua vim.lsp.buf.references()') + buf_set_keymap('n', 's', 'lua vim.lsp.buf.document_symbol()', opts) + buf_set_keymap('n', '', 'Telescope lsp_dynamic_workspace_symbols', opts) + buf_set_keymap('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) + buf_set_keymap('n', '', 'lua vim.lsp.buf.signature_help()', opts) + buf_set_keymap('n', 'r', 'Telescope lsp_references', opts) + buf_set_keymap('n', '', 'Telescope lsp_document_symbols', opts) + buf_set_keymap('n', '', 'Telescope lsp_document_symbols', opts) + buf_set_keymap('n', 'v', 'Telescope diagnostics bufnr=0', opts) + buf_set_keymap('n', '', ':ClangdSwitchSourceHeader', opts) + + vim.cmd [[autocmd CursorHold lua vim.diagnostic.open_float({focusable = false})]] + + -- Set some keybinds conditional on server capabilities + if client.resolved_capabilities.document_formatting then + buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) + end + if client.resolved_capabilities.document_range_formatting then + buf_set_keymap('v', 'f', 'lua vim.lsp.buf.range_formatting()', opts) + end + + -- Set autocommands conditional on server_capabilities + if client.resolved_capabilities.document_highlight then + vim.api.nvim_exec([[ + hi LspReferenceRead cterm=bold ctermbg=red guibg=DarkGreen + hi LspReferenceWrite cterm=bold ctermbg=red guibg=DarkRed + augroup lsp_document_highlight + autocmd! * + autocmd CursorHold lua vim.lsp.buf.document_highlight() + autocmd CursorHoldI lua vim.lsp.buf.document_highlight() + autocmd CursorMoved lua vim.lsp.buf.clear_references() + augroup END + ]], false) + end + require "lsp_signature".on_attach({ + bind = true, -- This is mandatory, otherwise border config won't get registered. + handler_opts = { + border = "single" + }, + hi_parameter = "IncSearch" + }, bufnr) +end + +local lsp_installer = require("nvim-lsp-installer") + +local servers = { + "pyright", + "cmake", + "clangd", + "jsonls", + "groovyls", + "sumneko_lua", + "dockerls", +} + +for _, name in pairs(servers) do + local server_is_found, server = lsp_installer.get_server(name) + if server_is_found then + if not server:is_installed() then + print("Installing " .. name) + server:install() + end + end +end + +lsp_installer.on_server_ready(function(server) + local opts = { + on_attach = on_attach, + capabilities = capabilities, + } + + -- (optional) Customize the options passed to the server + if server.name == "clangd" then + opts.cmd = { "clangd" , "--compile-commands-dir=build_nvim"} + end + + -- This setup() function is exactly the same as lspconfig's setup function (:help lspconfig-quickstart) + server:setup(opts) + vim.cmd [[ do User LspAttachBuffers ]] +end) + +local null_ls = require("null-ls") +null_ls.setup { + sources = { + null_ls.builtins.code_actions.gitsigns, + null_ls.builtins.formatting.autopep8, + null_ls.builtins.formatting.prettier, + null_ls.builtins.formatting.stylua, + null_ls.builtins.diagnostics.flake8, + null_ls.builtins.formatting.isort, + null_ls.builtins.formatting.cmake_format + }, + on_attach = on_attach, + capabilities = capabilities +} +vim.diagnostic.config({virtual_text = false})