r58715 - pyrepl/trunk/pyrepl/pyrepl
[email protected] Tue, 7 Oct 2008 12:30:32 +0200 (CEST)
| Newsgroups | gmane.comp.python.pyrepl.checkins |
|---|---|
| Message-ID | <[email protected]> |
Author: arigo
Date: Tue Oct 7 12:30:32 2008
New Revision: 58715
Modified:
pyrepl/trunk/pyrepl/pyrepl/readline.py
Log:
Add more laziness. More specifically, avoid instantiating the
ReadlineAlikeReader just to get or set the readline_completer and the
completer_delims.
Modified: pyrepl/trunk/pyrepl/pyrepl/readline.py
==============================================================================
--- pyrepl/trunk/pyrepl/pyrepl/readline.py (original)
+++ pyrepl/trunk/pyrepl/pyrepl/readline.py Tue Oct 7 12:30:32 2008
@@ -41,23 +41,26 @@
# ____________________________________________________________
-class ReadlineAlikeReader(HistoricalReader, CompletingReader):
+class ReadlineConfig(object):
readline_completer = None
completer_delims = dict.fromkeys(' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>/?')
+class ReadlineAlikeReader(HistoricalReader, CompletingReader):
+
def error(self, msg="none"):
pass # don't show error messages by default
def get_stem(self):
b = self.buffer
p = self.pos - 1
- while p >= 0 and b[p] not in self.completer_delims:
+ completer_delims = self.config.completer_delims
+ while p >= 0 and b[p] not in completer_delims:
p -= 1
return ''.join(b[p+1:self.pos])
def get_completions(self, stem):
result = []
- function = self.readline_completer
+ function = self.config.readline_completer
if function is not None:
try:
stem = str(stem) # rlcompleter.py seems to not like unicode
@@ -148,11 +151,13 @@
reader = None
saved_history_length = -1
startup_hook = None
+ config = ReadlineConfig()
def get_reader(self):
if self.reader is None:
console = UnixConsole(self.f_in, self.f_out, encoding=ENCODING)
self.reader = ReadlineAlikeReader(console)
+ self.reader.config = self.config
return self.reader
def raw_input(self, prompt=''):
@@ -181,16 +186,16 @@
pass # XXX we don't support parsing GNU-readline-style init files
def set_completer(self, function=None):
- self.get_reader().readline_completer = function
+ self.config.readline_completer = function
def get_completer(self):
- return self.get_reader().readline_completer
+ return self.config.readline_completer
def set_completer_delims(self, string):
- self.get_reader().completer_delims = dict.fromkeys(string)
+ self.config.completer_delims = dict.fromkeys(string)
def get_completer_delims(self):
- chars = self.get_reader().completer_delims.keys()
+ chars = self.config.completer_delims.keys()
chars.sort()
return ''.join(chars)