all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Clément Pit-Claudel" <cpitclaudel@gmail.com>
To: Robert Pluim <rpluim@gmail.com>
Cc: 37785@debbugs.gnu.org
Subject: bug#37785: [PATCH] Add a way to disable substitution of command keys in help strings
Date: Thu, 17 Oct 2019 08:01:58 -0400	[thread overview]
Message-ID: <936c65e4-d49b-33da-ad5a-ba854c0df1ff@gmail.com> (raw)
In-Reply-To: <m2k1931zal.fsf@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 638 bytes --]

On 2019-10-17 05:44, Robert Pluim wrote:
>     Clément> * doc/lispref/text.texi (Special Properties), etc/NEWS: Document
>     Clément> the effect of 'show-help-inhibit-substitution'
> 
> Full stops at the end of sentences. Also, I think I prefer Eli's name,
> mainly because yours combines 'show' with 'inhibit', which I find
> jarring, and because Eli's contains 'help-echo', which mirrors the
> name of the affected property.

The property affects more than help-echo strings: it affects anything that is fed to show-help-function.  That's why I changed the name; WDYT?

I've applied all the other comments; thanks a lot!

Clément.

[-- Attachment #2: 0001-Add-a-way-to-disable-substitution-of-command-keys-in.patch --]
[-- Type: text/x-patch, Size: 4319 bytes --]

From 665447d7c240c30976f41cf54225b7ea052d1a23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20Pit-Claudel?= <clement.pitclaudel@live.com>
Date: Wed, 16 Oct 2019 21:28:47 -0400
Subject: [PATCH] Add a way to disable substitution of command keys in help
 strings

* src/keyboard.c (show_help_substitute_command_keys): New function
(show_help_echo, parse_menu_item): Use it.
(syms_of_keyboard): Define Qshow_help_inhibit_substitution.

* doc/lispref/text.texi (Special Properties), etc/NEWS: Document
the effect of 'show-help-inhibit-substitution'.
---
 doc/lispref/text.texi |  8 +++++---
 etc/NEWS              |  5 +++++
 src/keyboard.c        | 23 ++++++++++++++++++++---
 3 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index d7b04d2934..4f7e480443 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -3736,9 +3736,11 @@ Special Properties
 @pxref{Extended Menu Items}), or tool bar help strings (@pxref{Tool
 Bar}).  The specified function is called with one argument, the help
 string to display, which is passed through
-@code{substitute-command-keys} before being given to the function; see
-@ref{Keys in Documentation}.  Tooltip mode (@pxref{Tooltips,,, emacs,
-The GNU Emacs Manual}) provides an example.
+@code{substitute-command-keys} before being given to the function,
+unless the help string has a non-nil
+@code{show-help-inhibit-substitution} property on its first character;
+see @ref{Keys in Documentation}.  Tooltip mode (@pxref{Tooltips,,,
+emacs, The GNU Emacs Manual}) provides an example.
 @end defvar
 
 @defvar face-filters-always-match
diff --git a/etc/NEWS b/etc/NEWS
index 4b693aaaa1..1002667468 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2752,6 +2752,11 @@ in other packages are now obsolete aliases of 'xor'.
 +++
 ** 'define-globalized-minor-mode' now takes BODY forms.
 
++++
+** New text property 'show-help-inhibit-substitution'.
+Setting this on the first character of a help string disables
+conversion via 'substitute-command-keys'.
+
 \f
 * Changes in Emacs 27.1 on Non-Free Operating Systems
 
diff --git a/src/keyboard.c b/src/keyboard.c
index a16d13cc7b..39d608d52f 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -2019,6 +2019,22 @@ make_ctrl_char (int c)
   return c;
 }
 
+/* Substitute key descriptions and quotes in HELP, unless its first
+   character has a non-nil show-help-inhibit-substitution property.  */
+
+static Lisp_Object
+show_help_substitute_command_keys (Lisp_Object help)
+{
+  if (STRINGP (help)
+      && SCHARS (help) > 0
+      && !NILP (Fget_text_property (make_fixnum(0),
+                                    Qshow_help_inhibit_substitution,
+                                    help)))
+    return help;
+
+  return Fsubstitute_command_keys(help);
+}
+
 /* Display the help-echo property of the character after the mouse pointer.
    Either show it in the echo area, or call show-help-function to display
    it by other means (maybe in a tooltip).
@@ -2078,7 +2094,7 @@ show_help_echo (Lisp_Object help, Lisp_Object window, Lisp_Object object,
   if (STRINGP (help) || NILP (help))
     {
       if (!NILP (Vshow_help_function))
-	call1 (Vshow_help_function, Fsubstitute_command_keys (help));
+	call1 (Vshow_help_function, show_help_substitute_command_keys (help));
       help_echo_showing_p = STRINGP (help);
     }
 }
@@ -7652,7 +7668,7 @@ parse_menu_item (Lisp_Object item, int inmenubar)
       if (CONSP (item) && STRINGP (XCAR (item)))
 	{
 	  ASET (item_properties, ITEM_PROPERTY_HELP,
-		Fsubstitute_command_keys (XCAR (item)));
+		show_help_substitute_command_keys (XCAR (item)));
 	  start = item;
 	  item = XCDR (item);
 	}
@@ -7716,7 +7732,7 @@ parse_menu_item (Lisp_Object item, int inmenubar)
 		{
 		  Lisp_Object help = XCAR (item);
 		  if (STRINGP (help))
-		    help = Fsubstitute_command_keys (help);
+		    help = show_help_substitute_command_keys (help);
 		  ASET (item_properties, ITEM_PROPERTY_HELP, help);
 		}
 	      else if (EQ (tem, QCfilter))
@@ -11052,6 +11068,7 @@ syms_of_keyboard (void)
   /* Tool-bars.  */
   DEFSYM (QCimage, ":image");
   DEFSYM (Qhelp_echo, "help-echo");
+  DEFSYM (Qshow_help_inhibit_substitution, "show-help-inhibit-substitution");
   DEFSYM (QCrtl, ":rtl");
 
   staticpro (&item_properties);
-- 
2.17.1


  reply	other threads:[~2019-10-17 12:01 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-17  1:41 bug#37785: [PATCH] Add a way to disable substitution of command keys in help strings Clément Pit-Claudel
2019-10-17  9:44 ` Robert Pluim
2019-10-17 12:01   ` Clément Pit-Claudel [this message]
2019-10-17 13:13     ` Eli Zaretskii
2019-10-17 13:47       ` Clément Pit-Claudel
2019-10-17 14:06         ` Eli Zaretskii
2019-10-17 15:53           ` Clément Pit-Claudel
2019-10-17 17:18             ` Eli Zaretskii
2019-10-19 20:35               ` Clément Pit-Claudel
2019-10-20 12:08                 ` Eli Zaretskii
2019-10-21  1:53                   ` Clément Pit-Claudel
2019-10-17 15:06         ` Robert Pluim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=936c65e4-d49b-33da-ad5a-ba854c0df1ff@gmail.com \
    --to=cpitclaudel@gmail.com \
    --cc=37785@debbugs.gnu.org \
    --cc=rpluim@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.