LoginSignup
9
2

More than 5 years have passed since last update.

URLっぽいものを開く/強調表示する

Posted at

ファイル編集中に本文中にあるURLっぽいものを目立たせたいな、ついでにクリックでブラウザを開けたらイイナ、ってことはよくある。そんなときはgoto-address-modeを利用するのが良い。

つまりは、こんなパターン。

コメント中にURLが含まれてるようす

一時的に有効化したい

M-x goto-address-modeまたはM-x goto-address-prog-modeを実行する。

goto-addr.gif

若干わかりにくいけど、Emacs内でブラウザウィジェット使ってるわけじゃなくて、デスクトップの標準Webブラウザ(Chrome)が開いてるだけ。

常に有効化したい

.emacsファイル(~/.emacs.d/init.el)で、prog-mode-hookとかtext-mode-hookに登録してやればいい。

;; goto-addr
(progn
  (add-hook 'prog-mode-hook 'goto-address-prog-mode)
  (add-hook 'text-mode-hook 'goto-address-mode))

goto-address-prog-modegoto-address-modeと概ね同じなのだけれど、コメントとか文字列リテラルに含まれるURLだけをリンクにしてくれる。

Emacsのメジャーモードには継承の概念があって、「プログラミング言語のソースコードっぽいもの」を編集するモードはprog-modeを、「人間がそのまま読み書きするようなテキスト文書っぽいもの」を編集するモードはtext-modeを継承するのがお作法になってゐる。

つまりprog-mode-hookに設定してやれば、ruby-modeとかphp-modeとかの個別のhookに設定しなくて良い。(逆に、全体で反映したくないが個別のモードでのみ有効化したけれはruby-mode-hookなどに登録する)

goto-address-modeは何をしてくれるのか

ざっくり

  • URLっぽい文字列をみつけて、リンクっぽい色を付けてくれる
    • 正確にはlinkって名前のfaceを付ける
    • 興味あるひとは M-x list-faces-display で確認してみてね
  • そのリンクをクリックしたらgoto-address-at-pointコマンドが実行されるようになる
  • 参考: Emacs25.1マニュアル日本語版 48.2 URLのアクティブ化

goto-address-at-pointはカーソル位置のURLっぽいものを検出してbrowse-urlしてるだけなのでgoto-address-modeとは関係なく、いつでも実行できる。

つまり「色付けとかクリックとかどうでもいいから」って人はgoto-address-modeを有効化せずにgoto-address-at-pointだけを使ってもいい。

ちなみにhelm-find-fileでもいける

もしHelmを使ってたら、カーソルがURL上にある状態でC-x C-f (またはM-x helm-find-files) するだけで同じような挙動になる。

goto-addr-2.gif

Helmを使ってなくても、Emacs標準にあるFFAP(find-file-at-point)を利用すれば同じようになります。(たぶん)

蛇足: ターミナルからリンクを開く

ターミナルの種類にもよるが、筆者が愛用してるiTerm2Commandを押すと、画面中のURLっぽい文字列がクリック可能になる。特にSSHで接続した先でEmacsを使ってる最中にGUIのブラウザで開きたい、といった場合はこうするのが簡単。

goto-addr-iterm2.gif

リンクをクリックしたときの挙動を制御したい

先述の通りbrowse-urlしてるだけなので、設定してやればいいだけ。
例として、Emacs内で完結したい場合はこうする。

(setq browse-url-browser-function #'eww-browse-url)

goto-addr-internal.gif

まとめ

  • goto-address-modeはURLをクリックできるようになってべんりだよ
  • せっかく最新版のEmacsマニュアルの和訳があるので読まないと損だよ
    • 通読するのは大変だけど、目次から気になる項目をつまんで読んでおくと良い
9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2