lvim/config.lua

118 lines
3.1 KiB
Lua

-- Read the docs: https://www.lunarvim.org/docs/configuration
-- Example configs: https://github.com/LunarVim/starter.lvim
-- Video Tutorials: https://www.youtube.com/watch?v=sFA9kX-Ud_c&list=PLhoH5vyxr6QqGu0i7tt_XoVK9v-KvZ3m6
-- Forum: https://www.reddit.com/r/lunarvim/
-- Discord: https://discord.com/invite/Xb9B4Ny
--
--
--
------------------------
-- Treesitter
------------------------
lvim.builtin.treesitter.ensure_installed = {
"go",
"gomod",
}
------------------------
-- Plugins
------------------------
lvim.plugins = {
"olexsmir/gopher.nvim",
"leoluz/nvim-dap-go",
}
------------------------
-- Formatting
------------------------
local formatters = require "lvim.lsp.null-ls.formatters"
formatters.setup {
{ command = "goimports", filetypes = { "go" } },
{ command = "gofumpt", filetypes = { "go" } },
}
lvim.format_on_save = {
pattern = { "*.go" },
}
------------------------
-- Dap
------------------------
local dap_ok, dapgo = pcall(require, "dap-go")
if not dap_ok then
return
end
dapgo.setup()
------------------------
-- LSP
------------------------
vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "gopls" })
local lsp_manager = require "lvim.lsp.manager"
lsp_manager.setup("golangci_lint_ls", {
on_init = require("lvim.lsp").common_on_init,
capabilities = require("lvim.lsp").common_capabilities(),
})
lsp_manager.setup("gopls", {
on_attach = function(client, bufnr)
require("lvim.lsp").common_on_attach(client, bufnr)
local _, _ = pcall(vim.lsp.codelens.refresh)
local map = function(mode, lhs, rhs, desc)
if desc then
desc = desc
end
vim.keymap.set(mode, lhs, rhs, { silent = true, desc = desc, buffer = bufnr, noremap = true })
end
map("n", "<leader>Ci", "<cmd>GoInstallDeps<Cr>", "Install Go Dependencies")
map("n", "<leader>Ct", "<cmd>GoMod tidy<cr>", "Tidy")
map("n", "<leader>Ca", "<cmd>GoTestAdd<Cr>", "Add Test")
map("n", "<leader>CA", "<cmd>GoTestsAll<Cr>", "Add All Tests")
map("n", "<leader>Ce", "<cmd>GoTestsExp<Cr>", "Add Exported Tests")
map("n", "<leader>Cg", "<cmd>GoGenerate<Cr>", "Go Generate")
map("n", "<leader>Cf", "<cmd>GoGenerate %<Cr>", "Go Generate File")
map("n", "<leader>Cc", "<cmd>GoCmt<Cr>", "Generate Comment")
map("n", "<leader>DT", "<cmd>lua require('dap-go').debug_test()<cr>", "Debug Test")
end,
on_init = require("lvim.lsp").common_on_init,
capabilities = require("lvim.lsp").common_capabilities(),
settings = {
gopls = {
usePlaceholders = true,
gofumpt = true,
codelenses = {
generate = false,
gc_details = true,
test = true,
tidy = true,
},
},
},
})
local status_ok, gopher = pcall(require, "gopher")
if not status_ok then
return
end
gopher.setup {
commands = {
go = "go",
gomodifytags = "gomodifytags",
gotests = "gotests",
impl = "impl",
iferr = "iferr",
},
}
-------------------------
-- Custom
-------------------------
lvim.format_on_save.enabled = true
lvim.keys.normal_mode["<leader>re"] = "oif err != nil {<CR>}<Esc>Oreturn err<Esc>"
lvim.keys.normal_mode["<C-s>"] = "<Esc>:w<CR>"
vim.opt.relativenumber = true