GNU bug report logs -
#27270
display-raw-bytes-as-hex generates ambiguous output for Emacs strings
Previous Next
Reported by: Paul Eggert <eggert <at> cs.ucla.edu>
Date: Wed, 7 Jun 2017 03:59:01 UTC
Severity: wishlist
Tags: moreinfo
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
[Message part 1 (text/plain, inline)]
Your bug report
#27270: display-raw-bytes-as-hex generates ambiguous output for Emacs strings
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 27270 <at> debbugs.gnu.org.
--
27270: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27270
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
[Message part 3 (text/plain, inline)]
On 4/27/22 10:22, Lars Ingebrigtsen wrote:
> Paul Eggert <eggert <at> cs.ucla.edu> writes:
>
>> Could you explain what you mean by "change the output"? (Sorry, I'm
>> not seeing it.)
>
> I said earlier:
>
>> display-raw-bytes-as-hex is a display setting. You want to change it so
>> that the data output will be different
Still not quite following, as I had been thinking more recently of
changing only how display-raw-bytes-as-hex displays.
That being said, I looked into the code and found that what I was asking
for would be quite a pain to implement - more trouble than it's worth,
anyway - so I withdraw the suggestion and am closing the bug report.
I installed the attached, which documents the situation.
[0001-Document-807-etc.-in-raw-byte-display.patch (text/x-patch, attachment)]
[Message part 5 (message/rfc822, inline)]
With the default octal display format one can copy text out of a terminal window
and into an Emacs string, reliably. With the new hex display this doesn't work
any more, unfortunately. For example, if I run this shell script:
printf 'x\2205y\n' >foo.txt
LC_ALL=C emacs -nw --color=no --eval '(progn (setq display-raw-bytes-as-hex t)
(find-file-literally "foo.txt"))'
then on the terminal display I see:
x\x905y
If I cut and paste this (using my windowing system) into an Emacs string, like this:
"x\x905y"
and then evaluate the string, the result is the string "xअy", that is, a
3-character string with the characters "x", "अ", and "y", where the middle
character is U+090F DEVANAGARI LETTER A. This is an incorrect representation, as
the buffer actually contains the four characters "x", "\x90", "5", and "y". The
problem is that the string has glued together the representation of the
character "\x90" to the representation of the character "5", resulting in the
representation of the character "\x905" which is not accurate.
Please change the behavior of display-raw-bytes-as-hex so that it is not
ambiguous in this way.
A simple solution would be to display this instead:
x\x90\x35y
though that is awkward because it means the ASCII 0-9, a-f, A-F would be
displayed as hexadecimal escapes when they follow another hexadecimal escape.
Perhaps we can think of a better approach. One possibility would be to define
and use a new string escape \Xxx that contains at most two hex digits.
By the way, I expected display-raw-bytes-as-hex to affect how Emacs displays
Emacs strings, too. Shouldn't it?
This bug report was last modified 3 years and 109 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.