From 399fc584dd4ce4f21f07fcc5a38be6cc53331aaf Mon Sep 17 00:00:00 2001 From: Olli Date: Sat, 20 Sep 2025 11:49:36 +0200 Subject: [PATCH] nvim: Update LSP configuration --- nvim/lua/plugins/lspconfig.lua | 89 ++++++++++++++++++++++++++++++++-- 1 file changed, 86 insertions(+), 3 deletions(-) diff --git a/nvim/lua/plugins/lspconfig.lua b/nvim/lua/plugins/lspconfig.lua index cd69348..53cdab8 100644 --- a/nvim/lua/plugins/lspconfig.lua +++ b/nvim/lua/plugins/lspconfig.lua @@ -26,9 +26,6 @@ return { }, }, config = function() - local nvim_lsp = require("lspconfig") - - local protocol = require("vim.lsp.protocol") local on_attach = function(client, bufnr) -- Format on save @@ -42,5 +39,91 @@ return { }) end end + + -- Typos + vim.lsp.config("typos_lsp", { + settings = { + filetypes = { + 'java', + 'go' + }, + }, + init_options = { + diagnosticSeverity = "Hint", + } + }) + + -- Gradle + --vim.lsp.enable('gradle_ls') + + -- HTML + vim.lsp.enable('html') + + -- CSS + vim.lsp.enable('cssls') + + -- JSON + vim.lsp.enable('jsonls') + + -- Python + vim.lsp.enable('pylsp') + + -- Go + vim.lsp.config("gopls", { + settings = { + gopls = { + gofumpt = true, + staticcheck = true, + analyses = { + unusedparams = true, + unusedresult = true, + unusedwrite = true, + unusedvariable = true, + useany = true, + fieldalignment = false, + nilness = true, + shadow = true, + }, + hints = { + assignVariableTypes = true, + compositeLiteralFields = true, + compositeLiteralTypes = true, + constantValues = true, + functionTypeParameters = true, + parameterNames = true, + rangeVariableTypes = true, + }, + codelenses = { + gc_details = true, + generate = true, + regenerate_cgo = true, + tidy = true, + upgrade_dependency = true, + vendor = true, + }, + }, + }, + }) + -- Organize imports and format code on save + vim.api.nvim_create_autocmd({"BufWritePre"}, { + pattern = "*.go", + callback = function() + local params = vim.lsp.util.make_range_params() + params.context = {only = {"source.organizeImports"}} + local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params) + for cid, res in pairs(result or {}) do + for _, r in pairs(res.result or {}) do + if r.edit then + local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16" + vim.lsp.util.apply_workspace_edit(r.edit, enc) + end + end + end + vim.lsp.buf.format({async = false}) + end + }) + + -- PHP + vim.lsp.enable('phpactor') end, }