##// END OF EJS Templates
Fix missing history in cell execution mode....
Fernando Perez -
Show More
@@ -2093,20 +2093,28 b' class InteractiveShell(Configurable, Magic):'
2093 2093 cell : str
2094 2094 A single or multiline string.
2095 2095 """
2096 # We need to break up the input into executable blocks that can be run
2097 # in 'single' mode, to provide comfortable user behavior.
2096 2098 blocks = self.input_splitter.split_blocks(cell)
2099
2097 2100 if not blocks:
2098 2101 return
2099
2102
2103 # Single-block input should behave like an interactive prompt
2100 2104 if len(blocks) == 1:
2101 2105 self.runlines(blocks[0])
2102 2106 return
2103 2107
2108 # In multi-block input, if the last block is a simple (one-two lines)
2109 # expression, run it in single mode so it produces output. Otherwise
2110 # just feed the whole thing to runcode.
2111 # This seems like a reasonable usability design.
2104 2112 last = blocks[-1]
2105 2113 if len(last.splitlines()) < 2:
2106 map(self.runcode, blocks[:-1])
2114 self.runcode('\n'.join(blocks[:-1]))
2107 2115 self.runlines(last)
2108 2116 else:
2109 map(self.runcode, blocks)
2117 self.runcode(cell)
2110 2118
2111 2119 def runlines(self, lines, clean=False):
2112 2120 """Run a string of one or more lines of source.
@@ -2226,6 +2234,11 b' class InteractiveShell(Configurable, Magic):'
2226 2234 - 1: an error occurred.
2227 2235 """
2228 2236
2237 # It's also possible that we've been fed a plain string. In that case,
2238 # we must store it in the input history.
2239 if isinstance(code_obj, basestring):
2240 self.input_hist_raw.append(code_obj)
2241
2229 2242 # Set our own excepthook in case the user code tries to call it
2230 2243 # directly, so that the IPython crash handler doesn't get triggered
2231 2244 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
General Comments 0
You need to be logged in to leave comments. Login now