ループ
偶々見たxyzzyに元々付いているのlispとか、拡張したlispのsourceを見たら、*post-command*にadd-hookするのばかりだったので、そういうものかと気にもせずに使っていたけど。
さっき見た
nazonoDiary - 特定の動作時以外に解除されるモードのようなもの
http://d.hatena.ne.jp/nazoking/20040305/1078421068
の使い方みたいに普通にループしてもいいらしい。というかloopっていうものの存在をまず知らなかったわけだけど。whileでやればいいかとか思っていたりした。
(defun dabbrev-popup-loop () "連続して dabbrev-popup を実行する。" (interactive) ; おまじない (let (c) ; 変数 c を使います (loop ; 永久ループ (dabbrev-popup) ; dabbrev-popup を実行 (setq c (read-char ed:*keyboard*)) ;キーボードから一文字読み取る (unless (and (eq (lookup-key-command c) 'self-insert-command) ; もし、そのキーに割り当てられたコマンドが 'self-insert-command で (or (syntax-word-p c) ; word 文字か (syntax-symbol-p c))) ; symbol 文字でなかったら (unread-char c) ; キーボードを読んでないことにして (return)) ;dabbrev-popup-loop を終了 ;それ以外の場合は (insert c) ; c をインサートして (refresh-screen)))) ; 画面を再描写してループに戻る
こんな使い方とかできるなら、そんなに連続する必要がないなら、loopでいいじゃないかとか、前に書いたのとかを書き直そうとか色々思ってみたり。