Предоставляет ли 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; версия:
Создайте
/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
Мой лучший снимок с использованием 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)