Mercurial > emacs
changeset 28794:2274787ba380
(add-minor-mode): Handle AFTER for keymaps. Don't
set TOGGLE's value.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Wed, 03 May 2000 12:33:16 +0000 |
parents | e56af637f7a2 |
children | 48790063f744 |
files | lisp/subr.el |
diffstat | 1 files changed, 16 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Wed May 03 11:39:25 2000 +0000 +++ b/lisp/subr.el Wed May 03 12:33:16 2000 +0000 @@ -1502,10 +1502,9 @@ Optional AFTER specifies that TOGGLE should be added after AFTER in `minor-mode-alist'. -Optional TOGGLE-FUN is there for compatiblity with other Emacssen. +Optional TOGGLE-FUN is there for compatiblity with other Emacsen. It is currently not used." (make-local-variable toggle) - (set toggle t) (when name (let ((existing (assq toggle minor-mode-alist)) @@ -1519,7 +1518,7 @@ (if found (let ((rest (cdr found))) (setcdr found nil) - (nconc found (list toggle name) rest)) + (nconc found (list (list toggle name)) rest)) (setq minor-mode-alist (cons (list toggle name) minor-mode-alist))))) (t @@ -1527,10 +1526,20 @@ (when keymap (let ((existing (assq toggle minor-mode-map-alist))) - (if existing - (setcdr existing keymap) - (setq minor-mode-map-alist (cons (cons toggle keymap) - minor-mode-map-alist)))))) + (cond ((null existing) + (let ((tail minor-mode-map-alist) found) + (while (and tail (not found)) + (if (eq after (caar tail)) + (setq found tail) + (setq tail (cdr tail)))) + (if found + (let ((rest (cdr found))) + (setcdr found nil) + (nconc found (list (cons toggle keymap)) rest)) + (setq minor-mode-map-alist (cons (cons toggle keymap) + minor-mode-map-alist))))) + (t + (setcdr existing keymap)))))) ;;; subr.el ends here