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)