Skip to content

Commit 3adba94

Browse files
authored
languages/odin: add debugging (#1390)
1 parent c001081 commit 3adba94

File tree

3 files changed

+60
-2
lines changed

3 files changed

+60
-2
lines changed

docs/manual/release-notes/rl-0.9.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,9 @@
174174
- Added [tera](https://keats.github.io/tera/) language support (syntax
175175
highlighting only).
176176
177+
- Added Debugging support to `languages.odin` with
178+
[nvim-dap-odin](https://github.com/NANDquark/nvim-dap-odin).
179+
177180
- Added [`golangci-lint`](https://golangci-lint.run/) for more diagnostics.
178181
179182
- updated default filetypes for

modules/plugins/languages/odin.nix

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@
77
inherit (builtins) attrNames;
88
inherit (lib.options) mkEnableOption mkOption;
99
inherit (lib.modules) mkIf mkMerge;
10-
inherit (lib.types) enum;
10+
inherit (lib.types) enum package;
11+
inherit (lib.nvim.dag) entryAfter;
1112
inherit (lib.meta) getExe;
1213
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
1314
inherit (lib.generators) mkLuaInline;
1415
inherit (lib.nvim.attrsets) mapListToAttrs;
1516

17+
cfg = config.vim.languages.odin;
18+
1619
defaultServers = ["ols"];
1720
servers = {
1821
ols = {
@@ -32,7 +35,19 @@
3235
};
3336
};
3437

35-
cfg = config.vim.languages.odin;
38+
defaultDebugger = "codelldb";
39+
debuggers = {
40+
codelldb = {
41+
package = pkgs.lldb;
42+
dapConfig = ''
43+
dap.adapters.codelldb = {
44+
type = 'executable',
45+
command = '${cfg.dap.package}/bin/lldb-dap',
46+
name = 'codelldb'
47+
}
48+
'';
49+
};
50+
};
3651
in {
3752
options.vim.languages.odin = {
3853
enable = mkEnableOption "Odin language support";
@@ -51,6 +66,22 @@ in {
5166
description = "Odin LSP server to use";
5267
};
5368
};
69+
70+
dap = {
71+
enable = mkEnableOption "Enable Odin Debug Adapter" // {default = config.vim.languages.enableDAP;};
72+
73+
debugger = mkOption {
74+
description = "Odin debugger to use";
75+
type = enum (attrNames debuggers);
76+
default = defaultDebugger;
77+
};
78+
79+
package = mkOption {
80+
description = "Odin debugger package.";
81+
type = package;
82+
default = debuggers.${cfg.dap.debugger}.package;
83+
};
84+
};
5485
};
5586

5687
config = mkIf cfg.enable (mkMerge [
@@ -67,5 +98,16 @@ in {
6798
})
6899
cfg.lsp.servers;
69100
})
101+
102+
(mkIf cfg.dap.enable {
103+
vim = {
104+
startPlugins = ["nvim-dap-odin"];
105+
debugger.nvim-dap.sources.odin-debugger = debuggers.${cfg.dap.debugger}.dapConfig;
106+
pluginRC.nvim-dap-odin = entryAfter ["nvim-dap"] ''
107+
require('nvim-dap-odin').setup()
108+
'';
109+
debugger.nvim-dap.enable = true;
110+
};
111+
})
70112
]);
71113
}

npins/sources.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1873,6 +1873,19 @@
18731873
"url": "https://github.com/leoluz/nvim-dap-go/archive/b4421153ead5d726603b02743ea40cf26a51ed5f.tar.gz",
18741874
"hash": "sha256-wg9kiW2eAMmg4bvgqaAS9kt7qaVsIWl36BNqRbhZIgo="
18751875
},
1876+
"nvim-dap-odin": {
1877+
"type": "Git",
1878+
"repository": {
1879+
"type": "GitHub",
1880+
"owner": "NANDquark",
1881+
"repo": "nvim-dap-odin"
1882+
},
1883+
"branch": "main",
1884+
"submodules": false,
1885+
"revision": "4df40d467f4ea5195e2f3b813d970eb15172b052",
1886+
"url": "https://github.com/NANDquark/nvim-dap-odin/archive/4df40d467f4ea5195e2f3b813d970eb15172b052.tar.gz",
1887+
"hash": "sha256-/bW22gWrPamK4jDMJYDv/3od+vIUb/eYICnHWnv8MVU="
1888+
},
18761889
"nvim-dap-ui": {
18771890
"type": "Git",
18781891
"repository": {

0 commit comments

Comments
 (0)