##// END OF EJS Templates
Remove the "autoedit_syntax" feature....
Matthias Bussonnier -
Show More
@@ -37,6 +37,7 b' example, you could use a startup file like this::'
37
37
38 import os
38 import os
39 import subprocess
39 import subprocess
40 import warnings
40 import sys
41 import sys
41
42
42 from IPython.core.error import TryNext
43 from IPython.core.error import TryNext
@@ -83,13 +84,24 b' def editor(self, filename, linenum=None, wait=True):'
83
84
84 import tempfile
85 import tempfile
85 def fix_error_editor(self,filename,linenum,column,msg):
86 def fix_error_editor(self,filename,linenum,column,msg):
86 """Open the editor at the given filename, linenumber, column and
87 """DEPRECATED
88
89 Open the editor at the given filename, linenumber, column and
87 show an error message. This is used for correcting syntax errors.
90 show an error message. This is used for correcting syntax errors.
88 The current implementation only has special support for the VIM editor,
91 The current implementation only has special support for the VIM editor,
89 and falls back on the 'editor' hook if VIM is not used.
92 and falls back on the 'editor' hook if VIM is not used.
90
93
91 Call ip.set_hook('fix_error_editor',youfunc) to use your own function,
94 Call ip.set_hook('fix_error_editor',yourfunc) to use your own function,
92 """
95 """
96
97 warnings.warn("""
98 `fix_error_editor` is pending deprecation as of IPython 5.0 and will be removed
99 in future versions. It appears to be used only for automatically fixing syntax
100 error that has been broken for a few years and has thus been removed. If you
101 happend to use this function and still need it please make your voice heard on
102 the mailing list ipython-dev@scipy.org , or on the GitHub Issue tracker:
103 https://github.com/ipython/ipython/issues/9649 """, UserWarning)
104
93 def vim_quickfix_file():
105 def vim_quickfix_file():
94 t = tempfile.NamedTemporaryFile()
106 t = tempfile.NamedTemporaryFile()
95 t.write('%s:%d:%d:%s\n' % (filename,linenum,column,msg))
107 t.write('%s:%d:%d:%s\n' % (filename,linenum,column,msg))
@@ -93,11 +93,6 b' class TerminalInteractiveShell(InteractiveShell):'
93 def debugger_cls(self):
93 def debugger_cls(self):
94 return Pdb if self.simple_prompt else TerminalPdb
94 return Pdb if self.simple_prompt else TerminalPdb
95
95
96 autoedit_syntax = Bool(False,
97 help="auto editing of files with syntax errors.",
98 ).tag(config=True)
99
100
101 confirm_exit = Bool(True,
96 confirm_exit = Bool(True,
102 help="""
97 help="""
103 Set to confirm when you try to exit IPython with an EOF (Control-D
98 Set to confirm when you try to exit IPython with an EOF (Control-D
@@ -476,8 +471,6 b' class TerminalInteractiveShell(InteractiveShell):'
476 else:
471 else:
477 if code:
472 if code:
478 self.run_cell(code, store_history=True)
473 self.run_cell(code, store_history=True)
479 if self.autoedit_syntax and self.SyntaxTB.last_syntax_error:
480 self.edit_syntax_error()
481
474
482 def mainloop(self, display_banner=DISPLAY_BANNER_DEPRECATED):
475 def mainloop(self, display_banner=DISPLAY_BANNER_DEPRECATED):
483 # An extra layer of protection in case someone mashing Ctrl-C breaks
476 # An extra layer of protection in case someone mashing Ctrl-C breaks
@@ -505,65 +498,6 b' class TerminalInteractiveShell(InteractiveShell):'
505 else:
498 else:
506 self._inputhook = None
499 self._inputhook = None
507
500
508 # Methods to support auto-editing of SyntaxErrors:
509
510 def edit_syntax_error(self):
511 """The bottom half of the syntax error handler called in the main loop.
512
513 Loop until syntax error is fixed or user cancels.
514 """
515
516 while self.SyntaxTB.last_syntax_error:
517 # copy and clear last_syntax_error
518 err = self.SyntaxTB.clear_err_state()
519 if not self._should_recompile(err):
520 return
521 try:
522 # may set last_syntax_error again if a SyntaxError is raised
523 self.safe_execfile(err.filename, self.user_ns)
524 except:
525 self.showtraceback()
526 else:
527 try:
528 with open(err.filename) as f:
529 # This should be inside a display_trap block and I
530 # think it is.
531 sys.displayhook(f.read())
532 except:
533 self.showtraceback()
534
535 def _should_recompile(self, e):
536 """Utility routine for edit_syntax_error"""
537
538 if e.filename in ('<ipython console>', '<input>', '<string>',
539 '<console>', '<BackgroundJob compilation>',
540 None):
541 return False
542 try:
543 if (self.autoedit_syntax and
544 not self.ask_yes_no(
545 'Return to editor to correct syntax error? '
546 '[Y/n] ', 'y')):
547 return False
548 except EOFError:
549 return False
550
551 def int0(x):
552 try:
553 return int(x)
554 except TypeError:
555 return 0
556
557 # always pass integer line and offset values to editor hook
558 try:
559 self.hooks.fix_error_editor(e.filename,
560 int0(e.lineno), int0(e.offset),
561 e.msg)
562 except TryNext:
563 warn('Could not open editor')
564 return False
565 return True
566
567 # Run !system commands directly, not through pipes, so terminal programs
501 # Run !system commands directly, not through pipes, so terminal programs
568 # work correctly.
502 # work correctly.
569 system = InteractiveShell.system_raw
503 system = InteractiveShell.system_raw
@@ -64,8 +64,6 b' Most of the above remarks also affect `IPython.core.debugger.Pdb`, the `%debug`'
64 and `%pdb` magic which do not use readline anymore either.
64 and `%pdb` magic which do not use readline anymore either.
65
65
66
66
67
68
69 Provisional Changes
67 Provisional Changes
70 -------------------
68 -------------------
71
69
@@ -109,6 +107,34 b' widgets... As stated above this is nightly experimental feature with a lot of'
109 it.
107 it.
110
108
111
109
110 Removed Feature
111 ---------------
112
113 - ``TerminalInteractiveShell.autoedit_syntax`` Has been broken for many years now
114 apparently. It has been removed.
115
116
117 Deprecated Features
118 -------------------
119
120 Some deprecated feature, don't forget to enable `DeprecationWarning` as error
121 of you are using IPython in Continuous Integration setup or in your testing in general:
122
123 .. code::
124 :python:
125
126 import warnings
127 warnings.filterwarnings('error', '.*', DeprecationWarning, module='yourmodule.*')
128
129
130 - `hooks.fix_error_editor` seem to be unused and is pending deprecation.
131 - `IPython/core/excolors.py:ExceptionColors` is deprecated.
132 - `IPython.core.InteractiveShell:write()` is deprecated, use `sys.stdout` instead.
133 - `IPython.core.InteractiveShell:write_err()` is deprecated, use `sys.stderr` instead.
134 - The `formatter` keyword argument to `Inspector.info` in `IPython.core.oinspec` has now no effects.
135 - The `global_ns` keyword argument of IPython Embed was deprecated, and will now have no effect. Use `module` keyword argument instead.
136
137
112 Known Issues:
138 Known Issues:
113 -------------
139 -------------
114
140
General Comments 0
You need to be logged in to leave comments. Login now