Skip to content

Commit f822daf

Browse files
yay we work on python3
1 parent b788712 commit f822daf

File tree

4 files changed

+24
-6
lines changed

4 files changed

+24
-6
lines changed

pyrepl/keymap.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,11 @@ def parse_keys(key):
173173
def compile_keymap(keymap, empty=b''):
174174
r = {}
175175
for key, value in keymap.items():
176-
r.setdefault(key[0], {})[key[1:]] = value
176+
if isinstance(key, bytes):
177+
first = key[:1]
178+
else:
179+
first = key[0]
180+
r.setdefault(first, {})[key[1:]] = value
177181
for key, value in r.items():
178182
if empty in value:
179183
if len(value) != 1:

pyrepl/unix_eventqueue.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from pyrepl import keymap
2525
from pyrepl.console import Event
2626
from pyrepl import curses
27+
from .trace import trace
2728
from termios import tcgetattr, VERASE
2829
import os
2930
try:
@@ -56,11 +57,13 @@ def __init__(self, fd, encoding):
5657
our_keycodes = {}
5758
for key, tiname in _keynames.items():
5859
keycode = curses.tigetstr(tiname)
60+
trace('key {key} tiname {tiname} keycode {keycode!r}', **locals())
5961
if keycode:
60-
our_keycodes[keycode] = unicode(key)
62+
our_keycodes[keycode] = key
6163
if os.isatty(fd):
6264
our_keycodes[tcgetattr(fd)[6][VERASE]] = unicode('backspace')
6365
self.k = self.ck = keymap.compile_keymap(our_keycodes)
66+
trace('keymap {k!r}', k=self.k)
6467
self.events = []
6568
self.buf = []
6669
self.encoding=encoding
@@ -80,24 +83,27 @@ def flush_buf(self):
8083
return raw
8184

8285
def insert(self, event):
86+
trace('added event {event}', event=event)
8387
self.events.append(event)
8488

8589
def push(self, char):
8690
if char in self.k:
8791
k = self.k[char]
92+
trace('found map {k!r}', k=k)
8893
self.buf.append(char)
8994
if isinstance(k, dict):
9095
self.k = k
9196
else:
92-
self.events.append(Event('key', k, self.flush_buf()))
97+
self.insert(Event('key', k, self.flush_buf()))
9398
self.k = self.ck
9499
elif self.buf:
95100
keys = self.flush_buf()
96101
decoded = keys.decode(self.encoding, 'ignore') # XXX surogate?
97102
#XXX: incorrect
98-
self.events.extend(Event('key', c, c) for c in decoded)
103+
for c in decoded:
104+
self.insert(Event('key', c, c))
99105
self.buf = []
100106
self.k = self.ck
101107
self.push(char)
102108
else:
103-
self.events.append(Event('key', char, char))
109+
self.insert(Event('key', char.decode(self.encoding), char))

testing/test_keymap.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
from pyrepl.keymap import compile_keymap
33

44

5-
@pytest.mark.skip('completely wrong')
65
def test_compile_keymap():
76
k = compile_keymap({
87
b'a': 'test',

testing/test_unix_reader.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from pyrepl.unix_eventqueue import EventQueue
2+
3+
from pyrepl import curses
4+
5+
6+
@pytest.mark.xfail(run=False, reason='wtf segfault')
7+
def test_simple():
8+
q = EventQueue(0, 'utf-8')
9+

0 commit comments

Comments
 (0)