]> git.eshelyaron.com Git - emacs.git/commitdiff
Display new keybinding in obsolete command warning
authorStefan Kangas <stefankangas@gmail.com>
Fri, 19 Aug 2022 17:00:24 +0000 (19:00 +0200)
committerStefan Kangas <stefankangas@gmail.com>
Fri, 19 Aug 2022 17:00:24 +0000 (19:00 +0200)
* lisp/emacs-lisp/macroexp.el (macroexp--obsolete-warning):
* lisp/simple.el (command-execute): When warning about an obsolete
command, display the keybinding for the new command.

lisp/emacs-lisp/macroexp.el
lisp/simple.el

index 5ae9d8368f0bcb9c6e71718f6d204ccb892e3dcb..40ed0344dfddb129c650acb32cb40d4e3100ab82 100644 (file)
@@ -187,13 +187,15 @@ It should normally be a symbol with position and it defaults to FORM."
                msg))
     form)))
 
-(defun macroexp--obsolete-warning (fun obsolescence-data type)
+(defun macroexp--obsolete-warning (fun obsolescence-data type &optional key)
   (let ((instead (car obsolescence-data))
         (asof (nth 2 obsolescence-data)))
     (format-message
      "`%s' is an obsolete %s%s%s" fun type
      (if asof (concat " (as of " asof ")") "")
      (cond ((stringp instead) (concat "; " (substitute-command-keys instead)))
+           ((and instead key)
+            (format-message "; use `%s' (%s) instead." instead key))
            (instead (format-message "; use `%s' instead." instead))
            (t ".")))))
 
index 8fb03f3b04fad195d6d2a51b516373601a7bad85..d862c0e9a869ed802581cc216e3afe68c12406e0 100644 (file)
@@ -2716,12 +2716,15 @@ don't clear it."
          (t
           ;; Pass `cmd' rather than `final', for the backtrace's sake.
           (prog1 (call-interactively cmd record-flag keys)
-            (when (and (symbolp cmd)
-                       (get cmd 'byte-obsolete-info)
-                       (not (get cmd 'command-execute-obsolete-warned)))
+            (when-let ((info
+                        (and (symbolp cmd)
+                             (not (get cmd 'command-execute-obsolete-warned))
+                             (get cmd 'byte-obsolete-info))))
               (put cmd 'command-execute-obsolete-warned t)
               (message "%s" (macroexp--obsolete-warning
-                             cmd (get cmd 'byte-obsolete-info) "command"))))))))))
+                             cmd info "command"
+                             (help--key-description-fontified
+                              (where-is-internal (car info) nil t))))))))))))
 
 (defun command-execute--query (command)
   "Query the user whether to run COMMAND."