]> git.eshelyaron.com Git - emacs.git/commitdiff
(add-minor-mode): Handle AFTER for keymaps. Don't
authorGerd Moellmann <gerd@gnu.org>
Wed, 3 May 2000 12:33:16 +0000 (12:33 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 3 May 2000 12:33:16 +0000 (12:33 +0000)
set TOGGLE's value.

lisp/subr.el

index 03e215a22308f4142fb250374836e5c02e9b1914..2256f33fac69c16e1c7e571c678175cf38fc77cc 100644 (file)
@@ -1502,10 +1502,9 @@ to `minor-mode-map-alist'.
 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 @@ It is currently not used."
               (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 @@ It is currently not used."
     
   (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