Show More
@@ -3219,6 +3219,11 b' class InteractiveShell(SingletonConfigurable):' | |||||
3219 | self.restore_sys_module_state() |
|
3219 | self.restore_sys_module_state() | |
3220 |
|
3220 | |||
3221 |
|
3221 | |||
|
3222 | # Overridden in terminal subclass to change prompts | |||
|
3223 | def switch_doctest_mode(self, mode): | |||
|
3224 | pass | |||
|
3225 | ||||
|
3226 | ||||
3222 | class InteractiveShellABC(with_metaclass(abc.ABCMeta, object)): |
|
3227 | class InteractiveShellABC(with_metaclass(abc.ABCMeta, object)): | |
3223 | """An abstract base class for InteractiveShell.""" |
|
3228 | """An abstract base class for InteractiveShell.""" | |
3224 |
|
3229 |
@@ -469,8 +469,12 b' Defaulting color scheme to \'NoColor\'"""' | |||||
469 |
|
469 | |||
470 | shell.magic('xmode ' + dstore.xmode) |
|
470 | shell.magic('xmode ' + dstore.xmode) | |
471 |
|
471 | |||
|
472 | # mode here is the state before we switch; switch_doctest_mode takes | |||
|
473 | # the mode we're switching to. | |||
|
474 | shell.switch_doctest_mode(not mode) | |||
|
475 | ||||
472 | # Store new mode and inform |
|
476 | # Store new mode and inform | |
473 |
dstore.mode = bool( |
|
477 | dstore.mode = bool(not mode) | |
474 | mode_label = ['OFF','ON'][dstore.mode] |
|
478 | mode_label = ['OFF','ON'][dstore.mode] | |
475 | print('Doctest mode is:', mode_label) |
|
479 | print('Doctest mode is:', mode_label) | |
476 |
|
480 |
@@ -41,6 +41,23 b' class Prompts(object):' | |||||
41 | (Token.OutPrompt, ']: '), |
|
41 | (Token.OutPrompt, ']: '), | |
42 | ] |
|
42 | ] | |
43 |
|
43 | |||
|
44 | class ClassicPrompts(Prompts): | |||
|
45 | def in_prompt_tokens(self, cli=None): | |||
|
46 | return [ | |||
|
47 | (Token.Prompt, '>>> '), | |||
|
48 | ] | |||
|
49 | ||||
|
50 | def continuation_prompt_tokens(self, cli=None, width=None): | |||
|
51 | return [ | |||
|
52 | (Token.Prompt, '... ') | |||
|
53 | ] | |||
|
54 | ||||
|
55 | def rewrite_prompt_tokens(self): | |||
|
56 | return [] | |||
|
57 | ||||
|
58 | def out_prompt_tokens(self): | |||
|
59 | return [] | |||
|
60 | ||||
44 | class RichPromptDisplayHook(DisplayHook): |
|
61 | class RichPromptDisplayHook(DisplayHook): | |
45 | """Subclass of base display hook using coloured prompt""" |
|
62 | """Subclass of base display hook using coloured prompt""" | |
46 | def write_output_prompt(self): |
|
63 | def write_output_prompt(self): |
@@ -29,7 +29,7 b' from pygments.token import Token' | |||||
29 | from .debugger import TerminalPdb, Pdb |
|
29 | from .debugger import TerminalPdb, Pdb | |
30 | from .pt_inputhooks import get_inputhook_func |
|
30 | from .pt_inputhooks import get_inputhook_func | |
31 | from .interactiveshell import get_default_editor, TerminalMagics |
|
31 | from .interactiveshell import get_default_editor, TerminalMagics | |
32 | from .prompts import Prompts, RichPromptDisplayHook |
|
32 | from .prompts import Prompts, ClassicPrompts, RichPromptDisplayHook | |
33 | from .ptutils import IPythonPTCompleter, IPythonPTLexer |
|
33 | from .ptutils import IPythonPTCompleter, IPythonPTLexer | |
34 |
|
34 | |||
35 | _use_simple_prompt = 'IPY_TEST_SIMPLE_PROMPT' in os.environ or not sys.stdin.isatty() |
|
35 | _use_simple_prompt = 'IPY_TEST_SIMPLE_PROMPT' in os.environ or not sys.stdin.isatty() | |
@@ -105,6 +105,10 b' class TerminalInteractiveShell(InteractiveShell):' | |||||
105 | def _prompts_default(self): |
|
105 | def _prompts_default(self): | |
106 | return Prompts(self) |
|
106 | return Prompts(self) | |
107 |
|
107 | |||
|
108 | @observe('prompts') | |||
|
109 | def _(self, change): | |||
|
110 | self._update_layout() | |||
|
111 | ||||
108 | def _displayhook_class_default(self): |
|
112 | def _displayhook_class_default(self): | |
109 | return RichPromptDisplayHook |
|
113 | return RichPromptDisplayHook | |
110 |
|
114 | |||
@@ -451,6 +455,16 b' class TerminalInteractiveShell(InteractiveShell):' | |||||
451 | prompt = ''.join(s for t, s in tokens) |
|
455 | prompt = ''.join(s for t, s in tokens) | |
452 | print(prompt, cmd, sep='') |
|
456 | print(prompt, cmd, sep='') | |
453 |
|
457 | |||
|
458 | _prompts_before = None | |||
|
459 | def switch_doctest_mode(self, mode): | |||
|
460 | """Switch prompts to classic for %doctest_mode""" | |||
|
461 | if mode: | |||
|
462 | self._prompts_before = self.prompts | |||
|
463 | self.prompts = ClassicPrompts(self) | |||
|
464 | elif self._prompts_before: | |||
|
465 | self.prompts = self._prompts_before | |||
|
466 | self._prompts_before = None | |||
|
467 | ||||
454 |
|
468 | |||
455 | if __name__ == '__main__': |
|
469 | if __name__ == '__main__': | |
456 | TerminalInteractiveShell.instance().interact() |
|
470 | TerminalInteractiveShell.instance().interact() |
General Comments 0
You need to be logged in to leave comments.
Login now