]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix rst-mode deprecated keybindings
authorDaniel Colascione <dancol@dancol.org>
Mon, 13 Jan 2014 23:50:20 +0000 (15:50 -0800)
committerDaniel Colascione <dancol@dancol.org>
Mon, 13 Jan 2014 23:50:20 +0000 (15:50 -0800)
lisp/ChangeLog
lisp/textmodes/rst.el

index 22a31f336ac07460fe62b75c3927f24f0478f8d3..bd194393feff6cd72e5d63fadc0c18d8adc07a05 100644 (file)
@@ -1,3 +1,9 @@
+2014-01-13  Daniel Colascione  <dancol@dancol.org>
+
+       * textmodes/rst.el (rst-define-key): Provide deprecated
+       keybindings through named functions instead of anonymous ones so
+       that "??" doesn't appear in describe-mode output.
+
 2014-01-13  Bastien Guerry  <bzg@gnu.org>
 
        * simple.el (define-alternatives): Call the selected command
index a533bdb75e3fc0aeddf2bfdfafc6a0b5c5a635e0..516431006f67663d4c4a4fe3c2be4483d29109f5 100644 (file)
@@ -611,17 +611,28 @@ KEYMAP, KEY, and DEF are as in `define-key'.  DEPRECATED key
 definitions should be in vector notation.  These are defined as
 well but give an additional message."
   (define-key keymap key def)
-  (dolist (dep-key deprecated)
-    (define-key keymap dep-key
-      `(lambda ()
-         ,(format "Deprecated binding for %s, use \\[%s] instead." def def)
-        (interactive)
-        (call-interactively ',def)
-        (message "[Deprecated use of key %s; use key %s instead]"
-                 (key-description (this-command-keys))
-                 (key-description ,key))))))
-
-;; Key bindings.
+  (when deprecated
+    (let* ((command-name (symbol-name def))
+           (forwarder-function-name
+            (if (string-match "^rst-\\(.*\\)$" command-name)
+                (concat "rst-deprecated-"
+                        (match-string 1 command-name))
+              (error "not an RST command: %s" command-name)))
+           (forwarder-function (intern forwarder-function-name)))
+      (unless (fboundp forwarder-function)
+        (defalias forwarder-function
+          (lexical-let ((key key) (def def))
+            (lambda ()
+              (interactive)
+              (call-interactively def)
+              (message "[Deprecated use of key %s; use key %s instead]"
+          (key-description (this-command-keys))
+          (key-description key))))
+          (format "Deprecated binding for %s, use \\[%s] instead."
+                  def def)))
+      (dolist (dep-key deprecated)
+        (define-key keymap dep-key forwarder-function)))))
+ ;; Key bindings.
 (defvar rst-mode-map
   (let ((map (make-sparse-keymap)))