howm の一覧表示画面で任意のファイルを削除する

ために以下のような elisp を書いてしばらく経つのだけど、
実際には elscreen-howm の削除機能を常用している。

;; 一覧表示(C-c , a )で d するとファイルを削除
(define-key howm-view-summary-mode-map "d" 'delete-howm-file)

(defun delete-howm-file ()
  (interactive)
  (let (filename year month pnt)
    (setq pnt (point))
    (beginning-of-line)
    (re-search-forward "\\(\\([0-9]+\\)-\\([0-9]+\\).*howm\\)" nil t)
    (setq filename (buffer-substring (match-beginning 1) (match-end 1)))
    (setq year (buffer-substring (match-beginning 2) (match-end 2)))
    (setq month (buffer-substring (match-beginning 3) (match-end 3)))
    (when (y-or-n-p "Delete this file? ")
      (delete-file (concat howm-directory year "/" month "/" filename))
      (message "Delete!")
      (howm-list-all)
      (goto-char pnt)
      )
    )
  )


elscreen-howm では、*.howm なファイルを開いた状態で、バッファの内容を全て消し、
C-c C-c すると自動的にファイルを削除してくれる。
ファイルの内容が空じゃない限り、C-c C-c はただバッファを閉じてくれるだけ。
あまり深く考えずに C-c C-c だけ覚えていれば使えるのでそこがいいんだろうなぁ。

ハマったところ

これを書いてるときに一番困ったのはキーバインドの割り当て。
howm-view-summary-mode-map に割り当ててるつもりがエラーが出て動いてくれなかった。
理由は、キーバインドの設定時に howm が読み込まれていないことだった。


各所で紹介されている howm の設定では、
C-c , , が最初に入力されたときに howm を読み込むようになっているので、
この設定では、.emacs に書かれている howm-view-summary-mode-map を Emacs が理解できない。
なので以下のように置換してあげると解決!

- (global-set-key "\C-c,," 'howm-menu)
+ (require 'howm-mode)