]> git.eshelyaron.com Git - emacs.git/commitdiff
(string-key-binding): Renamed from
authorGerd Moellmann <gerd@gnu.org>
Fri, 9 Mar 2001 16:24:53 +0000 (16:24 +0000)
committerGerd Moellmann <gerd@gnu.org>
Fri, 9 Mar 2001 16:24:53 +0000 (16:24 +0000)
mode-line-key-binding.  Handle any event on a string.  Check for
`keymap' properties as well as `local-map' properties.

lisp/ChangeLog
lisp/help.el

index a121cc8ed57477dfc437ee73fb8830d360e2d172..9be4546aa825ab8a1698c5d4cac56879a557f4df 100644 (file)
@@ -1,5 +1,9 @@
 2001-03-09  Gerd Moellmann  <gerd@gnu.org>
 
+       * help.el (string-key-binding): Renamed from
+       mode-line-key-binding.  Handle any event on a string.  Check for
+       `keymap' properties as well as `local-map' properties.
+
        * comint.el (comint-insert-clicked-input): Use the last key
        from this-command-keys to lookup the global key definition.
 
index 84f3f52824e9207d68b60fcba0444215fd08489f..83d8a65a9c96ad079749c90230f5d3ae29b239d7 100644 (file)
@@ -206,17 +206,24 @@ With arg, you are asked to choose which language."
       (goto-char (point-min))
       (set-buffer-modified-p nil))))
 
-(defun mode-line-key-binding (key)
-  "Value is the binding of KEY in the mode line or nil if none."
-  (let (string-info defn)
-    (when (and (eq 'mode-line (aref key 0))
-              (consp (setq string-info (nth 4 (event-start (aref key 1))))))
-    (let* ((string (car string-info))
-          (pos (cdr string-info))
-          (local-map (and (> pos 0)
-                          (< pos (length string))
-                          (get-text-property pos 'local-map string))))
-      (setq defn (and local-map (lookup-key local-map key)))))
+(defun string-key-binding (key)
+  "Value is the binding of KEY in a string.
+If KEY is an event on a string, and that string has a `local-map'
+or `keymap' property, return the binding of KEY in the string's keymap."
+  (let* ((defn nil)
+        (start (when (vectorp key)
+                 (if (memq (aref key 0) '(mode-line header-line))
+                     (event-start (aref key 1))
+                   (event-start (aref key 0)))))
+        (string-info (and (consp start) (nth 4 start))))
+    (when string-info
+      (let* ((string (car string-info))
+            (pos (cdr string-info))
+            (local-map (and (> pos 0)
+                            (< pos (length string))
+                            (or (get-text-property pos 'local-map string)
+                                (get-text-property pos 'keymap string)))))
+       (setq defn (and local-map (lookup-key local-map key)))))
     defn))
 
 (defun describe-key-briefly (key &optional insert)
@@ -239,7 +246,7 @@ If INSERT (the prefix arg) is non-nil, insert the message in the buffer."
            (set-buffer (window-buffer window))
            (goto-char position)))
       ;; Ok, now look up the key and name the command.
-      (let ((defn (or (mode-line-key-binding key)
+      (let ((defn (or (string-key-binding key)
                      (key-binding key)))
            (key-desc (key-description key)))
        (if (or (null defn) (integerp defn))
@@ -324,7 +331,7 @@ If FUNCTION is nil, applies `message' to it, thus printing it."
          (progn
            (set-buffer (window-buffer window))
            (goto-char position)))
-      (let ((defn (or (mode-line-key-binding key) (key-binding key))))
+      (let ((defn (or (string-key-binding key) (key-binding key))))
        (if (or (null defn) (integerp defn))
            (message "%s is undefined" (key-description key))
          (with-output-to-temp-buffer "*Help*"