[pyrepl-checkins] r53579 - pyrepl/trunk/pyrepl/pyrepl
arigo at codespeak.net
arigo at codespeak.net
Tue Apr 8 14:25:39 CEST 2008
Author: arigo
Date: Tue Apr 8 14:25:38 2008
New Revision: 53579
Modified:
pyrepl/trunk/pyrepl/pyrepl/readline.py
pyrepl/trunk/pyrepl/pyrepl/simple_interact.py
Log:
The lazy imports do more harm than good.
Modified: pyrepl/trunk/pyrepl/pyrepl/readline.py
==============================================================================
--- pyrepl/trunk/pyrepl/pyrepl/readline.py (original)
+++ pyrepl/trunk/pyrepl/pyrepl/readline.py Tue Apr 8 14:25:38 2008
@@ -4,7 +4,11 @@
"""
import sys, os
-import pyrepl.curses # check to give an early ImportError
+from pyrepl import commands
+from pyrepl.historical_reader import HistoricalReader
+from pyrepl.completing_reader import CompletingReader
+from pyrepl.unix_console import UnixConsole
+
ENCODING = 'latin1' # XXX hard-coded
@@ -37,7 +41,7 @@
# ____________________________________________________________
-class _ReaderMixin(object):
+class ReadlineAlikeReader(HistoricalReader, CompletingReader):
readline_completer = None
completer_delims = dict.fromkeys(' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?')
@@ -92,27 +96,27 @@
more_lines = None
def collect_keymap(self):
- return super(_ReaderMixin, self).collect_keymap() + (
+ return super(ReadlineAlikeReader, self).collect_keymap() + (
(r'\n', 'maybe-accept'),)
def __init__(self, console):
- super(_ReaderMixin, self).__init__(console)
- from pyrepl import commands
- class maybe_accept(commands.Command):
- def do(self):
- r = self.reader
- # if there are already several lines and the cursor
- # is not on the last one, always insert a new \n.
- text = r.get_unicode()
- if "\n" in r.buffer[r.pos:]:
- r.insert("\n")
- elif r.more_lines is not None and r.more_lines(text):
- r.insert("\n")
- else:
- self.finish = 1
+ super(ReadlineAlikeReader, self).__init__(console)
self.commands['maybe_accept'] = maybe_accept
self.commands['maybe-accept'] = maybe_accept
+class maybe_accept(commands.Command):
+ def do(self):
+ r = self.reader
+ # if there are already several lines and the cursor
+ # is not on the last one, always insert a new \n.
+ text = r.get_unicode()
+ if "\n" in r.buffer[r.pos:]:
+ r.insert("\n")
+ elif r.more_lines is not None and r.more_lines(text):
+ r.insert("\n")
+ else:
+ self.finish = 1
+
# ____________________________________________________________
class _ReadlineWrapper(object):
@@ -124,13 +128,8 @@
def get_reader(self):
if self.reader is None:
- from pyrepl.historical_reader import HistoricalReader
- from pyrepl.completing_reader import CompletingReader
- from pyrepl.unix_console import UnixConsole
- class MyReader(_ReaderMixin, HistoricalReader, CompletingReader):
- pass
console = UnixConsole(self.f_in, self.f_out, encoding=ENCODING)
- self.reader = MyReader(console)
+ self.reader = ReadlineAlikeReader(console)
return self.reader
def raw_input(self, prompt=''):
Modified: pyrepl/trunk/pyrepl/pyrepl/simple_interact.py
==============================================================================
--- pyrepl/trunk/pyrepl/pyrepl/simple_interact.py (original)
+++ pyrepl/trunk/pyrepl/pyrepl/simple_interact.py Tue Apr 8 14:25:38 2008
@@ -6,12 +6,6 @@
import sys
from pyrepl.readline import multiline_input
-# please don't remove the following imports, useful
-# to give an early ImportError if something is missing
-import pyrepl.unix_console
-import pyrepl.historical_reader
-import pyrepl.completing_reader
-
def run_multiline_interactive_console(mainmodule=None):
import code
More information about the pyrepl-checkins
mailing list