summaryrefslogtreecommitdiffstats
path: root/after/plugin/lsp.lua
diff options
context:
space:
mode:
authorSquibid <me@zacharyscheiman.com>2024-01-30 21:52:24 -0500
committerSquibid <me@zacharyscheiman.com>2024-01-30 21:52:24 -0500
commitd94b454eb61a0d0a99f9939560506c2db24f3315 (patch)
tree52dd40a8d51a79896750fa0fd0ea85fd3445405f /after/plugin/lsp.lua
parente669b3eb8e27069ed0c52ea269e3c27debb989b6 (diff)
downloadnvim-d94b454eb61a0d0a99f9939560506c2db24f3315.tar.gz
nvim-d94b454eb61a0d0a99f9939560506c2db24f3315.tar.bz2
nvim-d94b454eb61a0d0a99f9939560506c2db24f3315.zip
way too lazy to sort this out, adding kitchen sink
Diffstat (limited to '')
-rw-r--r--after/plugin/lsp.lua85
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