コード書き中(2)
(defmacro polyedit-set-toggle-key (toggle-key &rest args) (let* ((docp (stringp (car args))) (doc (if docp (car args) '((interactive)))) (ar (if docp (cdr args) args))) `(let ((func (gentemp "polyedit-toggle-mover"))) (si:*fset func (si:*set-function-name #'(lambda () (interactive) (series 2 (define-key #1=*polyedit-mode-map*) ,@ar)) func)) ,(if docp `(si:*putprop func ,doc 'lisp::function-documentation)) (define-key #1# ,toggle-key func) (setq #2=polyedit-toggle-alist (append '((,toggle-key func ,(if docp (car args)))) (delete ,toggle-key #2# :key #'car))))))
昨日書いたものの動作がいまいちだったので書き直した。
昨日のものだと、バイトコンパイルしたときに関数名が読み込めなくなる。
また、折角シンボル名を生成したのに、書き下してしまうと名前が衝突する可能性がある。
というところを直した。
まあ、バイトコンパイルするとすごく容量が増えるけど、動けばいいだろう。動けば。