Table of Contents
Emacs から Google 検索
Meadow/Emacs memo で紹介されている google.el や google2.el を利用する。M-x google でカレントバッファのカーソル付近の単語を検索語として Google 検索に渡すが、リージョン選択で検索語を指定することも出来る。内部で browse-url.el を使用しているので Mac では例えば次のように設定しておく。
;; for browse-url (setq browse-url-browser-function 'browse-url-generic) (setq browse-url-generic-program "open") ; default browser で開く
検索エンジンも Google に限らず、YouTube や Wikipedia, Google ブック検索, CiNii など適宜カスタマイズして追加できる。例えば Amazon で Emacs 関連の商品を検索する場合、
というように検索したい語のリージョンを指定すると (この場合 “Emacs”)、mini-buffer に検索ワードのデフォルトとして表示される。このまま Return を押すと Lead2Amazon での検索結果がデフォルトのブラウザ (Firefox) で表示される。
Firefox の拡張 Zotero を利用すれば素早く文献情報を保存でき、BibTeX 形式で再度 Emacs に情報をエクスポートすることもできる (以前の記事 参照)。Emacs で編集中に気にかかった文献を Firefox で検索、見つかった文献情報を Emacs が受け取り編集作業を再開する、という会話が成り立つ。
Emacs から Firefox を操作
まず Firefox を Telnet で操作するための MozRepl という拡張を有効にしておく (簡単な導入方法は ここ に書いた)。次に moz.el をインストールして次のような設定を追加しておく。
(autoload 'moz-minor-mode "moz" "Mozilla Minor and Inferior Mozilla Modes" t) (moz-minor-mode t) (defun moz-send-message (moz-command) (comint-send-string (inferior-moz-process) (concat moz-repl-name ".pushenv('printPrompt', 'inputMode'); " moz-repl-name ".setenv('inputMode', 'line'); " moz-repl-name ".setenv('printPrompt', false); undefined; ")) (comint-send-string (inferior-moz-process) (concat moz-command moz-repl-name ".popenv('inputMode', 'printPrompt'); undefined;\n"))) (defun moz-scrolldown () (interactive) (moz-send-message "goDoCommand('cmd_scrollLineDown');\n")) ; 下スクロール ;; (global-set-key (kbd "C-M-n") 'moz-scrolldown) (defun moz-scrollup () (interactive) (moz-send-message "goDoCommand('cmd_scrollLineUp');\n")) ; 上スクロール ;; (global-set-key (kbd "C-M-p") 'moz-scrollup) ;; ... (適宜追加) ...
この他にも「進む」(BrowserForward) や「戻る」(BrowserBack) など適宜必要な動作を同様にして追加すればよい。このように操作して何が便利かというと、例えば、マルチディスプレイで作業している場合は、メインディスプレイにある Emacs からスイッチせずに外部ディスプレイに表示させている Firefox を操作できる。また、シングルディスプレイでも Carbon Emacs や Cocoa Emacs などではフルスクリーンで透過した背景を利用できるので (FullScreen, TransparentEmacs)、Emacs の背面にある Firefox を確認しながら作業することができるが (この状態に慣れるとまるで Firefox が Mac の壁紙のようになる…)、その際に Emacs から切り替えることなく Firefox のスクロール、タブの切替、ページのリロードなどが可能であると非常に便利である1。
ちなみに、こうして透明な画面にしていると Emacs で編集作業をしながら裏の Firefox で動画を流しておく、なんていう怠けた使い方もできる。もちろん ScreenCast や Ustream 配信などを見ながらメモを取る、といった実際的な使用法もある。
Firefox のページを org-capture で Bookmark
OrgMode and Firefox conversations という記事の内容に従うと問題なく可能だった (Org 7.4, Emacs 22.3)。
C-c c (org-capture) で Org-Capture の選択画面を呼び出して、
[b] で Bookmark を選択すると、現在 Firefox で開かれているページの情報がテンプレートとして挿入されるので、適宜メモを残す。
この状態で C-c C-c (org-capture-finalize) で保存し完了する2。
Firefox のページを emacs-w3m で開く
先ほどの Justin Kirby さんの記事 の通り設定した場合 org-capture の設定でも利用した jk/moz-url という関数が定義されているので、これを利用する。
(defun moz-url-w3m () "Open current page of Firefox on emacs-w3m." (interactive) (w3m-browse-url (jk/moz-url))) ;; (global-set-key (kbd "\C-cW") 'moz-url-w3m)
Firefox の拡張 Firemacs や keysnail を利用すれば Firefox 上でほとんど Emacs のようなキーバインディングが利用できるが、編集作業を行う場合 Emacs 内であるに越したことはない。私は普段の Web 閲覧は Firefox だが、じっくり読みたいページや内容をコピーしたいページがあれば M-x moz-url-w3m (C-c W に充てている) を実行して emacs-w3m 内での閲覧に切り替えている。
Footnotes:
1 tlync さんのブログ にはより詳しい設定方法が、また saito さんのブログ では Emacs-lisp と Ruby と mozrepl を使用して Firefox を操作する方法が、hnw さんの日記 では Emacs+Firefox+MozRepl でファイルセーブと同時にリロードする方法が、それぞれ丁寧に説明されている。また、rubikitch さんのページで、MozRepl を利用したシェルスクリプト fresno の紹介や 独自のソース (mozeval) が公開されている。
2 ただし、タイトルが日本語のページの場合文字化けしてしまうので取得するのは URL のみにしておいた。
また、同様のことは org-protocol.el を利用してできるだろうが、org-mac-protocol をインストールしてみた結果うまく動かなかった。同ページにはサポートされているアプリケーションのリストに Firefox があげられているが (同梱の org-mac-protocol manual には Firefox は限定的サポートと書いてある) … ひとまず保留しておく。
Pingback: Firefox のページを emacs-w3m で開く « 日暮途遠(Linux)