GNU bug report logs - #23254
25.0.90; substitute-command-keys does not preserve text properties

Previous Next

Package: emacs;

Reported by: Clément Pit--Claudel <clement.pitclaudel <at> live.com>

Date: Sat, 9 Apr 2016 18:59:01 UTC

Severity: normal

Found in version 25.0.90

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Clément Pit--Claudel <clement.pitclaudel <at> live.com>
Subject: bug#23254: closed (Re: 25.0.90; substitute-command-keys does not
 preserve text properties)
Date: Thu, 14 Apr 2016 15:29:01 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#23254: 25.0.90; substitute-command-keys does not preserve text properties

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 23254 <at> debbugs.gnu.org.

-- 
23254: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23254
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Clément Pit--Claudel <clement.pitclaudel <at> live.com>
Cc: 23254-done <at> debbugs.gnu.org
Subject: Re: 25.0.90; substitute-command-keys does not preserve text properties
Date: Thu, 14 Apr 2016 08:28:25 -0700
[Message part 3 (text/plain, inline)]
Although substitute-command-keys has never kept text properties when it 
makes a change, it is annoying that merely substituting quotes strips 
the properties, so I installed the attached patch into emacs-25 to fix 
this particular problem. Thanks for reporting it.
[0001-substitute-command-keys-keeps-quotes-text-props.patch (application/x-patch, attachment)]
[Message part 5 (message/rfc822, inline)]
From: Clément Pit--Claudel <clement.pitclaudel <at> live.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 25.0.90; substitute-command-keys does not preserve text properties
Date: Sat, 9 Apr 2016 14:58:29 -0400
[Message part 6 (text/plain, inline)]
In Emacs 25, substitute-command-keys removes text properties of strings containing quotes:

> In Emacs 25:
(substitute-command-keys (propertize "`a'" 'prop 'val))
"‘a’"

> In Emacs 24.5:
(substitute-command-keys (propertize "`a'" 'prop 'val))
#("`a'" 0 3 (prop val))

As Eli pointed out on the mailing list,

> Anything that is substituted has its test properties removed:
> 
>   (substitute-command-keys (propertize "\\[forward-char]" 'prop 'val))
>    => "C-f"
> 
> The above is from Emacs 24.5.
> 
> I think patches are welcome to reinstate the properties.

This is an issue in particular for docstrings:

(defcustom my/pretty/set/option nil
  "Demo text properties in customize."
  :group 'emacs
  :type `(set (const :tag ,(concat (propertize "Title of option 1 (bold on both 24.5 and 25)" 'face '(:weight bold))
                                   "\n   "
                                   (propertize "Docs of option 1, in a smaller font on both 24.5 and 25." 'face '(:height 0.9))))
              (const :tag ,(concat (propertize "Title of option 2 (`bold' on 24.5 but not 25)" 'face '(:weight bold))
                                   "\n   "
                                   (propertize "Docs of option 2, in a smaller font on 24.5, but not 25." 'face '(:height 0.9))))))

This example uses text properties on `:tag's to make the customize buffer more readable. This works fine in GNU Emacs 24.5, but it stopped working on master (and emacs-25), because of substitute-command-keys replacing quotes and as a side effect dropping text properties.

Clément.

[signature.asc (application/pgp-signature, attachment)]

This bug report was last modified 9 years and 96 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.