我已经搜索了很多有关 IntelliJ IDEA 12 和xdebug.file_link_format
配置值的时间。
我没有发现任何有用的东西......
- 使用“idea”、“intellij”、“txmt”等协议或其他协议不起作用。
- 我没有发现任何关于注册 IntelliJ 协议的插件......
是否可以将 xdebug 文件链接与 IntelliJ IDEA 或 PhpStorm 一起使用?
我已经搜索了很多有关 IntelliJ IDEA 12 和xdebug.file_link_format
配置值的时间。
我没有发现任何有用的东西......
是否可以将 xdebug 文件链接与 IntelliJ IDEA 或 PhpStorm 一起使用?
是和否。
不——没有适当的内置支持。观看此票以获取详细信息:http: //youtrack.jetbrains.com/issue/IDEA-65879
是的——您可能会找到一些解决方法,至少上述票证有 Mac OS(使用 AppleScript)或通过远程呼叫等的配方。
xdebug.file_link_format = "phpstorm://open?file=%f&line=%l"
不是开箱即用的,但可以使链接正常工作。我可以在 Windows 7、Firefox 和 PhpStorm 10 上使用它——在本例中,我使用的是协议phpstorm://
,但无论名称如何,它都可以使用。
// note: edit the path, with backslashes escaped
var editor = '"c:\\Program Files (x86)\\JetBrains\\PhpStorm 143.434\\bin\\PhpStorm.exe" nosplash --line %line% "%file%"';
var url = WScript.Arguments(0);
var match = /^phpstorm:\/\/open\/\?file=(.+)&line=(\d+)$/.exec(url);
if (match) {
var file = decodeURIComponent(match[1]).replace(/\+/g, ' ');
var command = editor.replace(/%line%/g, match[2]).replace(/%file%/g, file);
var shell = new ActiveXObject("WScript.Shell");
shell.Exec(command.replace(/\\/g, '\\\\'));
}
editor.reg
并导入注册表。请注意,您再次需要双重转义上述文件的路径,并将其设置为保存您的路径:REGEDIT4
[HKEY_CLASSES_ROOT\phpstorm]
@="URL:phpstorm Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\phpstorm\shell\open\command]
@="wscript \"C:\\path\\to\\run-editor.js\" \"%1\""
在 Firefox 中启用协议:在 中about:config
,创建一个名为“逻辑值”并将
network.protocol-handler.expose.phpstorm
其设置为false
在 Firefox 中打开一个这样的链接,例如phpstorm://open?file=somefile.html&line=123
- 它应该在 PhpStorm 中打开。
根据@gapple 的评论,这将使 Xdebug 链接到 PhpStorm 中的文件/链接:
xdebug.file_link_format = "phpstorm://open?file=%f&line=%l"
我在 Mac 上的 PhpStorm 10 中对此进行了测试,效果很好。
您需要将以下行添加到php.ini
文件中[xdebug]
:
xdebug.file_link_format = "phpstorm://open?file=%f&line=%l"
然后重新启动您的 Web 服务器(Mac 上的 Apache for me)
REST API 现在可能是最好的选择:
http://localhost:63342/api/file%f:%l
包装在 javascript 协议和 AJAX 请求中允许保存权限批准,因此您不必每次单击时都批准:
javascript: var r = new XMLHttpRequest; r.open('get', 'http://localhost:63342/api/file%f:%l');r.send()