aboutsummaryrefslogtreecommitdiff
path: root/Common/nvim/lua/lsp-conf.lua
diff options
context:
space:
mode:
authorjakobst1n <jakob@jakobstendahl.no>2026-03-30 09:20:26 +0200
committerjakobst1n <jakob@jakobstendahl.no>2026-03-30 09:20:26 +0200
commitd127d84df837b1578ad991023138a34ab66ff503 (patch)
tree78c273fc85e628dca2793b6e3a8c840380ba531b /Common/nvim/lua/lsp-conf.lua
parent61c831cc049bc40738e9d4b8333224df356c078a (diff)
downloaddotfiles-d127d84df837b1578ad991023138a34ab66ff503.tar.gz
dotfiles-d127d84df837b1578ad991023138a34ab66ff503.zip
Upgrade to nvim 0.12, update config to use new features
Diffstat (limited to 'Common/nvim/lua/lsp-conf.lua')
-rw-r--r--Common/nvim/lua/lsp-conf.lua102
1 files changed, 22 insertions, 80 deletions
diff --git a/Common/nvim/lua/lsp-conf.lua b/Common/nvim/lua/lsp-conf.lua
index 9025244..ec1754b 100644
--- a/Common/nvim/lua/lsp-conf.lua
+++ b/Common/nvim/lua/lsp-conf.lua
@@ -1,91 +1,33 @@
--- Mason Setup
-require("mason").setup({
- ui = {
- icons = {
- package_installed = "",
- package_pending = "",
- package_uninstalled = "",
- },
- }
-})
+require("mason").setup()
require("mason-lspconfig").setup({
- ensure_installed = { "rust_analyzer", "tsserver", "clangd", "intelephense", "pyright", "texlab", "jdtls", "sqlls" }
+ handlers = {
+ function(server_name)
+ vim.lsp.enable(server_name)
+ end,
+ }
})
-require("mason-lspconfig").setup_handlers {
- function (server_name) -- default handler (optional)
- require("lspconfig")[server_name].setup {}
- end,
-}
-
--- LSP Diagnostics Options Setup
-local sign = function(opts)
- vim.fn.sign_define(opts.name, {
- texthl = opts.name,
- text = opts.text,
- numhl = ''
- })
-end
-
-sign({name = 'DiagnosticSignError', text = '!'})
-sign({name = 'DiagnosticSignWarn', text = '!!'})
-sign({name = 'DiagnosticSignHint', text = '?'})
-sign({name = 'DiagnosticSignInfo', text = 'i'})
vim.diagnostic.config({
- virtual_text = false,
- signs = true,
update_in_insert = true,
- underline = true,
- severity_sort = false,
})
-vim.cmd [[
-hi DiagnosticUnderlineError gui=none guibg='LightRed'
-hi DiagnosticUnderlineWarn guisp='Orange' gui=undercurl
-hi DiagnosticUnderlineInfo guisp='Cyan' gui=undercurl
-hi DiagnosticUnderlineHint guisp='Cyan' gui=undercurl
-hi DiagnosticUnderlineOk gui=none
-
-hi link DiagnosticFloatingHint Normal
-hi link DiagnosticFloatingInfo Normal
-hi DiagnosticFloatingOk guifg=Green
-hi link DiagnosticFloatingWarn Normal
-]]
+local highlights = {
+ DiagnosticUnderlineError = { underline = false, bg = "LightRed" },
+ DiagnosticUnderlineWarn = { sp = "Orange", undercurl = true },
+ DiagnosticUnderlineInfo = { sp = "Cyan", undercurl = true },
+ DiagnosticUnderlineHint = { sp = "Cyan", undercurl = true },
+ DiagnosticUnderlineOK = { underline = false },
+
+ DiagnosticFloatingHint = { link = "Normal" },
+ DiagnosticFloatingInfo = { link = "Normal" },
+ DiagnosticFloatingWarn = { link = "Normal" },
+ DiagnosticFloatingOk = { fg = "Green" },
+}
-vim.opt.completeopt = {'menuone', 'noselect', 'noinsert'}
-vim.opt.shortmess = vim.opt.shortmess + { c = true}
-vim.api.nvim_set_option('updatetime', 300)
+for group, settings in pairs(highlights) do
+ vim.api.nvim_set_hl(0, group, settings)
+end
--- Enable signcolumn
+vim.opt.updatetime = 300
vim.opt.signcolumn = 'yes'
--- Remove background in SignColumn, looks odd without this
-vim.api.nvim_set_hl(0, "SignColumn", {link = "LineNr"})
-
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist)
-
-vim.api.nvim_create_autocmd('LspAttach', {
- group = vim.api.nvim_create_augroup('UserLspConfig', {}),
- callback = function(ev)
- -- Enable completion triggered by <c-x><c-o>
- vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
-
- local opts = { buffer = ev.buf }
- vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
- vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
- vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
- vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
- vim.keymap.set('i', '<C-k>', vim.lsp.buf.signature_help, opts)
- vim.keymap.set('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
- vim.keymap.set('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
- vim.keymap.set('n', '<leader>wl', function()
- print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
- end, opts)
- vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
- vim.keymap.set('n', '<leader>rn', vim.lsp.buf.rename, opts)
- vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
- vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
- vim.keymap.set('n', '<space>f', function()
- vim.lsp.buf.format { async = true }
- end, opts)
- end
-})