Terry J. Reedy added the comment:

Tk Text (and other widgets, but Text is the main issue) has two display 
problems: astral chars and long lines (over a thousand chars, say).  These 
problems can manifest in various places: file names, shell input (keyboard or 
clipboard), shell output, editor input (keyboard, clipboard, or file).  IDLE 
needs to take more control over what is displayed to work around both problems.

Tk Text also has a display feature: substring tagging.  I have been heistant to 
simple replace astral chars with their \U000hhhhh expansion because of the 
aliasing problem: in shell output, for instance, the user would not know if the 
program wrote 1 char or 10.  It would also be impossible to know if a reverse 
transformation might be needed.  Tagging astral expansions would solve both 
problems.

import re

astral = re.compile(r'([^\x00-\uffff])')
s = 'X\U00011111Y\U00011112\U00011113Z'
for i, ss in enumerate(re.split(astral, s)):
    if not i%2:
        print(ss, end='')
    else:
        print(r'\\U%08x' % ord(ss), end='')
# prints
X\\U00011111Y\\U00011112\\U00011113Z

Now replace print with test.insert, with an 'astral' tag for the second.  tk 
will not double '\'s.  Astral tag could switch, for instance, to underline 
version of current font.  This should work with any color scheme.

[Separate but related issue: augment Format or context menu with functions to 
convert between literal char, escape string, and name representation (using 
unicodedatabase).]

----------
nosy: +terry.reedy
resolution: duplicate -> 
versions: +Python 3.6 -Python 2.7, Python 3.4

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue21084>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to