From 68796d499e5cd60c82d084090ac116ac4fe813e3 Mon Sep 17 00:00:00 2001 From: xesc Date: Tue, 30 Jan 2024 21:30:20 +0100 Subject: [PATCH] restucture lsp-setup --- lua/plugin/lspconfig.lua | 378 ++++++++++++++++++++++----------------- lua/plugin/none-ls.lua | 60 ------- 2 files changed, 214 insertions(+), 224 deletions(-) delete mode 100644 lua/plugin/none-ls.lua diff --git a/lua/plugin/lspconfig.lua b/lua/plugin/lspconfig.lua index ab7b2d9..5cfc508 100644 --- a/lua/plugin/lspconfig.lua +++ b/lua/plugin/lspconfig.lua @@ -1,179 +1,229 @@ return { - { - "neovim/nvim-lspconfig", - -- event = "BufReadPre", - config = function() - require('lspconfig.ui.windows').default_options.border = 'rounded' - vim.api.nvim_set_hl(0, "LspInfoBorder", { bg = none, fg = "#9da9a0" }) - local opts = { noremap = true, silent = true } - vim.keymap.set('n', 'cd', vim.diagnostic.open_float, opts) - vim.keymap.set('n', 'cl', "LspInfo", 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', 'q', vim.diagnostic.setloclist, opts) + { + "neovim/nvim-lspconfig", + -- event = "BufReadPre", + config = function() + require('lspconfig.ui.windows').default_options.border = 'rounded' + vim.api.nvim_set_hl(0, "LspInfoBorder", { bg = none, fg = "#9da9a0" }) + local opts = { noremap = true, silent = true } + vim.keymap.set('n', 'cd', vim.diagnostic.open_float, opts) + vim.keymap.set('n', 'cl', "LspInfo", 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', 'q', vim.diagnostic.setloclist, opts) - local on_attach = function(client, bufnr) - -- enable completion triggered by - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + local on_attach = function(client, bufnr) + -- enable completion triggered by + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + end + local signs = { Error = "󰈸 ", Warn = " ", Hint = "󰌶 ", Info = " " } + for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl }) + end - -- 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', 'gi', vim.lsp.buf.implementation, bufopts) - -- vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', 'gK', vim.lsp.buf.signature_help, bufopts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, bufopts) - vim.keymap.set('n', 'gt', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', 'cf', function() vim.lsp.buf.format { async = true } end, bufopts) - vim.keymap.set('v', 'cf', function() vim.lsp.buf.format { async = true } end, bufopts) - end + local border = { + { "╭", "FloatBorder" }, + { "─", "FloatBorder" }, + { "╮", "FloatBorder" }, + { "│", "FloatBorder" }, + { "╯", "FloatBorder" }, + { "─", "FloatBorder" }, + { "╰", "FloatBorder" }, + { "│", "FloatBorder" }, + } - local signs = { Error = "󰈸 ", Warn = " ", Hint = "󰌶 ", Info = " " } - for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl }) - end + vim.diagnostic.config({ + float = { border = border }, + virtual_text = { + prefix = '●', -- Could be '●', '■', 'x', '▎', or anything else + }, + update_in_insert = true, + }) + -- LSP settings (for overriding per client) + vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = border }) + vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signatureHelp, { border = border }) + end, + }, - local border = { - { "╭", "FloatBorder" }, - { "─", "FloatBorder" }, - { "╮", "FloatBorder" }, - { "│", "FloatBorder" }, - { "╯", "FloatBorder" }, - { "─", "FloatBorder" }, - { "╰", "FloatBorder" }, - { "│", "FloatBorder" }, - } + -- pretty ui + { + 'nvimdev/lspsaga.nvim', + event = 'LspAttach', + config = function() + require('lspsaga').setup({ + symbol_in_winbar = { + enable = false, + show_file = false + }, + finder = { + keys = { + toggle_or_open = "", + quit = { '', 'q' } + } + }, + outline = { + win_position = 'left', + win_width = 45, + }, + lightbulb = { + enable = false + }, + ui = { + code_action = '󰌶', + border = 'rounded', + }, + rename = { + in_select = false, + keys = { + quit = { '', 'q' }, + select = '' + } + }, + hover_doc = { + open_cmd = '!firefox' + }, + code_action = { + keys = { + quit = { '', 'q' } + }, + extend_gitsigns = false, + }, + definition = { + keys = { + quit = { '', 'q' }, + }, + }, + diagnostic = { + border_follow = false, + extend_relatedInformation = true, + keys = { + quit = { '', 'q' }, + quit_in_show = { '', 'q' }, + } + } + }) - vim.diagnostic.config({ - float = { border = border }, - virtual_text = { - prefix = '●', -- Could be '●', '■', 'x', '▎' - }, - update_in_insert = true, - }) - - -- LSP settings (for overriding per client) - vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = border }) - vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signatureHelp, { border = border }) - end, + vim.keymap.set('n', '', "Lspsaga term_toggle", opts) + vim.keymap.set('t', '', "Lspsaga term_toggle", opts) + vim.keymap.set('n', 'cw', 'Lspsaga rename mode=n', opts) + vim.keymap.set('n', 'so', 'Lspsaga outline', opts) + vim.keymap.set('n', 'sf', 'Lspsaga finder', opts) + vim.keymap.set('n', 'sci', 'Lspsaga incoming_calls', opts) + vim.keymap.set('n', 'sco', 'Lspsaga outgoing_calls', opts) + vim.keymap.set('n', 'k', 'Lspsaga hover_doc', bufopts) + vim.keymap.set('n', 'K', 'Lspsaga hover_doc', bufopts) + vim.keymap.set('n', 'ca', 'Lspsaga code_action', bufopts) + vim.keymap.set('n', 'sd', 'Lspsaga peek_definition', bufopts) + vim.keymap.set('n', 'st', 'Lspsaga peek_type_definition', bufopts) + vim.keymap.set('n', 'cw', "Lspsaga rename mode=n", bufopts) + vim.keymap.set('n', 'ca', 'Lspsaga code_action', bufopts) + vim.keymap.set('n', '[e', 'Lspsaga diagnostic_jump_next', bufopts) + vim.keymap.set('n', ']e', 'Lspsaga diagnostic_jump_prev', bufopts) + end, + depedencies = { + 'nvim-treesitter/nvim-treesitter', + 'nvim-tree/nvim-web-devicons' }, + }, - { - 'nvimdev/lspsaga.nvim', - event = 'LspAttach', - config = function() - require('lspsaga').setup({ - symbol_in_winbar = { - enable = false, - show_file = false - }, - finder = { - keys = { - toggle_or_open = "", - quit = {'', 'q'} + { + "williamboman/mason.nvim", + lazy = true, + cmd = "Mason", + config = function() + require("mason").setup({ + ui = { + border = "rounded", + icons = { + package_installed = "✔", + package_pending = "➜", + package_uninstalled = "✗" + } + } + }) + end, + }, + + { + "williamboman/mason-lspconfig.nvim", + -- event = "BufReadPre", + config = function() + require("mason-lspconfig").setup({ + ensure_installed = { + "lua_ls", + "clangd", + } + }) + + require("mason-lspconfig").setup_handlers { + -- The first entry (without a key) will be the default handler + -- and will be called for each installed server that doesn't have + -- a dedicated handler. + function(server_name) -- default handler (optional) + require("lspconfig")[server_name].setup { + on_attach = on_attach, + handlers = handlers, + } + end, + } + end, + }, + { + "nvimtools/none-ls.nvim", + -- event = "BufReadPost", + dependencies = { + { + "nvim-telescope/telescope-ui-select.nvim", + lazy = true, + config = function() + -- This is your opts table + require("telescope").setup { + extensions = { + ["ui-select"] = { + -- require("telescope.themes").get_dropdown { + -- -- even more opts + -- } } - }, - outline = { - win_position = 'left', - win_width = 45, - }, - lightbulb = { - enable = false - }, - ui = { - code_action = '󰌶 ' - }, - rename = { - in_select = false, - keys = { - quit = {'', 'q'}, - select = '' - } - }, - hover_doc = { - open_cmd = '!firefox' - }, - code_action = { - keys = { - quit = {'', 'q'} - } - }, - definition = { - keys = { - quit = {'', 'q'}, - }, } - }) - - vim.keymap.set('n', '', "Lspsaga term_toggle", opts) - vim.keymap.set('t', '', "Lspsaga term_toggle", opts) - vim.keymap.set('n', 'cw', 'Lspsaga rename mode=n', opts) - vim.keymap.set('n', 'so', 'Lspsaga outline', opts) - vim.keymap.set('n', 'sf', 'Lspsaga finder', opts) - vim.keymap.set('n', 'sci', 'Lspsaga incoming_calls', opts) - vim.keymap.set('n', 'sco', 'Lspsaga outgoing_calls', opts) - vim.keymap.set('n', 'k', 'Lspsaga hover_doc', bufopts) - vim.keymap.set('n', 'K', 'Lspsaga hover_doc', bufopts) - vim.keymap.set('n', 'ca', 'Lspsaga code_action', bufopts) - vim.keymap.set('n', 'sd', 'Lspsaga peek_definition', bufopts) - vim.keymap.set('n', 'st', 'Lspsaga peek_type_definition', bufopts) - - end, - depedencies = { - 'nvim-treesitter/nvim-treesitter', - 'nvim-tree/nvim-web-devicons' + } + require("telescope").load_extension("ui-select") + end, }, }, - - { - "williamboman/mason.nvim", - lazy = true, - cmd = "Mason", - config = function() - require("mason").setup({ - ui = { - border = "rounded", - icons = { - package_installed = "✔", - package_pending = "➜", - package_uninstalled = "✗" - } - } - }) + opts = function() + local null_ls = require('null-ls') + return { + border = 'rounded', + on_attach = function(client, bufnr) + 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', 'gt', vim.lsp.buf.type_definition, 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', 'cf', function() vim.lsp.buf.format { async = true } end, bufopts) + vim.keymap.set('v', 'cf', function() vim.lsp.buf.format { async = true } end, bufopts) end, - }, - - { - "williamboman/mason-lspconfig.nvim", - -- event = "BufReadPre", - config = function() - require("mason-lspconfig").setup({ - ensure_installed = { - "lua_ls", - "clangd", - } - }) - - require("mason-lspconfig").setup_handlers { - -- The first entry (without a key) will be the default handler - -- and will be called for each installed server that doesn't have - -- a dedicated handler. - function(server_name) -- default handler (optional) - require("lspconfig")[server_name].setup { - on_attach = on_attach, - handlers = handlers, - } - end, - } - end, - }, + sources = { + null_ls.builtins.diagnostics.trail_space.with { + disabled_filetypes = { "lua" } + }, + null_ls.builtins.diagnostics.shellcheck, + null_ls.builtins.code_actions.shellcheck, + null_ls.builtins.formatting.jq, + null_ls.builtins.code_actions.gitsigns, + null_ls.builtins.diagnostics.flake8, + null_ls.builtins.diagnostics.yamllint, + null_ls.builtins.formatting.yamlfmt, + null_ls.builtins.formatting.shfmt, + null_ls.builtins.formatting.shellharden, + null_ls.builtins.formatting.beautysh, + }, + } + end, + } } diff --git a/lua/plugin/none-ls.lua b/lua/plugin/none-ls.lua deleted file mode 100644 index ff9f440..0000000 --- a/lua/plugin/none-ls.lua +++ /dev/null @@ -1,60 +0,0 @@ -return { - { - "nvimtools/none-ls.nvim", - -- event = "BufReadPost", - dependencies = { - { - "nvim-telescope/telescope-ui-select.nvim", - lazy = true, - config = function() - -- This is your opts table - require("telescope").setup { - extensions = { - ["ui-select"] = { - -- require("telescope.themes").get_dropdown { - -- -- even more opts - -- } - } - } - } - require("telescope").load_extension("ui-select") - end, - }, - }, - opts = function() - local null_ls = require('null-ls') - return { - border = 'rounded', - on_attach = function(client, bufnr) - 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', 'gt', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', 'cw', "Lspsaga rename mode=n", bufopts) - -- vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) - vim.keymap.set('n', 'ca', 'Lspsaga code_action', bufopts) - -- vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', 'cf', function() vim.lsp.buf.format { async = true } end, bufopts) - vim.keymap.set('v', 'cf', function() vim.lsp.buf.format { async = true } end, bufopts) - end, - sources = { - null_ls.builtins.diagnostics.trail_space.with { - disabled_filetypes = { "lua" } - }, - null_ls.builtins.diagnostics.shellcheck, - null_ls.builtins.code_actions.shellcheck, - null_ls.builtins.formatting.jq, - null_ls.builtins.code_actions.gitsigns, - null_ls.builtins.diagnostics.flake8, - null_ls.builtins.diagnostics.yamllint, - null_ls.builtins.formatting.yamlfmt, - null_ls.builtins.formatting.shfmt, - null_ls.builtins.formatting.shellharden, - null_ls.builtins.formatting.beautysh, - }, - } - end, - }, -}