From: Stefan Kangas Date: Fri, 19 Aug 2022 17:00:24 +0000 (+0200) Subject: Display new keybinding in obsolete command warning X-Git-Tag: emacs-29.0.90~1447^2~31 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=935e4da0e1389fd5a8f836ac81dc53d698f4439f;p=emacs.git Display new keybinding in obsolete command warning * 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. --- diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el index 5ae9d8368f0..40ed0344dfd 100644 --- a/lisp/emacs-lisp/macroexp.el +++ b/lisp/emacs-lisp/macroexp.el @@ -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 "."))))) diff --git a/lisp/simple.el b/lisp/simple.el index 8fb03f3b04f..d862c0e9a86 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -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."