From 35a92ce9da03a7a8acce565708eba96bf7cc2f1c Mon Sep 17 00:00:00 2001 From: "Michael W. Hudson" Date: Mon, 3 Feb 2003 11:04:27 +0000 Subject: [PATCH] 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. --- Lib/cmd.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Lib/cmd.py b/Lib/cmd.py index f0637ed500..592990310b 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() -- 2.50.1