Geany 或 Gedit 是否像 Textmate 使用 txmt:// 那样提供浏览器协议?

Geany 或 Gedit 是否像 Textmate 使用 txmt:// 那样提供浏览器协议?

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;版本:

  1. 创造/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
    
  2. 跑步sudo update-desktop-database

  3. 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
    
  4. 调用方式为 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

相关内容