Merci pour le pointeur, p4bl0. Malheureusement, cela ne fonctionne que sur un vrai système d'exploitation; Windows utilise une méthode complètement différente. Voir http://kb.mozillazine.org/Register_protocol pour plus d'informations. Mais, vous m'avez certainement fourni le début dont j'avais besoin, alors merci beaucoup, beaucoup!
est ici la solution pour Windows:
D'abord, vous devez configurer correctement le Registre pour gérer ce nouveau type d'URL. Pour cela, enregistrez ce qui suit dans un fichier, le modifier en fonction de votre environnement, enregistrez et double-cliquez dessus:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\emacs]
@="URL:Emacs Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\emacs\shell]
[HKEY_CLASSES_ROOT\emacs\shell\open]
[HKEY_CLASSES_ROOT\emacs\shell\open\command]
@="\"c:\\product\\emacs\\bin\\emacsclientw.exe\" --no-wait -e \"(emacs-uri-handler \\\"%1\\\")\""
Ce n'est pas aussi robuste que le script shell de p4bl0, car il ne fait pas sûr que Emacs est en cours d'exécution en premier.Ensuite, ajoutez ce qui suit à votre fichier .emacs:
(defun emacs-uri-handler (uri)
"Handles emacs URIs in the form: emacs:///path/to/file/LINENUM"
(save-match-data
(if (string-match "emacs://\\(.*\\)/\\([0-9]+\\)$" uri)
(let ((filename (match-string 1 uri))
(linenum (match-string 2 uri)))
(with-current-buffer (find-file filename)
(goto-line (string-to-number linenum))))
(beep)
(message "Unable to parse the URI <%s>" uri))))
Le code ci-dessus ne vérifiez que le fichier existe, et la gestion des erreurs est rudimentaire au mieux. Mais ça marche!
Ensuite, créez un fichier HTML qui a des lignes comme les suivantes:
<a href="emacs://c:/temp/my.log/60">file: c:/temp/my.log, line: 60</a>
puis cliquez sur le lien.
Post Script:
J'ai récemment mis à Linux (Ubuntu 9.10) et voici ce que je l'ai fait pour ce système d'exploitation:
$ gconftool -s /desktop/gnome/url-handlers/emacs/command '/usr/bin/emacsclient --no-wait -e "(emacs-uri-handler \"%s\")"' --type String
$ gconftool -s /desktop/gnome/url-handlers/emacs/enabled --type Boolean true
En utilisant la même emacs-uri-handler
d'en haut.
* Juste * me battre à elle. :-) –