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

Reply via email to