Mac 上的 Textmate 可以绑定到 txmt 协议,这意味着可以配置开发框架(例如 Play Framework)以使用此协议显示错误消息。如果出现堆栈跟踪,则堆栈跟踪的每一行都是以下格式的 URL(我猜是这样):
txmt:///home/myuser/projects/myproject/ProblemFile.java:123
(其中 123 是行号)。
单击此按钮可在 Textmate 中打开文件。
使用 Gedit、Geany 或其他程序员的文本编辑器可以实现这一点吗?
答案1
可以在 Gnome 中轻松创建新的协议处理程序,您所要做的就是在 gconf 中添加一些键。
在终端中输入:
gconftool-2 -s /desktop/gnome/url-handlers/foo/command '/path/to/app %s' --type String
gconftool-2 -s /desktop/gnome/url-handlers/foo/enabled --type Boolean true
将两行中的 foo 替换为您要注册的协议,并将 /path/to/app 替换为您要运行的应用程序的路径。(来自:http://kb.mozillazine.org/Register_protocol#All_Firefox_versions)
答案2
接受的答案在 11.04 上不起作用。
这是我针对 11.04 上的 gedit 的解决方案:http://rystraum.com/blog/2012/05/rails-footnotes-with-gedit/
TLDR;版本:
创造
/usr/share/applications/foo-uri.desktop
:[Desktop Entry] Name=Foo GenericName=Foo Comment=Open foo links in Gedit TryExec=open_gedit Exec=open_gedit %u Terminal=false Type=Application MimeType=x-scheme-handler/foo NoDisplay=true
跑步
sudo update-desktop-database
open_gedit
$PATH 中位置内的脚本#!/bin/bash FILE=$1 FILE=${FILE/foo\:\/\//} LINE=$(echo $FILE | grep -o "\&line=[0-9]\+") LINE=$(echo $LINE | grep -o "[0-9]\+") FILE=$(echo $FILE | grep -o "\(.\+\)\&") FILE=$(echo $FILE | cut -d'&' -f1) gedit +$LINE $FILE
调用方式为 foo:///path/to/file&line=299
答案3
我使用 Python 的最佳方法(可能会遗漏一些特殊情况):
gconftool-2 -s /desktop/gnome/url-handlers/geany/command ' python -c "import urlparse;import sys;import pipes;url=\"http\"+sys.argv[1][5:];import os; up=urlparse.urlparse(url);os.system(\"geany \"+(pipes.quote(\"/\"+up.netloc+up.path)+\" --socket-file /tmp/geany --line \" + pipes.quote(up.query)))" %s' --type String
gconftool-2 -s /desktop/gnome/url-handlers/geany/enabled --type Boolean true
将使用geany://home/www/index.php?239
套接字开始打开/home/www/index.php
(以避免打开许多 geany 实例)239
/tmp/geany