Author: Ronny Pfannschmidt <[email protected]>
Branch:
Changeset: r182:7978b2d43a7f
Date: 2012-05-03 12:14 +0200
http://bitbucket.org/pypy/pyrepl/changeset/7978b2d43a7f/
Log: yay we work on python3
diff --git a/pyrepl/keymap.py b/pyrepl/keymap.py
--- a/pyrepl/keymap.py
+++ b/pyrepl/keymap.py
@@ -173,7 +173,11 @@
def compile_keymap(keymap, empty=b''):
r = {}
for key, value in keymap.items():
- r.setdefault(key[0], {})[key[1:]] = value
+ if isinstance(key, bytes):
+ first = key[:1]
+ else:
+ first = key[0]
+ r.setdefault(first, {})[key[1:]] = value
for key, value in r.items():
if empty in value:
if len(value) != 1:
diff --git a/pyrepl/unix_eventqueue.py b/pyrepl/unix_eventqueue.py
--- a/pyrepl/unix_eventqueue.py
+++ b/pyrepl/unix_eventqueue.py
@@ -24,6 +24,7 @@
from pyrepl import keymap
from pyrepl.console import Event
from pyrepl import curses
+from .trace import trace
from termios import tcgetattr, VERASE
import os
try:
@@ -56,11 +57,13 @@
our_keycodes = {}
for key, tiname in _keynames.items():
keycode = curses.tigetstr(tiname)
+ trace('key {key} tiname {tiname} keycode {keycode!r}', **locals())
if keycode:
- our_keycodes[keycode] = unicode(key)
+ our_keycodes[keycode] = key
if os.isatty(fd):
our_keycodes[tcgetattr(fd)[6][VERASE]] = unicode('backspace')
self.k = self.ck = keymap.compile_keymap(our_keycodes)
+ trace('keymap {k!r}', k=self.k)
self.events = []
self.buf = []
self.encoding=encoding
@@ -80,24 +83,27 @@
return raw
def insert(self, event):
+ trace('added event {event}', event=event)
self.events.append(event)
def push(self, char):
if char in self.k:
k = self.k[char]
+ trace('found map {k!r}', k=k)
self.buf.append(char)
if isinstance(k, dict):
self.k = k
else:
- self.events.append(Event('key', k, self.flush_buf()))
+ self.insert(Event('key', k, self.flush_buf()))
self.k = self.ck
elif self.buf:
keys = self.flush_buf()
decoded = keys.decode(self.encoding, 'ignore') # XXX surogate?
#XXX: incorrect
- self.events.extend(Event('key', c, c) for c in decoded)
+ for c in decoded:
+ self.insert(Event('key', c, c))
self.buf = []
self.k = self.ck
self.push(char)
else:
- self.events.append(Event('key', char, char))
+ self.insert(Event('key', char.decode(self.encoding), char))
diff --git a/testing/test_keymap.py b/testing/test_keymap.py
--- a/testing/test_keymap.py
+++ b/testing/test_keymap.py
@@ -2,7 +2,6 @@
from pyrepl.keymap import compile_keymap
[email protected]('completely wrong')
def test_compile_keymap():
k = compile_keymap({
b'a': 'test',
diff --git a/testing/test_unix_reader.py b/testing/test_unix_reader.py
new file mode 100644
--- /dev/null
+++ b/testing/test_unix_reader.py
@@ -0,0 +1,9 @@
+from pyrepl.unix_eventqueue import EventQueue
+
+from pyrepl import curses
+
+
[email protected](run=False, reason='wtf segfault')
+def test_simple():
+ q = EventQueue(0, 'utf-8')
+
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit