3 "nvim-treesitter/nvim-treesitter",
4 opts = { ensure_installed = { "go", "gomod", "gowork", "gosum" } },
7 "neovim/nvim-lspconfig",
17 regenerate_cgo = true,
18 run_govulncheck = true,
21 upgrade_dependency = true,
25 assignVariableTypes = true,
26 compositeLiteralFields = true,
27 compositeLiteralTypes = true,
28 constantValues = true,
29 functionTypeParameters = true,
30 parameterNames = true,
31 rangeVariableTypes = true,
34 fieldalignment = true,
40 usePlaceholders = true,
41 completeUnimported = true,
43 directoryFilters = { "-.git", "-.vscode", "-.idea", "-.vscode-test", "-node_modules" },
44 semanticTokens = true,
50 gopls = function(_, opts)
51 -- workaround for gopls not supporting semanticTokensProvider
52 -- https://github.com/golang/go/issues/54531#issuecomment-1464982242
53 rmz.lsp.on_attach(function(client, _)
54 if not client.server_capabilities.semanticTokensProvider then
55 local semantic = client.config.capabilities.textDocument.semanticTokens
56 client.server_capabilities.semanticTokensProvider = {
59 tokenTypes = semantic.tokenTypes,
60 tokenModifiers = semantic.tokenModifiers,
71 -- Ensure Go tools are installed
73 "williamboman/mason.nvim",
74 opts = { ensure_installed = { "goimports", "gofumpt" } },
77 "nvimtools/none-ls.nvim",
81 "williamboman/mason.nvim",
82 opts = { ensure_installed = { "gomodifytags", "impl" } },
85 opts = function(_, opts)
86 local nls = require("null-ls")
87 opts.sources = vim.list_extend(opts.sources or {}, {
88 nls.builtins.code_actions.gomodifytags,
89 nls.builtins.code_actions.impl,
90 nls.builtins.formatting.goimports,
91 nls.builtins.formatting.gofumpt,
96 "stevearc/conform.nvim",
100 go = { "goimports", "gofumpt" },
105 "mfussenegger/nvim-dap",
109 "williamboman/mason.nvim",
110 opts = { ensure_installed = { "delve" } },
113 "leoluz/nvim-dap-go",
119 "nvim-neotest/neotest",
122 "fredrikaverpil/neotest-golang",
126 ["neotest-golang"] = {
127 -- Here we can set options for neotest-golang, e.g.
128 -- go_test_args = { "-v", "-race", "-count=1", "-timeout=60s" },
129 dap_go_enabled = true, -- requires leoluz/nvim-dap-go
137 "echasnovski/mini.icons",
140 [".go-version"] = { glyph = "", hl = "MiniIconsBlue" },
143 gotmpl = { glyph = "", hl = "MiniIconsGrey" },