summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/lucid.el
diff options
context:
space:
mode:
authorJim Blandy <jimb@redhat.com>1993-03-14 05:50:49 +0000
committerJim Blandy <jimb@redhat.com>1993-03-14 05:50:49 +0000
commit3e6580d01d4ce6f5942254a5136f3741d78bd998 (patch)
tree33b0a201cf968f4176a0681034233027fd0b0eb3 /lisp/emacs-lisp/lucid.el
parent0b74cf8cd89b9daa48966d4e2ab10cf0f52dc1d7 (diff)
downloademacs-3e6580d01d4ce6f5942254a5136f3741d78bd998.tar.gz
*** empty log message ***
Diffstat (limited to 'lisp/emacs-lisp/lucid.el')
-rw-r--r--lisp/emacs-lisp/lucid.el17
1 files changed, 17 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/lucid.el b/lisp/emacs-lisp/lucid.el
index 36600f540b6..6412b0bc8f4 100644
--- a/lisp/emacs-lisp/lucid.el
+++ b/lisp/emacs-lisp/lucid.el
@@ -44,3 +44,20 @@
(if (eq (nth 2 plist) prop)
(setcdr (cdr plist) (nthcdr 4 plist)))
(setq plist (cdr (cdr plist))))))
+
+(defun map-keymap (function keymap)
+ "Call FUNCTION for every binding in KEYMAP.
+This includes bindings inherited from a parent keymap.
+FUNCTION receives two arguments each time it is called:
+the character (more generally, the event type) that is bound,
+and the binding it has."
+ (while (consp keymap)
+ (if (consp (car keymap))
+ (funcall function (car (car keymap)) (cdr (car keymap)))
+ (if (vectorp (car keymap))
+ (let ((i (length (car keymap)))
+ (vector (car keymap)))
+ (while (>= i 0)
+ (funcall function i (aref vector i))
+ (setq i (1- i))))))
+ (setq keymap (cdr keymap))))