- (eval-when (eval compile)
- (let (funcs keydefs pair)
- (while list
- (setq pair (apply 'its-make-select-func (car list)))
- (setq funcs (cons (car pair) funcs)
- keydefs (cons (cdr pair) keydefs))
- (setq list (cdr list)))
- `(progn
- ,@funcs
- (defun its-define-select-keys (map &optional fence)
- ,@keydefs)))))
+ (let (funcs keydefs pair)
+ (while list
+ (setq pair (apply 'its-make-select-func (car list))
+ funcs (cons (car pair) funcs)
+ keydefs (cons (cdr pair) keydefs)
+ list (cdr list)))
+ `(progn
+ ,@funcs
+ (defvar its-define-select-key-list ',keydefs))))
+
+(defmacro its-add-select-funcs (list)
+ (let (funcs keydefs pair)
+ (while list
+ (setq pair (apply 'its-make-select-func (car list))
+ funcs (cons (car pair) funcs)
+ keydefs (cons (cdr pair) keydefs)
+ list (cdr list)))
+ `(progn
+ ,@funcs
+ (setq its-define-select-key-list
+ (append ',keydefs its-define-select-key-list)))))
+
+(defun its-define-select-keys (map &optional fence)
+ (let ((key-list its-define-select-key-list))
+ (while key-list
+ (define-key map (nth 1 (car key-list)) (car (car key-list)))
+ (if fence
+ (define-key map (nth 2 (car key-list)) (car (car key-list))))
+ (setq key-list (cdr key-list)))))