summaryrefslogtreecommitdiff
path: root/lua/ben/plugins/go.lua
blob: 72e42e7ec3971e7f4354b7755ca2bab9a699fa0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
return {
	"ray-x/go.nvim",
	-- Only if Go is installed
	cond = function()
		return vim.fn.executable("go")
	end,
	dependencies = { -- optional packages
		"ray-x/guihua.lua",
		"neovim/nvim-lspconfig",
		"nvim-treesitter/nvim-treesitter",
		"ray-x/guihua.lua",
	},
	config = function()
		require("go").setup()
		-- Go keymaps
		vim.api.nvim_set_keymap("n", "<Space>gb", "<cmd>GoBuild<cr>", { noremap = true, silent = true })
		vim.api.nvim_set_keymap("n", "<Space>gr", "<cmd>GoRun<cr>", { noremap = true, silent = true })
		vim.api.nvim_set_keymap("n", "<Space>gd", "<cmd>GoDoc<cr>", { noremap = true, silent = true })
		-- Commands to run on save:
		local format_sync_grp = vim.api.nvim_create_augroup("GoFormat", {})
		vim.api.nvim_create_autocmd("BufWritePre", {
			pattern = "*.go",
			callback = function()
				-- Go format:
				require("go.format").gofmt()
				-- Goimports:
				require("go.format").goimport()
			end,
			group = format_sync_grp,
		})
	end,
	ft = { "go", "gomod", "gowork", "gosum" },
	build = ':lua require("go.install").update_all_sync()', -- if you need to install/update all binaries
}