From: Michael W. Hudson Date: Mon, 3 Feb 2003 11:04:27 +0000 (+0000) Subject: Fix bug X-Git-Tag: v2.3c1~2094 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=35a92ce9da03a7a8acce565708eba96bf7cc2f1c;p=thirdparty%2FPython%2Fcpython.git Fix bug [ 676342 ] after using pdb readline does not work correctly using Michael Stone's patch so the completer functionality of cmd is only setup between preloop and postloop. --- diff --git a/Lib/cmd.py b/Lib/cmd.py index f0637ed500ef..592990310ba4 100644 --- a/Lib/cmd.py +++ b/Lib/cmd.py @@ -86,13 +86,7 @@ class Cmd: """ self.cmdqueue = [] - if completekey: - try: - import readline - readline.set_completer(self.complete) - readline.parse_and_bind(completekey+": complete") - except ImportError: - pass + self.completekey = completekey def cmdloop(self, intro=None): """Repeatedly issue a prompt, accept input, parse an initial prefix @@ -142,14 +136,26 @@ class Cmd: def preloop(self): """Hook method executed once when the cmdloop() method is called.""" - pass + if self.completekey: + try: + import readline + self.old_completer = readline.get_completer() + readline.set_completer(self.complete) + readline.parse_and_bind(self.completekey+": complete") + except ImportError: + pass def postloop(self): """Hook method executed once when the cmdloop() method is about to return. """ - pass + if self.completekey: + try: + import readline + readline.set_completer(self.old_completer) + except ImportError: + pass def parseline(self, line): line = line.strip()