Wanderlust

このエントリーをはてなブックマークに追加
709533
(defvar my-wl-cycle-folder-list
; (mapcar #'(lambda (l)
; (char-to-string (car l)))
; elmo-folder-type-alist))
'("%" "+" "-" "@"))

(defvar my-wl-cycle-folder-point 0)

(defadvice wl-summary-read-folder (around cycle-folder-type-ad activate)
(let ((minibuffer-local-completion-map my-wl-read-folder-map))
ad-do-it))

(setq my-wl-read-folder-map (copy-keymap minibuffer-local-completion-map))

(define-key my-wl-read-folder-map "\M- " #'my-wl-cycle-folder-type)

(defun my-wl-cycle-folder-type ()
(interactive)
(let (p-min)
(setq p-min
(if (and (not (featurep 'xemacs))
(eq emacs-major-version 21))
(save-excursion
(while (not (get-text-property (point) 'read-only))
(backward-char))
(forward-char)
(point))
1))
(cond ((= p-min
(point))
(insert (nth my-wl-cycle-folder-point my-wl-cycle-folder-list))
(setq my-wl-cycle-folder-point
(mod (1+ my-wl-cycle-folder-point)
(length my-wl-cycle-folder-list))))
((= (1+ p-min)
(point))
(backward-delete-char 1)
(insert (nth my-wl-cycle-folder-point my-wl-cycle-folder-list))
(setq my-wl-cycle-folder-point
(mod (1+ my-wl-cycle-folder-point)
(length my-wl-cycle-folder-list)))))))

こんなんはどうでしょう?
iswitchb みたく、folder-type だけでなく folder 自体もクルクル回せたら
いいかもしれんが俺にゃ無理っす。

あと、 cond の中の共通部分をすっきり書くには sub関数を用意する以外に
どうしたらいいかな? (cond の条件節は増える可能性があるとして)