EvernoteとEmacsの連携(ただしWindows限定): カレントバッファの内容をEvernote新規Noteとして登録する

http://r.nanapi.jp/1970/」 という記事で、Evernoteコマンドラインで制御するENscriptというものの存在を知ったので、これを利用して、標記のemacs lispをつくった。

Windows限定ということもあり、需要は低いでしょうなぁ。

条件

  • Windows専用。
  • コードの ens-exec のパスは自分の環境に応じて書き直してください。

使い方

  • 下記スクリプト.emacs に登録。
  • M-x save-current-buffer-to-evernote
  • ミニバッファの指示に従って、ノートのタイトル、タグを入力する。
    • 入力されたタイトルに".txt"の拡張子を付加したものが、Evernote上でのNoteタイトルとなる。
    • 複数タグを付加するときは半角スペース区切りで。

スクリプト

(defun save-current-buffer-to-evernote (title tagstring)
  "カレントバッファの内容をevernoteに保存する"
  (interactive
   (list (read-string "Note Title: ")
	 (read-string "Tags (with SPC separation): ")
    ))
  (save-excursion
    (let* ((work-buffer-name "*en-workbuffer*")
	  (bufbody (buffer-substring (point-min) (point-max)))
	  (tmp-file-name (concat (getenv "TEMP") "\\" title ".txt"))
	  (ens-exec "\"C:/Program Files/Evernote/Evernote3.5/ENscript.exe\"")
	  (ens-com (concat ens-exec " createNote"
			   " /s \"" tmp-file-name "\""
			   " /t " (replace-regexp-in-string " +" " /t " tagstring)))
	  work-buffer)
      (if (get-buffer work-buffer-name)
	  (kill-buffer (get-buffer work-buffer-name)))
      (setq work-buffer (get-buffer-create work-buffer-name))
      (set-buffer work-buffer)

      (insert bufbody)
      (write-file tmp-file-name)
      (message ens-com)
      (shell-command ens-com)
      (kill-buffer work-buffer)
    )))

愚痴

  • ENscriptでは ".txt" の拡張子を持ったファイルしか登録できんのかよ。
  • せめて ".html" ファイルをリッチテキストのまま登録できれば良いのに、と思った。
  • そうすれば、いつまでも使い心地が改善しないevernoteエディタに代わって、org-mode で HTML-exportしたものをEvernoteへ登録、という夢のエディット環境が実現できるのに、と。