##// END OF EJS Templates
Make the TerminalInteractiveShell class configurable....
Matthias Bussonnier -
Show More
@@ -33,7 +33,7 b' from IPython.extensions.storemagic import StoreMagics'
33 from .interactiveshell import TerminalInteractiveShell
33 from .interactiveshell import TerminalInteractiveShell
34 from IPython.paths import get_ipython_dir
34 from IPython.paths import get_ipython_dir
35 from traitlets import (
35 from traitlets import (
36 Bool, List, Dict, default, observe,
36 Bool, List, Dict, default, observe, Type
37 )
37 )
38
38
39 #-----------------------------------------------------------------------------
39 #-----------------------------------------------------------------------------
@@ -183,6 +183,13 b' class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):'
183 flags = Dict(flags)
183 flags = Dict(flags)
184 aliases = Dict(aliases)
184 aliases = Dict(aliases)
185 classes = List()
185 classes = List()
186
187 interactive_shell_class = Type(
188 klass=object, # use default_value otherwise which only allow subclasses.
189 default_value=TerminalInteractiveShell,
190 help="Class to use to instantiate the TerminalInteractiveShell object. Useful for custom Frontends"
191 ).tag(config=True)
192
186 @default('classes')
193 @default('classes')
187 def _classes_default(self):
194 def _classes_default(self):
188 """This has to be in a method, for TerminalIPythonApp to be available."""
195 """This has to be in a method, for TerminalIPythonApp to be available."""
@@ -318,7 +325,7 b' class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):'
318 # shell.display_banner should always be False for the terminal
325 # shell.display_banner should always be False for the terminal
319 # based app, because we call shell.show_banner() by hand below
326 # based app, because we call shell.show_banner() by hand below
320 # so the banner shows *before* all extension loading stuff.
327 # so the banner shows *before* all extension loading stuff.
321 self.shell = TerminalInteractiveShell.instance(parent=self,
328 self.shell = self.interactive_shell_class.instance(parent=self,
322 profile_dir=self.profile_dir,
329 profile_dir=self.profile_dir,
323 ipython_dir=self.ipython_dir, user_ns=self.user_ns)
330 ipython_dir=self.ipython_dir, user_ns=self.user_ns)
324 self.shell.configurables.append(self)
331 self.shell.configurables.append(self)
@@ -118,6 +118,15 b' of these as well to improve user experience with better error messages and'
118 hints.
118 hints.
119
119
120
120
121 Configurable TerminalInteractiveShell
122 -------------------------------------
123
124 IPython gained a new ``c.TerminalIPythonApp.interactive_shell_class`` option
125 that allow to customize the class used to start the terminal frontend. This
126 should allow user to use custom interfaces, like reviving the former readline
127 interface which is now a separate package not maintained by the core team.
128
129
121 Miscs improvements
130 Miscs improvements
122 ------------------
131 ------------------
123
132
General Comments 0
You need to be logged in to leave comments. Login now