[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-28 538fc1d: Fix mode-line display in Calendar mode
From: |
Eli Zaretskii |
Subject: |
emacs-28 538fc1d: Fix mode-line display in Calendar mode |
Date: |
Wed, 8 Dec 2021 09:23:54 -0500 (EST) |
branch: emacs-28
commit 538fc1d0e07aed0e535d9e9f2063f429238df422
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>
Fix mode-line display in Calendar mode
* lisp/help.el (substitute-command-keys): New optional argument
NO-FACE, to avoid putting the 'help-key-binding' face on the key
bindings.
* lisp/calendar/calendar.el (calendar-mode-line-entry): Call
'substitute-command-keys' with the new optional argument non-nil.
(Bug#52366)
* doc/lispref/help.texi (Keys in Documentation): Document the new
optional argument of 'substitute-command-keys'.
* etc/NEWS: Announce the addition of a new argument to
'substitute-command-keys'.
---
doc/lispref/help.texi | 8 ++++++--
etc/NEWS | 4 +++-
lisp/calendar/calendar.el | 3 ++-
lisp/help.el | 17 +++++++++++------
4 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index a788852..a485718 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -372,11 +372,15 @@ quotes. You can customize it freely according to your
personal
preference.
@end defopt
-@defun substitute-command-keys string
+@defun substitute-command-keys string &optional no-face
+@vindex help-key-binding@r{ (face)}
This function scans @var{string} for the above special sequences and
replaces them by what they stand for, returning the result as a string.
This permits display of documentation that refers accurately to the
-user's own customized key bindings.
+user's own customized key bindings. By default, the key bindings are
+given a special face @code{help-key-binding}, but if the optional
+argument @var{no-face} is non-@code{nil}, the function doesn't add
+this face to the produced string.
@cindex advertised binding
If a command has multiple bindings, this function normally uses the
diff --git a/etc/NEWS b/etc/NEWS
index 8e38c36..734de07 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -635,7 +635,9 @@ This works like 'C-u M-x apropos-command' but is more
discoverable.
*** Keybindings in 'help-mode' use the new 'help-key-binding' face.
This face is added by 'substitute-command-keys' to any "\[command]"
substitution. The return value of that function should consequently
-be assumed to be a propertized string.
+be assumed to be a propertized string. To prevent the function from
+adding the 'help-key-binding' face, call 'substitute-command-keys'
+with the new optional argument NO-FACE non-nil.
Note that the new face will also be used in tooltips. When using the
GTK toolkit, this is only true if 'x-gtk-use-system-tooltips' is t.
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index ebce2ae..e06239a 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1723,7 +1723,8 @@ COMMAND is a command to run, ECHO is the help-echo text,
KEY
is COMMAND's keybinding, STRING describes the binding."
(propertize (or key
(substitute-command-keys
- (format "\\<calendar-mode-map>\\[%s] %s" command string)))
+ (format "\\<calendar-mode-map>\\[%s] %s" command string)
+ 'hands-off-my-face))
'help-echo (format "mouse-1: %s" echo)
'mouse-face 'mode-line-highlight
'keymap (make-mode-line-mouse-map 'mouse-1 command)))
diff --git a/lisp/help.el b/lisp/help.el
index 47faf44..941d4cf 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -1060,11 +1060,12 @@ is currently activated with completion."
result))
-(defun substitute-command-keys (string)
+(defun substitute-command-keys (string &optional no-face)
"Substitute key descriptions for command names in STRING.
Each substring of the form \\\\=[COMMAND] is replaced by either a
keystroke sequence that invokes COMMAND, or \"M-x COMMAND\" if COMMAND
-is not on any keys. Keybindings will use the face `help-key-binding'.
+is not on any keys. Keybindings will use the face `help-key-binding',
+unless the optional argument NO-FACE is non-nil.
Each substring of the form \\\\={MAPVAR} is replaced by a summary of
the value of MAPVAR as a keymap. This summary is similar to the one
@@ -1141,13 +1142,17 @@ Otherwise, return a new string."
(let ((op (point)))
(insert "M-x ")
(goto-char (+ end-point 3))
- (add-text-properties op (point)
- '( face help-key-binding
- font-lock-face
help-key-binding))
+ (or no-face
+ (add-text-properties
+ op (point)
+ '( face help-key-binding
+ font-lock-face help-key-binding)))
(delete-char 1))
;; Function is on a key.
(delete-char (- end-point (point)))
- (insert (help--key-description-fontified key)))))
+ (insert (if no-face
+ (key-description key)
+ (help--key-description-fontified key))))))
;; 1D. \{foo} is replaced with a summary of the keymap
;; (symbol-value foo).
;; \<foo> just sets the keymap used for \[cmd].
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- emacs-28 538fc1d: Fix mode-line display in Calendar mode,
Eli Zaretskii <=