@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

= EmacsからEvernoteを使う(+ exec-pathの設定)

[2010-11-16 00:45:35]
>>>[emacs]
>>>[evernote]
cf.http://code.google.com/p/emacs-evernote-mode/wiki/README_Japanese

友達がEvernoteとか言ってたから,Emacsにはないんだよねー.APIでも見てみるか→サンプルみたいなのが紹介されてる→emacs-evernote-modeあるやん

というわけです.ようやくうまく動いたので,紹介します.

emacs-evernote-mode - Functions for editing Evernote notes directly from Emacs - Google Project Hostingの右にあるFeatured downloads:からダウンロード.
現時点ではevernote-mode-0_10.zipが最新って...30分前にバージョン上がってる!

一旦中断.再開しまして,インストールに手間取っている間に検索ができるようになったみたいです.

作者が日本人の方で,日本語ドキュメントもしっかりしてます.README

インストール

このREADMEページの最後にインストール方法が載ってます.

zipを解凍して,

% ~/Downloads/evernote-mode-0_10/ruby
% sudo ruby setup.rb
% cp ../evernote-mode.el ~/.emacs.d/path/to/your/load-path

もしかするとrubyの設定によってはここでうまくいかないのかな?自分はMacPortsrubyでうまいこといきました.

% which ruby
/opt/local/bin/ruby
% ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10]

そんで,init.elに設定を追加します.

(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)

そんで,M-x eval-bufferすれば上の設定が読み込まれるので,C-ceoでノートを開いたり,新しくノートを書いたり,好きにやっちゃってください.ドキュメントに食わしすぎるくらいの説明があるので,ここでは省きます.

はまったら

私はここではまりました.

Unknown error.

最終的にターミナルでのパスとEmacsのcall-processが見ているパス(変数exec-path)が違うことが原因でした.

(apply 'call-process "which"
       nil t nil '("ruby"))

これをeval(C-xC-e)すると/usr/bin/rubyとか言うんですね./opt/local/bin/rubyが正しいの.

で,exec-pathを設定する時に,重複しないように登録するようになってたから,/opt/local/binがパスの上位に来てなかったんですね.

というわけでこんな感じの設定をinit.elに加えました.これはevernote-modeの設定とは直接関係ないので,前後関係は特に関係ないです

;; http://sakito.jp/emacs/emacsshell.html#path
;; より下に記述した物が PATH の先頭に追加されます
(dolist (dir (list
              "/usr/X11/bin"
              "/usr/local/bin"
              "/sbin"
              "/usr/sbin"
              "/bin"
              "/usr/bin"
              "/usr/local/mysql/bin"
              "/Developer/Tools"
              "/usr/local/sbin"
              "/opt/local/sbin"
              "/opt/local/bin" ;; これが/usr/binよりも下に書いてあればよい
              "/usr/local/bin"
              (expand-file-name "~/bin")
              (expand-file-name "~/bin/gnuplot")
              ))
  ;; PATH と exec-path に同じ物を追加します
  (when ;; (and 
         (file-exists-p dir) ;; (not (member dir exec-path)))
    (setenv "PATH" (concat dir ":" (getenv "PATH")))
    (setq exec-path (append (list dir) exec-path))))

sakitoさんのEmacs 上で快適に Bash や Zsh を利用する設定 : 紹介マニアこの設定を参考に自分用にターミナルのecho $PATHからそのまま持ってきました.

そのままだと重複しないようになってたので,とりあえず(not (member dir exec-path))の部分をコメントアウトして,重複しててもexec-pathに追加するようにしました.

これで使えるようになりました.

使ってみる

  • C-c e o(evernote-open-note)を実行するとEvernoteのサーバーとやり取りして,ユーザー名とパスワードを聞いてきます(最初だけ)
  • 次に絞り込むタグを聞いてきます.何も入れずにEnterを押すと全てのタグをとってきます
  • ミニバッファで絞り込んだノートを選択すればそのノートをバッファに開けます.(anythingいれてるから,anythingで絞り込んで選択できた)
  • EvernoteのノートはXMLで書かれてるんで,XMLを直接編集するか,TEXTモードに切り替えて(C-c e e)テキストだけ編集することもできます
  • XMLの文法的にミスってたら教えてくれるみたいです.試してませんが

こんな感じです.

まとめときながら

じつはEvernoteほとんど使ってないんです.Emacsで使えそうになかったから.ノートの一覧が出てきます.とか言っときながら,Welcome to Evernoteとあともう一個のノートしか出てきませんでした笑

このブログ見てEvernoteEmacsを使う人が増えたら,さらに便利になるかもしれませんね.anything-c-source-evernotesとかとか