diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index e32e85c..2e2793c 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -29,6 +29,7 @@ Release notes for release 0.7 - Fix broken treesitter-context keybinds in visual mode - Deprecate use of `__empty` to define empty tables in lua. Empty attrset are no longer filtered and thus should be used instead. +- Add dap-go for better dap configurations [jacekpoz](https://github.com/jacekpoz): diff --git a/flake.lock b/flake.lock index 0a83798..abafbd6 100644 --- a/flake.lock +++ b/flake.lock @@ -1069,6 +1069,22 @@ "type": "github" } }, + "plugin-nvim-dap-go": { + "flake": false, + "locked": { + "lastModified": 1716775637, + "narHash": "sha256-B8A+ven18YgePLxAN3Q/j5NFb0FeTHCQak1uzaNDX9c=", + "owner": "leoluz", + "repo": "nvim-dap-go", + "rev": "a0c5a2b991d7e9304a9a032cf177e22a4b0acda1", + "type": "github" + }, + "original": { + "owner": "leoluz", + "repo": "nvim-dap-go", + "type": "github" + } + }, "plugin-nvim-dap-ui": { "flake": false, "locked": { @@ -1823,6 +1839,7 @@ "plugin-nvim-colorizer-lua": "plugin-nvim-colorizer-lua", "plugin-nvim-cursorline": "plugin-nvim-cursorline", "plugin-nvim-dap": "plugin-nvim-dap", + "plugin-nvim-dap-go": "plugin-nvim-dap-go", "plugin-nvim-dap-ui": "plugin-nvim-dap-ui", "plugin-nvim-docs-view": "plugin-nvim-docs-view", "plugin-nvim-lightbulb": "plugin-nvim-lightbulb", diff --git a/flake.nix b/flake.nix index 3a5dfcd..e333241 100644 --- a/flake.nix +++ b/flake.nix @@ -216,6 +216,11 @@ flake = false; }; + plugin-nvim-dap-go = { + url = "github:leoluz/nvim-dap-go"; + flake = false; + }; + # Filetrees plugin-nvim-tree-lua = { url = "github:nvim-tree/nvim-tree.lua"; diff --git a/modules/plugins/languages/go.nix b/modules/plugins/languages/go.nix index 055e8ed..05e28ed 100644 --- a/modules/plugins/languages/go.nix +++ b/modules/plugins/languages/go.nix @@ -12,6 +12,7 @@ inherit (lib.types) bool enum either listOf package str; inherit (lib.nvim.types) mkGrammarOption; inherit (lib.nvim.lua) expToLua; + inherit (lib.nvim.dag) entryAfter; cfg = config.vim.languages.go; @@ -37,40 +38,6 @@ debuggers = { delve = { package = pkgs.delve; - dapConfig = '' - dap.adapters.delve = { - type = "server", - port = "''${port}", - executable = { - command = "${getExe cfg.dap.package}", - args = { "dap", "-l", "127.0.0.1:''${port}" }, - }, - } - - dap.configurations.go = { - { - type = "delve", - name = "Debug", - request = "launch", - program = "''${file}", - }, - { - type = "delve", - name = "Debug test", -- configuration for debugging test files - request = "launch", - mode = "test", - program = "''${file}", - }, - -- works with go.mod packages and sub packages - { - type = "delve", - name = "Debug test (go.mod)", - request = "launch", - mode = "test", - program = "./''${relativeFileDirname}", - }, - } - ''; }; }; in { @@ -102,15 +69,17 @@ in { dap = { enable = mkOption { - description = "Enable Go Debug Adapter"; + description = "Enable Go Debug Adapter via nvim-dap-go plugin"; type = bool; default = config.vim.languages.enableDAP; }; + debugger = mkOption { description = "Go debugger to use"; type = enum (attrNames debuggers); default = defaultDebugger; }; + package = mkOption { description = "Go debugger package."; type = package; @@ -131,8 +100,17 @@ in { }) (mkIf cfg.dap.enable { - vim.debugger.nvim-dap.enable = true; - vim.debugger.nvim-dap.sources.go-debugger = debuggers.${cfg.dap.debugger}.dapConfig; + vim = { + startPlugins = ["nvim-dap-go"]; + luaConfigRC.nvim-dap-go = entryAfter ["nvim-dap"] '' + require('dap-go').setup { + delve = { + path = '${getExe cfg.dap.package}', + } + } + ''; + debugger.nvim-dap.enable = true; + }; }) ]); }