diff options
Diffstat (limited to 'after/plugin/lsp.lua')
-rw-r--r-- | after/plugin/lsp.lua | 85 |
1 files changed, 37 insertions, 48 deletions
diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua index 9eab3f1..8610be0 100644 --- a/after/plugin/lsp.lua +++ b/after/plugin/lsp.lua @@ -3,11 +3,21 @@ if not status_ok then return end -local function lsp_keymaps(bufnr) +-- configure lsp when attached +local function lsp_attach(client, bufnr) + -- helper functions + local function set_lsp_sign(name, text) + vim.fn.sign_define(name, { text = text, texthl = name }) + end + local map = function(m, lhs, rhs) - local opts = {remap = false, silent = true, buffer = bufnr} + local opts = { remap = false, silent = true, buffer = bufnr } vim.keymap.set(m, lhs, rhs, opts) end + set_lsp_sign("DiagnosticSignError", "x") + set_lsp_sign("DiagnosticSignWarn" , "!") + set_lsp_sign("DiagnosticSignInfo" , "i") + set_lsp_sign("DiagnosticSignHint" , "h") -- LSP actions map('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>') @@ -17,64 +27,43 @@ local function lsp_keymaps(bufnr) map('n', 'gY', '<cmd>lua vim.lsp.buf.type_definition()<cr>') map('n', 'gR', '<cmd>lua vim.lsp.buf.references()<cr>') map('n', '<S-Tab>', '<cmd>lua vim.lsp.buf.signature_help()<cr>') - map('n', '<F2>', '<cmd>lua vim.lsp.buf.rename()<cr>') + map('n', '<leader>lr', '<cmd>lua vim.lsp.buf.rename()<cr>') map('n', '<F4>', '<cmd>lua vim.lsp.buf.code_action()<cr>') -- Diagnostics map('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<cr>') map('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<cr>') -end -local function set_lsp_sign(name, text) - vim.fn.sign_define(name, {text = text, texthl = name}) -end -set_lsp_sign("DiagnosticSignError", "x") -set_lsp_sign("DiagnosticSignWarn" , "!") -set_lsp_sign("DiagnosticSignInfo" , "i") -set_lsp_sign("DiagnosticSignHint" , "h") - -local function lsp_settings() - vim.diagnostic.config({ - virtual_text = false, - signs = true, - update_in_insert = false, - underline = true, - severity_sort = true, - }) - - vim.lsp.handlers['textDocument/hover'] = vim.lsp.with( vim.lsp.handlers.hover, - { border = 'shadow', } - ) - vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with( - vim.lsp.handlers.signature_help, - {border = 'shadow'} - ) - local command = vim.api.nvim_create_user_command - command('LspWorkspaceAdd', function() + vim.api.nvim_buf_create_user_command(bufnr, 'LspFormat', function() + vim.lsp.buf.format() + end, {desc = 'Format buffer with language server'}) + vim.api.nvim_buf_create_user_command('LspWorkspaceAdd', function() vim.lsp.buf.add_workspace_folder() - end, {desc = 'Add folder to workspace'}) - command('LspWorkspaceList', function() - vim.notify(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, {desc = 'List workspace folders'}) - command('LspWorkspaceRemove', function() + end, { desc = 'Add folder to workspace' }) + vim.api.nvim_buf_create_user_command('LspWorkspaceList', function() + vim.notify(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, { desc = 'List workspace folders' }) + vim.api.nvim_buf_create_user_command('LspWorkspaceRemove', function() vim.lsp.buf.remove_workspace_folder() - end, {desc = 'Remove folder from workspace'}) + end, { desc = 'Remove folder from workspace' }) end -local function lsp_attach(client, bufnr) - local buf_command = vim.api.nvim_buf_create_user_command - - lsp_keymaps(bufnr) - - buf_command(bufnr, 'LspFormat', function() - vim.lsp.buf.format() - end, {desc = 'Format buffer with language server'}) -end +vim.diagnostic.config({ + virtual_text = false, + signs = true, + update_in_insert = false, + underline = true, + severity_sort = true, +}) -lsp_settings() +vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, + { border = 'shadow', }) +vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with( + vim.lsp.handlers.signature_help, { border = 'shadow' }) -require('mason').setup({}) -require('mason-lspconfig').setup({}) +-- get servers and attach to them +require('mason').setup {} +require('mason-lspconfig').setup {} local get_servers = require('mason-lspconfig').get_installed_servers for _, server_name in ipairs(get_servers()) do |