##// END OF EJS Templates
Use python-prompt-toolkit for ipdb....
Matthias Bussonnier -
Show More
@@ -37,6 +37,8 b' from IPython.utils import coloransi, py3compat'
37 from IPython.core.excolors import exception_colors
37 from IPython.core.excolors import exception_colors
38 from IPython.testing.skipdoctest import skip_doctest
38 from IPython.testing.skipdoctest import skip_doctest
39
39
40 from prompt_toolkit import prompt as ptk_prompt
41
40 prompt = 'ipdb> '
42 prompt = 'ipdb> '
41
43
42 #We have to check this directly from sys.argv, config struct not yet available
44 #We have to check this directly from sys.argv, config struct not yet available
@@ -245,13 +247,46 b' class Pdb(OldPdb, object):'
245 self.parser = PyColorize.Parser()
247 self.parser = PyColorize.Parser()
246
248
247 # Set the prompt - the default prompt is '(Pdb)'
249 # Set the prompt - the default prompt is '(Pdb)'
248 Colors = cst.active_colors
249 if color_scheme == 'NoColor':
250 self.prompt = prompt
250 self.prompt = prompt
251
252
253 def cmdloop(self, intro=None):
254 """Repeatedly issue a prompt, accept input, parse an initial prefix
255 off the received input, and dispatch to action methods, passing them
256 the remainder of the line as argument.
257
258 override the same methods from cmd.Cmd to provide prompt toolkit replacement.
259 """
260 if not self.use_rawinput:
261 raise ValueError('Sorry ipdb does not support raw_input=False')
262
263 def get_prompt_tokens(cli):
264 from pygments.token import Token
265 return [(Token.Prompt, self.prompt)]
266
267 self.preloop()
268 try:
269 if intro is not None:
270 self.intro = intro
271 if self.intro:
272 self.stdout.write(str(self.intro)+"\n")
273 stop = None
274 while not stop:
275 if self.cmdqueue:
276 line = self.cmdqueue.pop(0)
251 else:
277 else:
252 # The colour markers are wrapped by bytes 01 and 02 so that readline
278 try:
253 # can calculate the width.
279 line = ptk_prompt(get_prompt_tokens=get_prompt_tokens)
254 self.prompt = u'\x01%s\x02%s\x01%s\x02' % (Colors.prompt, prompt, Colors.Normal)
280 except EOFError:
281 line = 'EOF'
282 line = self.precmd(line)
283 stop = self.onecmd(line)
284 stop = self.postcmd(stop, line)
285 self.postloop()
286 except Exception:
287 pass
288
289
255
290
256 def set_colors(self, scheme):
291 def set_colors(self, scheme):
257 """Shorthand access to the color table scheme selector method."""
292 """Shorthand access to the color table scheme selector method."""
General Comments 0
You need to be logged in to leave comments. Login now