Skip to content

Commit 07345da

Browse files
authored
Merge pull request #77 from lysnikolaou/pyrepl-fix-disp-str-ctrl
Fix disp_str for control characters
2 parents 121ce2b + 755728d commit 07345da

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

Lib/_pyrepl/reader.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,12 @@ def disp_str(buffer: str) -> tuple[str, list[int]]:
6262
for c in buffer:
6363
if unicodedata.category(c).startswith("C"):
6464
c = r"\u%04x" % ord(c)
65+
b.append(1)
66+
b.extend([0] * (len(c) - 1))
67+
else:
68+
b.append(1)
69+
b.extend([0] * (str_width(c) - 1))
6570
s.append(c)
66-
b.append(1)
67-
b.extend([0] * (str_width(c) - 1))
6871
return "".join(s), b
6972

7073

Lib/test/test_pyrepl.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,12 @@ def test_history_search(self):
371371
output = multiline_input(reader)
372372
self.assertEqual(output, "1+1")
373373

374+
def test_control_character(self):
375+
events = code_to_events("c\x1d\n")
376+
reader = self.prepare_reader(events)
377+
output = multiline_input(reader)
378+
self.assertEqual(output, "c\x1d")
379+
374380

375381
class TestPyReplCompleter(TestCase):
376382
def prepare_reader(self, events, namespace):

0 commit comments

Comments
 (0)