Show More
@@ -3,6 +3,7 b' import functools' | |||||
3 | import re |
|
3 | import re | |
4 | from StringIO import StringIO |
|
4 | from StringIO import StringIO | |
5 |
|
5 | |||
|
6 | from IPython.core.error import UsageError | |||
6 | from IPython.core.splitinput import LineInfo |
|
7 | from IPython.core.splitinput import LineInfo | |
7 | from IPython.utils import tokenize2 |
|
8 | from IPython.utils import tokenize2 | |
8 | from IPython.utils.openpy import cookie_comment_re |
|
9 | from IPython.utils.openpy import cookie_comment_re | |
@@ -227,9 +228,20 b' def _tr_help(line_info):' | |||||
227 | def _tr_magic(line_info): |
|
228 | def _tr_magic(line_info): | |
228 | "Translate lines escaped with: %" |
|
229 | "Translate lines escaped with: %" | |
229 | tpl = '%sget_ipython().magic(%r)' |
|
230 | tpl = '%sget_ipython().magic(%r)' | |
|
231 | if line_info.line.startswith(ESC_MAGIC2): | |||
|
232 | return line_info.line | |||
230 | cmd = ' '.join([line_info.ifun, line_info.the_rest]).strip() |
|
233 | cmd = ' '.join([line_info.ifun, line_info.the_rest]).strip() | |
231 | return tpl % (line_info.pre, cmd) |
|
234 | return tpl % (line_info.pre, cmd) | |
232 |
|
235 | |||
|
236 | def _tr_cellmagic(line_info): | |||
|
237 | """Translate lines escaped with %% | |||
|
238 | ||||
|
239 | Only happens when cell magics are mid-cell, which is an error. | |||
|
240 | """ | |||
|
241 | raise UsageError("Cannot call cell magics (%s%s) mid-cell" % | |||
|
242 | (ESC_MAGIC2, line_info.ifun) | |||
|
243 | ) | |||
|
244 | ||||
233 | def _tr_quote(line_info): |
|
245 | def _tr_quote(line_info): | |
234 | "Translate lines escaped with: ," |
|
246 | "Translate lines escaped with: ," | |
235 | return '%s%s("%s")' % (line_info.pre, line_info.ifun, |
|
247 | return '%s%s("%s")' % (line_info.pre, line_info.ifun, | |
@@ -250,6 +262,7 b' tr = { ESC_SHELL : _tr_system,' | |||||
250 | ESC_HELP : _tr_help, |
|
262 | ESC_HELP : _tr_help, | |
251 | ESC_HELP2 : _tr_help, |
|
263 | ESC_HELP2 : _tr_help, | |
252 | ESC_MAGIC : _tr_magic, |
|
264 | ESC_MAGIC : _tr_magic, | |
|
265 | ESC_MAGIC2 : _tr_cellmagic, | |||
253 | ESC_QUOTE : _tr_quote, |
|
266 | ESC_QUOTE : _tr_quote, | |
254 | ESC_QUOTE2 : _tr_quote2, |
|
267 | ESC_QUOTE2 : _tr_quote2, | |
255 | ESC_PAREN : _tr_paren } |
|
268 | ESC_PAREN : _tr_paren } |
@@ -2593,10 +2593,14 b' class InteractiveShell(SingletonConfigurable):' | |||||
2593 |
|
2593 | |||
2594 | if silent: |
|
2594 | if silent: | |
2595 | store_history = False |
|
2595 | store_history = False | |
2596 |
|
2596 | |||
2597 | self.input_transformer_manager.push(raw_cell) |
|
2597 | try: | |
2598 |
|
|
2598 | self.input_transformer_manager.push(raw_cell) | |
2599 |
|
2599 | cell = self.input_transformer_manager.source_reset() | ||
|
2600 | except UsageError: | |||
|
2601 | self.showtraceback() | |||
|
2602 | return | |||
|
2603 | ||||
2600 | # Our own compiler remembers the __future__ environment. If we want to |
|
2604 | # Our own compiler remembers the __future__ environment. If we want to | |
2601 | # run code with a separate __future__ environment, use the default |
|
2605 | # run code with a separate __future__ environment, use the default | |
2602 | # compiler |
|
2606 | # compiler |
@@ -43,7 +43,7 b' from IPython.utils.encoding import get_stream_enc' | |||||
43 |
|
43 | |||
44 | line_split = re.compile(""" |
|
44 | line_split = re.compile(""" | |
45 | ^(\s*) # any leading space |
|
45 | ^(\s*) # any leading space | |
46 |
([,;/ |
|
46 | ([,;/]|%%?|!!?|\?\??)? # escape character or characters | |
47 | \s*(%{0,2}[\w\.\*]*) # function/method, possibly with leading % |
|
47 | \s*(%{0,2}[\w\.\*]*) # function/method, possibly with leading % | |
48 | # to correctly treat things like '?%magic' |
|
48 | # to correctly treat things like '?%magic' | |
49 | (.*?$|$) # rest of line |
|
49 | (.*?$|$) # rest of line |
General Comments 0
You need to be logged in to leave comments.
Login now