key-combo v0.5をリリース:smartchrと同じく、キーに対して関数が割り当てられるように

key-combo v0.5をリリースしました
主な変更点は以下の通りです

  1. キーに関数を登録可能にした

変更詳細

詳細を説明します。
1.v0.4まではkey-comboのキーに登録できるのは挿入する文字列だけでした。カーソル位置の指定ぐらいはできるものの、それ以上複雑なことは出来ませんでした。smartchrには関数を登録できるため、smartchrを使い倒しているひとは移行ができなかったと思います。
ですがっっ、今日からは違います。key-comboにも関数を登録する機能がつきました。これで心おきなくkey-comboに移行出来ます。やったね♪(まだ足りない機能がある場合はお教え下さい)
それではサンプルと解説です。
キーは従来通りkey-combo-define-globalにて定義して下さい。一つのキーに対して、実行用の関数とクリーンアップ用の関数を「.」でつないだ形式で指定します
例えば

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

と設定すれば、「=」を入力すると「=」を挿入します。
さらに、ラムダ式も関数として受け付けます。
例えば

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

と設定すれば、「==」を入力すると「 = 」を挿入します。
もちろん、従来通り関数を指定する代わりに挿入する文字列を指定することもできます。例えば、

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

とすれば、「===」を入力すると「 == 」を挿入します。

また、同じキーが複数回続く設定はリストとすることでまとめて定義することができます。例えば、上記3つの上の設定をまとめて

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

とすることができます。

インストール方法

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

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

を評価するか、
marmaladeから
M-x package-install key-combo
でインストール可能です。

その他

今回は内部の実装を大幅に変更しました。
これで当初の目的だったsmartchrの代替という大きな山は越えた感じですね。
次はキーマップの割り当てをバッファローカルにしたりしてうまく整理したいとこですね。
あとはsequential-command的な機能の導入もしていこうと思ってます。