Предоставляет ли Geany или Gedit протокол браузера так же, как Textmate делает с txmt://?

Textmate на Mac может быть привязан к протоколу txmt, что означает, что платформы разработки (такие как Play Framework) можно настроить для использования этого для отображения сообщений об ошибках. Если появляется трассировка стека, каждая строка трассировки стека является URL-адресом формата (я предполагаю):

txmt:///home/myuser/projects/myproject/ProblemFile.java:123

(где 123 - номер строки).

Нажатие на это открывает файл в Textmate.

Возможно ли это с помощью Gedit, Geany или другого текстового редактора программиста?

3 ответа

Решение

В 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)

Принятый ответ не работает 11.04.

Вот мое решение для gedit 11.04: 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

Мой лучший снимок с использованием 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 на линии 239 с помощью /tmp/geany как сокет (чтобы не открывать много экземпляров geany)

Другие вопросы по тегам