key-combo v1.0をリリース:クリーンアップ関数を指定しなくてもよくなりました

key-combo v1.0をリリースしました。大きな変更を入れて設定に互換性がなくなったため、メジャーバージョンとしました。変更点は以下です

  1. クリーンアップ関数を指定しなくてもよくなりました
  2. key-combo-describeでの関数がわかりやすくなりました

変更詳細

詳細を説明します。key-comboはv0.5でキーに関数を登録可能になりました。しかし、v0.7までは登録する際には実行用の関数とともにクリーンアップ用の関数を指定する必要がありました。v1.0からはundoをうまいこと利用するようになったため、キーの定義をスッキリ書けるようになりました。
例えば0.7までは挿入する系コマンドを登録する場合

(key-combo-define-global (kbd "=")
  '(self-insert-command . delete-backward-char))

(key-combo-define-global (kbd "==")
  '((lambda() (insert " = ")) .
    (lambda() (delete-backward-char 3))))

のようにクリーンアップをするための関数も一緒に登録する必要がありました。

しかし、v1.0からは

(key-combo-define-global (kbd "=")
  'self-insert-command)

(key-combo-define-global (kbd "==")
  (lambda() (insert " = ")))

とするだけで、クリーンアップまでしてくれます。

また、同じキーが複数回続く設定は

(key-combo-define-global
  (kbd "=")
    '(self-insert-command
     (lambda() (insert " = "))
     " == "))

のようになります。
さらに移動系のコマンドであっても、同様に書けるので

(key-combo-define-global (kbd "C-e")
  '(end-of-line
    (lambda () (goto-char (point-max)))
    key-combo-return))

のように設定するようになりました。

インストール方法

ソースがgithubにおいてあるので

(auto-install-from-url "https://raw.github.com/uk-ar/key-combo/4c439997dc2602980234ca38b530e9c901ff0290/key-combo.el")

を評価するか、
marmaladeから

M-x package-install key-combo

でインストール可能です。

感想

smartchrを使っていた上で、もう一つ不満だったのが自分で関数を登録するときにクリーンアップ用の関数を書かなければならないことでした。毎回挿入するものが変わらなければ簡単ですが、状況に応じて挿入するものが変わるような関数(comment-dwimやkey-combo v0.7をリリース:直前に空白があった場合は空白を二重に入れないように - むしゃくしゃしてやった)はクリーンアップ関数を書くのが無理だと思ってました。
undoをなんとかうまく使えないかと思ってたんですが、Advent Calendarには間に合わなかったためそのままリリースしました。今回、試行錯誤してundo-primitiveと組み合わせたらうまく動いたためundoを使った方式に切り替えました。
ただ、よくなっていることは確かなのですが一旦ちゃんと情報をまとめないとなぁと思ってます。