diff --git a/lua/lazyvim/plugins/extras/lang/go.lua b/lua/lazyvim/plugins/extras/lang/go.lua index e4036185..55b20ad4 100644 --- a/lua/lazyvim/plugins/extras/lang/go.lua +++ b/lua/lazyvim/plugins/extras/lang/go.lua @@ -23,8 +23,8 @@ return { }, }, setup = { - gopls = function() - -- workaround for gopls not supporting semantictokensprovider + gopls = function(_, opts) + -- workaround for gopls not supporting semanticTokensProvider -- https://github.com/golang/go/issues/54531#issuecomment-1464982242 require("lazyvim.util").on_attach(function(client, _) if client.name == "gopls" then @@ -42,10 +42,61 @@ return { end end) -- end workaround + opts.settings = { + gopls = { + gofumpt = true, + codelenses = { + gc_details = false, + generate = true, + regenerate_cgo = true, + run_govulncheck = true, + test = true, + tidy = true, + upgrade_dependency = true, + vendor = true, + }, + hints = { + assignVariableTypes = true, + compositeLiteralFields = true, + compositeLiteralTypes = true, + constantValues = true, + functionTypeParameters = true, + parameterNames = true, + rangeVariableTypes = true, + }, + analyses = { + fieldalignment = true, + nilness = true, + unusedparams = true, + unusedwrite = true, + useany = true, + }, + usePlaceholders = true, + completeUnimported = true, + staticcheck = true, + directoryFilters = { "-.git", "-.vscode", "-.idea", "-.vscode-test", "-node_modules" }, + semanticTokens = true, + }, + } end, }, }, }, + -- Ensure Go tools are installed + { + "jose-elias-alvarez/null-ls.nvim", + opts = function(_, opts) + if type(opts.sources) == "table" then + local nls = require("null-ls") + vim.list_extend(opts.sources, { + nls.builtins.code_actions.gomodifytags, + nls.builtins.code_actions.impl, + nls.builtins.formatting.gofumpt, + nls.builtins.formatting.goimports_reviser, + }) + end + end, + }, { "mfussenegger/nvim-dap", optional = true,