sequential-command.el使ってみた。

同じコマンドを連続実行することで挙動を変える(行頭→先頭など) sequential-command.el をリリース - http://rubikitch.com/に移転しました

リリースされたばかりの sequential-command.el を使ってみました。
一つのコマンドで複数の動作ができるのは思ったより便利でちょっとハマりそうです。
とりあえずポイントの前の単語を 大文字->キャピタライズ->小文字 の順に変更するコマンドを作ってみました。

(require 'sequential-command)

(define-sequential-command seq-kyr-backward-word
  seq-upcase-backward-word1
  seq-upcase-backward-word2
  seq-upcase-backward-word3)


(defun seq-upcase-backward-word1 ()
  (interactive)
  (upcase-word (- 1)))

(defun seq-upcase-backward-word2 ()
  (interactive)
  (capitalize-word (- 1)))

(defun seq-upcase-backward-word3 ()
  (interactive)
  (downcase-word (- 1)))

;; (global-set-key (kbd "M-u") 'seq-kyr-backward-word)

シンボルが必要なので

(define-sequential-command seq-kyr-backward-word
  (lambda () (interactive) (upcase-word (- 1)))
  (lambda () (interactive) (capitalize-word (- 1)))
  (lambda () (interactive) (downcase-word (- 1))))

の用に無名コマンド(勝手に命名)は渡せないみたいです。コマンドをクオートしないで渡しましょう。

(incf id:rubikitch)