]> git.eshelyaron.com Git - emacs.git/commitdiff
(map-keymap-internal): New function.
authorRichard M. Stallman <rms@gnu.org>
Tue, 16 Nov 2004 17:05:18 +0000 (17:05 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 16 Nov 2004 17:05:18 +0000 (17:05 +0000)
lisp/subr.el

index d2b836a5e4fcee85c16b502a57e221b7d7153d2b..c8dfedbd8c6bc069efa2295e8c6520729b673b76 100644 (file)
@@ -484,6 +484,24 @@ The order of bindings in a keymap matters when it is used as a menu."
            (setq inserted t)))
       (setq tail (cdr tail)))))
 
+(defun map-keymap-internal (function keymap &optional sort-first)
+  "Implement `map-keymap' with sorting.
+Don't call this function; it is for internal use only."
+  (if sort-first
+      (let (list)
+       (map-keymap (lambda (a b) (push (cons a b) list))
+                   keymap)
+       (setq list (sort list
+                        (lambda (a b)
+                          (setq a (car a) b (car b))
+                          (if (integerp a)
+                              (if (integerp b) (< a b)
+                                t)
+                            (if (integerp b) t
+                              (string< a b))))))
+       (dolist (p list)
+         (funcall function (car p) (cdr p))))
+    (map-keymap function keymap)))
 
 (defmacro kbd (keys)
   "Convert KEYS to the internal Emacs key representation.