From 3700c179cb9df2c3e78aa9b5cb0bf2821b1f26b0 Mon Sep 17 00:00:00 2001 From: Luke Tidd Date: Wed, 17 May 2023 00:06:32 -0400 Subject: [PATCH] added go --- chadrc.lua | 1 + configs/lspconfig.lua | 12 ++++++++++++ configs/null-ls.lua | 25 +++++++++++++++++++++++++ mappings.lua | 34 ++++++++++++++++++++++++++++++++++ plugins.lua | 28 +++++++++++++++++++++++++--- 5 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 configs/null-ls.lua diff --git a/chadrc.lua b/chadrc.lua index d614e87..ac37ca3 100644 --- a/chadrc.lua +++ b/chadrc.lua @@ -2,4 +2,5 @@ local M = {} M.ui = {theme = 'catppuccin'} M.plugins = 'custom.plugins' + M.mappings = require "custom.mappings" return M diff --git a/configs/lspconfig.lua b/configs/lspconfig.lua index cf23c49..91ebd80 100644 --- a/configs/lspconfig.lua +++ b/configs/lspconfig.lua @@ -3,6 +3,18 @@ local capabilities = require("plugins.configs.lspconfig").capabilities local lspconfig = require("lspconfig") local util = require "lspconfig/util" +lspconfig.gopls.setup { + on_attach = on_attach, + capabilities = capabilities, + cmd = {"gopls"}, + filetypes = {"go", "gomod", "gowork", "gotmpl"}, + root_dir = util.root_pattern("go.work", "go.mod", ".git"), + settings = { + gopls = { + completeUnimported = true, + }, + }, +} --[[ lspconfig.rust_analyzer.setup({ on_attach = on_attach, diff --git a/configs/null-ls.lua b/configs/null-ls.lua new file mode 100644 index 0000000..320716b --- /dev/null +++ b/configs/null-ls.lua @@ -0,0 +1,25 @@ +local null_ls = require("null-ls") +local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) + +local opts = { + sources = { + null_ls.builtins.formatting.gofumpt, + null_ls.builtins.formatting.goimports_reviser, + }, + on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ + group = augroup, + buffer = bufnr, + }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format({bufnr = bufnr}) + end, + }) + end + end, +} +return opts diff --git a/mappings.lua b/mappings.lua index ec3c4f7..14a2f43 100644 --- a/mappings.lua +++ b/mappings.lua @@ -1,5 +1,21 @@ local M = {} +M.dap = { + plugin = true, + n = { + ["db"] = { + " DapToggleBreakpoint ", + "Add breakpoint at line" + }, + ["dus"] = { + function () + local widgets = require('dap.ui.widgets'); + local sidebar = widgets.sidebar(widgets.scopes); + sidebar.open(); + end, + } + } +} M.crates = { n = { ["rcu"] = { @@ -11,4 +27,22 @@ M.crates = { } } +M.dap_go = { + plugin = true, + n = { + ["gdt"] = { + function() + require('dap-go').debug_test() + end, + "Debug go test" + }, + ["gdl"] = { + function() + require('dap-go').debug_test() + end, + "Debug last go test" + }, + } +} + return M diff --git a/plugins.lua b/plugins.lua index dd00c58..06c4007 100644 --- a/plugins.lua +++ b/plugins.lua @@ -35,7 +35,10 @@ local plugins = { { "simrat39/rust-tools.nvim", rf = "rust", - dependancies = "neovim/nvim-lspconfig", + dependancies = { + "neovim/nvim-lspconfig", + "mfussenegger/nvim-dap", + }, opts = function () return require "custom.configs.rust-tools" end, @@ -46,8 +49,8 @@ local plugins = { { "mfussenegger/nvim-dap", rf = "rust", - config = function() - require('nvim-dap').setup() + init = function() + require("core.utils").load_mappings("dap") end }, { @@ -66,6 +69,25 @@ local plugins = { table.insert(M.sources, {name = "crates"}) return M end, + }, + { + "jose-elias-alvarez/null-ls.nvim", + ft = "go", + opts = function () + return require "custom.configs.null-ls" + end, + }, + { + "leoluz/nvim-dap-go", + ft = "go", + dependancies = "mfussenegger/nvim-dap", + config = function(_, opts) + require("dap-go").setup(opts) + require("core.utils").load_mappings("dap_go") + end + + + } }