open-junk-file + howmでサンプルコードのメモ

**の言語で〇〇する時はどうするんだっけ?みたいなメモをどう残すか。
こういう細かいメモは、新しい事を覚えた端から古い事を忘れてしまうので、かつて自分が試したコードは、出来るだけ手軽に検索出来る形で残しておきたい。という訳で、ただ置いておくだけで検索出来る場所、blogとかqiitaに、そういったメモを置いていた。しかし、これは「残す為の動作」がそれなりに重たくて、あんまりメモが溜まらない。大抵、M-x open-junk-file で一時ファイルを開いて、動作する事が確認出来たらもうそのメモは放っとかれてしまう。で、ハードディスクにファイル名の日付だけが手がかりとなったメモが大量に残る。
しかし、open-junk-fileでファイルを開く場所をhowmの管理下に設定しさえすれば、サンプルコードを書いてファイル保存するだけで、howmで検索できるようになるじゃん、と気が付いた。ついでに、拡張子から言語を判断して、ファイルの先頭に検索用のタグをコメントで入れておけば、一覧性も上がって便利なんではないかと。

;;; open junk file
(require 'open-junk-file)
;; howmの中にファイル作成
(setq open-junk-file-format "~/howm/junk/%Y/%m/%d_%H%M%S.")
;; howm用のタグを挿入
(defvar open-junk-ext-tags-alist
  '(("el" ";;" "ELISP")
    ("cpp" "//" "CPP")
    ("r" "#" "R")
    ("py" "#" "PYTHON")
    ("hs" "--" "HASKELL")
    ("scm" ";;" "SCHEME")))
(defadvice open-junk-file
  (after open-junk-file-insert-howm-comment-advice activate)
  "After open-junk-file, insert a tag into the opened buffer
to be searched by howm."
  (let* ((ext (replace-regexp-in-string "^.*\\.\\([^\\.]+\\)$" "\\1" buffer-file-name))
         (asc (assoc ext open-junk-ext-tags-alist))
         (prefix (cadr asc))
         (tag (caddr asc)))
    (insert prefix)
    (insert " %" tag)))

使い方(追記)

  • howmとopen-junk-fileが入っている事は前提。
  • 上のelispをinit.elに貼り付けて、通常通りにM-x open-junk-fileする。
  • 適当にメモを書いて保存した後、howmで検索する。
  • 下の画像は、howmの検索で"%elisp"を検索した所

howm画面