browse-url-firefox
Emacsの中のURLぽい文字列を外部のFireFoxで開くにはどうしたらよいだろうか。
ということで、以下のEmacs-Lispを書いてM-x browse-urlで開くようにしてみた。
(setq browse-url-browser-function '(("." . browse-url-firefox))) (setq browse-url-firefox-program "firefox-linux") (defun browse-url-firefox (url &optional new-window) (interactive (browse-url-interactive-arg "URL: ")) (if (string-match "^http://t?tp://" url) (setq url (concat "http://" (substring url (match-end 0))))) (start-process (concat browse-url-firefox-program url) nil browse-url-firefox-program "-remote" (concat "openurl(" url ", new-tab)")))
変数browse-url-firefox-programには、FireFoxのプログラム名を指定する。僕はLinuxのバイナリエミュレーション版を使ってるんで、firefox-linuxになっている。
FireFoxでURLを開くときに、タブで開くようにしている。これを変更したい場合はstart-processのあたりを適当に変更すること。
ttp://example.comとかtp://example.comのようなURLぽい文字列もHTTPとして扱うようになっている。プロンプトでは、「URL: http://ttp://example.com」のように聞いてくるけど、そのままエンターでOK。しかし、ttpが重なるのはダサいな。これを修正するには以下で呼出しているthing-at-pointあたりをいじるんだろうけど、面倒なのでもういいや。
browse-url.el ... 496 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 497 ;; URL input 498 499 (defun browse-url-url-at-point () 500 (let ((url (thing-at-point 'url))) 501 (set-text-properties 0 (length url) nil url) 502 url)) ...
(5/26追記)
「http:ttp://example.com」みたいにttp:が重ならなくなる版をid:ha-tan:20050526に書いた。