From 987867905e03b34319d29ea178aa550221a11544 Mon Sep 17 00:00:00 2001 From: Ching Pei Yang Date: Sat, 13 Jun 2026 00:07:24 +0200 Subject: [PATCH] language/clang: use new dap config format --- modules/extra/deprecations.nix | 7 ++ modules/plugins/debugger/nvim-dap/default.nix | 1 + .../debugger/nvim-dap/presets/default.nix | 5 ++ .../debugger/nvim-dap/presets/lldb.nix | 22 +++++++ modules/plugins/languages/clang.nix | 64 +++++++++---------- 5 files changed, 65 insertions(+), 34 deletions(-) create mode 100644 modules/plugins/debugger/nvim-dap/presets/default.nix create mode 100644 modules/plugins/debugger/nvim-dap/presets/lldb.nix diff --git a/modules/extra/deprecations.nix b/modules/extra/deprecations.nix index 4ef31779..82a0541c 100644 --- a/modules/extra/deprecations.nix +++ b/modules/extra/deprecations.nix @@ -396,5 +396,12 @@ in { Linters can still be customized via `vim.diagnostics.nvim-lint..args` '') ] + + # 2026-06-13 + [ + (mkRemovedOptionModule ["vim" "languages" "clang" "dap" "package"] '' + Please use `vim.debugger.nvim-dap.adapters..command` instead. + '') + ] ]; } diff --git a/modules/plugins/debugger/nvim-dap/default.nix b/modules/plugins/debugger/nvim-dap/default.nix index a921e26b..787d86f5 100644 --- a/modules/plugins/debugger/nvim-dap/default.nix +++ b/modules/plugins/debugger/nvim-dap/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./presets ./config.nix ./nvim-dap.nix ]; diff --git a/modules/plugins/debugger/nvim-dap/presets/default.nix b/modules/plugins/debugger/nvim-dap/presets/default.nix new file mode 100644 index 00000000..1c08aff6 --- /dev/null +++ b/modules/plugins/debugger/nvim-dap/presets/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./lldb.nix + ]; +} diff --git a/modules/plugins/debugger/nvim-dap/presets/lldb.nix b/modules/plugins/debugger/nvim-dap/presets/lldb.nix new file mode 100644 index 00000000..7442a548 --- /dev/null +++ b/modules/plugins/debugger/nvim-dap/presets/lldb.nix @@ -0,0 +1,22 @@ +{ + lib, + pkgs, + config, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.options) mkEnableOption; + + cfg = config.vim.debugger.nvim-dap.presets.lldb; +in { + options.vim.debugger.nvim-dap.presets.lldb = { + enable = mkEnableOption "LLDB debugger using lldb-dap"; + }; + + config.vim.debugger.nvim-dap.adapters = mkIf cfg.enable { + lldb = { + type = "executable"; + command = "${pkgs.lldb}/bin/lldb-dap"; + }; + }; +} diff --git a/modules/plugins/languages/clang.nix b/modules/plugins/languages/clang.nix index 7698e424..f07466aa 100644 --- a/modules/plugins/languages/clang.nix +++ b/modules/plugins/languages/clang.nix @@ -6,7 +6,7 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption literalExpression; - inherit (lib.types) bool enum package listOf; + inherit (lib.types) bool enum listOf; inherit (lib) genAttrs; inherit (lib.meta) getExe getExe'; inherit (lib.modules) mkIf mkMerge; @@ -14,38 +14,32 @@ inherit (lib.generators) mkLuaInline; inherit (lib.nvim.dag) entryAfter; inherit (lib.nvim.attrsets) mapListToAttrs; + inherit (lib.nvim.types) deprecatedSingleOrListOf enumWithRename; cfg = config.vim.languages.clang; defaultServers = ["clangd"]; servers = ["ccls" "clangd"]; - defaultDebugger = "lldb-vscode"; + defaultDebugger = ["lldb"]; debuggers = { - lldb-vscode = { - package = pkgs.lldb; - dapConfig = '' - dap.adapters.lldb = { - type = 'executable', - command = '${cfg.dap.package}/bin/lldb-dap', - name = 'lldb' - } - dap.configurations.cpp = { - { - name = 'Launch', - type = 'lldb', - request = 'launch', - program = function() - return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') - end, - cwd = "''${workspaceFolder}", - stopOnEntry = false, - args = {}, - }, - } - - dap.configurations.c = dap.configurations.cpp - ''; + lldb = let + configuration = { + name = "Launch"; + type = "lldb"; + request = "launch"; + program = mkLuaInline '' + function() + return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") + end + ''; + cwd = "\${workspaceFolder}"; + stopOnEntry = false; + args = {}; + }; + in { + c = [configuration]; + cpp = [configuration]; }; }; @@ -147,14 +141,13 @@ in { }; debugger = mkOption { description = "clang debugger to use"; - type = enum (attrNames debuggers); + type = + deprecatedSingleOrListOf "vim.langauges.clang.dap.debugger" + (enumWithRename "vim.langauges.clang.dap.debugger" (attrNames debuggers) { + lldb-vscode = "lldb"; + }); default = defaultDebugger; }; - package = mkOption { - description = "clang debugger package."; - type = package; - default = debuggers.${cfg.dap.debugger}.package; - }; }; format = { @@ -208,8 +201,11 @@ in { }) (mkIf cfg.dap.enable { - vim.debugger.nvim-dap.enable = true; - vim.debugger.nvim-dap.sources.clang-debugger = debuggers.${cfg.dap.debugger}.dapConfig; + vim.debugger.nvim-dap = { + enable = true; + presets.lldb.enable = true; + configurations = mkMerge (map (name: debuggers.${name}) cfg.dap.debugger); + }; }) (mkIf cfg.format.enable {