From 58b35564d1bedd35bb8661def1b821264fd2ef66 Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Wed, 4 Feb 2026 02:00:05 +0100 Subject: [PATCH] languages/php: add debugging --- docs/manual/release-notes/rl-0.9.md | 2 ++ modules/plugins/languages/php.nix | 46 +++++++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index 651f9f4e..4e237ea7 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -174,6 +174,8 @@ - Added Makefile support via `languages.make`. +- Added Debugging support to `languages.php`. + [vagahbond](https://github.com/vagahbond): [codewindow.nvim]: https://github.com/gorbit99/codewindow.nvim diff --git a/modules/plugins/languages/php.nix b/modules/plugins/languages/php.nix index 193c0a1f..dc859a4f 100644 --- a/modules/plugins/languages/php.nix +++ b/modules/plugins/languages/php.nix @@ -4,11 +4,12 @@ lib, ... }: let - inherit (builtins) attrNames; + inherit (builtins) attrNames toString toFile; inherit (lib.options) mkEnableOption mkOption; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; - inherit (lib.types) enum; + inherit (lib.types) enum int attrs; + inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; inherit (lib.nvim.attrsets) mapListToAttrs; inherit (lib.generators) mkLuaInline; @@ -82,6 +83,28 @@ in { description = "PHP LSP server to use"; }; }; + + dap = { + enable = mkEnableOption "Enable PHP Debug Adapter" // {default = config.vim.languages.enableDAP;}; + xdebug = { + adapter = mkOption { + type = attrs; + default = { + type = "executable"; + command = "${pkgs.nodePackages_latest.nodejs}/bin/node"; + args = [ + "${pkgs.vscode-extensions.xdebug.php-debug}/share/vscode/extensions/xdebug.php-debug/out/phpDebug.js" + ]; + }; + description = "XDebug adapter to use for nvim-dap"; + }; + port = mkOption { + type = int; + default = 9003; + description = "Port to use for XDebug"; + }; + }; + }; }; config = mkIf cfg.enable (mkMerge [ @@ -98,5 +121,24 @@ in { }) cfg.lsp.servers; }) + + (mkIf cfg.dap.enable { + vim = { + debugger.nvim-dap = { + enable = true; + sources.php-debugger = '' + dap.adapters.xdebug = ${toLuaObject cfg.dap.xdebug.adapter} + dap.configurations.php = { + { + type = 'xdebug', + request = 'launch', + name = 'Listen for XDebug', + port = ${toString cfg.dap.xdebug.port}, + }, + } + ''; + }; + }; + }) ]); }