summaryrefslogtreecommitdiff
path: root/lua/plugins/lang/go.lua
diff options
context:
space:
mode:
authorChristian Segundo2024-02-18 08:19:51 +0100
committerChristian Segundo2024-02-18 08:19:51 +0100
commit85d7d7c082bd84d3c701ceec3d477ee37db5c827 (patch)
treeb78f09285c5120783f94cf9c2465a46439af2b71 /lua/plugins/lang/go.lua
parent7869bf2c310fbed680abd01d45a17057f857bf30 (diff)
downloadconfig-85d7d7c082bd84d3c701ceec3d477ee37db5c827.tar.gz
bootstrap
Diffstat (limited to 'lua/plugins/lang/go.lua')
-rw-r--r--lua/plugins/lang/go.lua65
1 files changed, 65 insertions, 0 deletions
diff --git a/lua/plugins/lang/go.lua b/lua/plugins/lang/go.lua
new file mode 100644
index 0000000..7e7fa03
--- /dev/null
+++ b/lua/plugins/lang/go.lua
@@ -0,0 +1,65 @@
+return {
+ {
+ "fatih/vim-go",
+ init = function()
+ vim.g.go_fmt_command = "gofumpt"
+ end,
+ ft = { "go" },
+ },
+
+ {
+ "nvim-treesitter/nvim-treesitter",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.ensure_installed = opts.ensure_installed or {}
+ vim.list_extend(opts.ensure_installed, {
+ "go",
+ "gomod",
+ "gosum",
+ })
+ end
+ end,
+ },
+
+ {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.sources = opts.sources or {}
+ local null_ls = require("null-ls")
+ vim.list_extend(opts.sources, {
+ null_ls.builtins.diagnostics.golangci_lint,
+ null_ls.builtins.formatting.gofumpt, -- Just here because gopls integrated gofumpt doesn't work
+ })
+ end
+ end,
+ },
+
+ {
+ "neovim/nvim-lspconfig",
+ opts = function(_, opts)
+ if type(opts) == "table" then
+ opts.servers = opts.servers or {}
+ opts.servers.gopls = {
+ -- Because integrated gofumpt doesn't work
+ -- I disable formatting for gopls
+ -- Formatting is handled with gofumpt by:
+ -- - null-ls on format request
+ -- - vim-go on save
+ on_attach = function(client, _)
+ client.server_capabilities.documentFormattingProvider = false
+ client.server_capabilities.documentRangeFormattingProvider = false
+ end,
+ cmd = { "gopls", "-remote=auto", "serve" }, -- Shared with vim-go's gopls instance
+ settings = {
+ gopls = {
+ buildFlags = { "-tags=integration,unit" }, -- To make packages with those build flags actually work with the LSP
+ semanticTokens = false,
+ gofumpt = true, -- gofumpt formatting, doesn't work
+ },
+ },
+ }
+ end
+ end,
+ },
+}