2010-12-16

Emacs Evernote-mode -- Emacs から Evernote のノートを編集する

Emacs から Evernote のノートを編集できたらどれだけ便利だろう? 正にそんな EmacsLisp が開発されている。その名も evernote-mode.el。Emacs 22 以上で動作。バックエンドに Ruby (1.8.7 以上) を利用する。

本エントリーではインストール方法と簡単な使い方を紹介する。

Evernote-mode のインストール

まずは Google Code から emacs-evernote-mode プロジェクトのソースコードを入手する。ぼくは最近 Git に傾倒しているのでgit-svn を使ってソースコードを取得した。

$ cd project
$ git svn clone http://emacs-evernote-mode.googlecode.com/svn/trunk/ emacs-evernote
$ ls emacs-evernote
APACHE-LICENSE-2.0.txt  doc/  evernote-mode.el  ruby/

EmacsLisp のソースコードは一つだけ。主な作業は ruby でやっていて、evernote-mode.el はそのフロントエンドになっている。

まず、ruby スクリプトのインストールを行なう。

$ cd ~/project/emacs-evernote
$ cd ruby
$ sudo ruby setup.rb

次に EmacsLisp のソースコードを Emacs の load-path 上に置く。

$ cp evernote-mode.el ~/your/load/path

最後に .emacs に Evernote 用の設定を追加する。

;;
;; Evernote mode
;;
(setq evernote-enml-formatter-command '("w3m" "-dump" "-I" "UTF8" "-O" "UTF8")) ; optional
(require 'evernote-mode)
(global-set-key "\C-cec" 'evernote-create-note)
(global-set-key "\C-ceo" 'evernote-open-note)
(global-set-key "\C-ces" 'evernote-search-notes)
(global-set-key "\C-ceS" 'evernote-do-saved-search)
(global-set-key "\C-cew" 'evernote-write-note)
(global-set-key "\C-cep" 'evernote-post-region)
(global-set-key "\C-ceb" 'evernote-browser)

追加パッケージ

インストール作業が終了して、Evernote を開こうとしたら次の様なエラー・メッセージが出ることがある。

Unknown error (/usr/local/lib/site_ruby/1.8/thrift/transport/http_client_transport.rb:22:in `require': no such file to load -- net/https (LoadError))

これは、バックエンドで使っている ruby ライブラリーが足りていないために起きる。Ubuntu Linux 10.4 では、次のコマンドで足りない ruby ライブラリーを追加できる。

$ sudo apt-get install libhttpclient-ruby1.8

プロキシー

もし proxy を通さなければいけない場合は、.bashrc に次の一行を追加する。

export EN_PROXY=proxy.hoge.com:8080

簡単な使い方

C-cec (or M-x evernote-create-note) で新規の Evernote ノートを開いてみませう。

まず最初に Evernote のアカウントとパスワードを尋ねられる。

次にノートに付ける「タグ」を聞かれる。タグはカンマ区切りで複数設定可能。タグを付けたくない場合はそのまま RET

次はノートの名前 (タイトル)。

次に Edit mode を尋ねられる。Edit mode には XHTML と TEXT の 2 種類があるけど、今回は簡単な「TEXT」を選んでみる。

以上で、Evernote のノート用のバッファーが開かれる。ファイルの保存 (C-x C-s) をすると、自動的に Evernote 側に保存される様になっている。

簡単な使い方は以上。

ヘルプ

詳しい説明は本家ページの README をどうぞ。

落ち穂拾い

  • C-ceo: 既存のノートを開く
  • C-cew: バッファーを Evernote の新規ノートとして保存する。ローカルで書いたファイルを、Evernote にバックアップしたい時に重宝する
  • C-cep: バッファー全体ではなくリージョンを Evernote の新規ノートとして保存する
  • C-cet: ノートの「タグ」を変更する (変更後 C-x C-s で保存する必要あり)
  • C-cer: ノートの「名前」を変更する (変更後 C-x C-s で保存する必要あり)

Edit mode について

本エントリーでは簡単のため、TEXT モードのみの説明を行なった。Emacs-evernote-mode には TEXT モードの他に XHTML モードがある。

Evernote のノートにはリンクや太文字も書ける。これはただのテキストではない。どうやって実現しているのか? 実は Evernote のノートは ENML DTD に従う XML で書かれている。

DTD を読める人は enml2.dtd を読んでもらうとして、分からない人は HTML の簡易版と思ってもらえばいい。Emacs Evernote mode で Edit mode を「XHTML」にすると、直に ENML なテキストを編集できる。つまり、太字にしたり、リンクを張ったり、画像を貼ったりということが可能になる (多少の HTML の知識さえあれば!)

一旦、保存 (C-x C-s) すると ENML で書いたテキストが整形された上で「読み込み」専用モードになる。そこで C-x C-q してやると、「書き込み」モードに戻り、テキストの整形が解除されて再び ENML のソースコードが現れる。

ENML での編集が面倒になったら、C-cee で Edit mode を XHTML から TEXT に変更できる。逆に TEXT モードで編集後、少しノートに飾り付けをしたい場合にも C-cee で Edit mode を XHTML に変更可能。

あとがき

Emacs evernote-mode は EmacsLisp として久々に心ワクワクさせてくれる。まだ使い込んでいないので、早く使い回したい。

No comments:

Post a Comment