##// END OF EJS Templates
Fix so exit is detected as an automagic and exits qtconsole.
Thomas Kluyver -
Show More
@@ -2094,23 +2094,28 b' class InteractiveShell(Configurable, Magic):'
2094 2094 # Store the untransformed code
2095 2095 raw_cell = cell
2096 2096
2097 # We need to break up the input into executable blocks that can be run
2098 # in 'single' mode, to provide comfortable user behavior.
2097
2098 # Code transformation and execution must take place with our
2099 # modifications to builtins.
2100 with self.builtin_trap:
2101
2102 # We need to break up the input into executable blocks that can
2103 # be runin 'single' mode, to provide comfortable user behavior.
2099 2104 blocks = self.input_splitter.split_blocks(cell)
2100 2105
2101 2106 if not blocks: # Blank cell
2102 2107 return
2103 2108
2104 # We only do dynamic transforms on a single line. But a macro can
2105 # be expanded to several lines, so we need to split it into input
2106 # blocks again.
2109 # We only do dynamic transforms on a single line. But a macro
2110 # can be expanded to several lines, so we need to split it
2111 # into input blocks again.
2107 2112 if len(cell.splitlines()) <= 1:
2108 2113 cell = self.prefilter_manager.prefilter_line(blocks[0])
2109 2114 blocks = self.input_splitter.split_blocks(cell)
2110 2115
2111 # Store the 'ipython' version of the cell as well, since that's what
2112 # needs to go into the translated history and get executed (the
2113 # original cell may contain non-python syntax).
2116 # Store the 'ipython' version of the cell as well, since
2117 # that's what needs to go into the translated history and get
2118 # executed (the original cell may contain non-python syntax).
2114 2119 cell = ''.join(blocks)
2115 2120
2116 2121 # Store raw and processed history
@@ -2120,8 +2125,9 b' class InteractiveShell(Configurable, Magic):'
2120 2125
2121 2126 self.logger.log(cell, raw_cell)
2122 2127
2123 # All user code execution must happen with our context managers active
2124 with nested(self.builtin_trap, self.display_trap):
2128 # All user code execution should take place with our
2129 # modified displayhook.
2130 with self.display_trap:
2125 2131
2126 2132 # Single-block input should behave like an interactive prompt
2127 2133 if len(blocks) == 1:
@@ -2130,7 +2136,8 b' class InteractiveShell(Configurable, Magic):'
2130 2136 # history output logging is enabled.
2131 2137 if store_history:
2132 2138 self.history_manager.store_output(self.execution_count)
2133 # since we return here, we need to update the execution count
2139 # Since we return here, we need to update the
2140 # execution count
2134 2141 self.execution_count += 1
2135 2142 return out
2136 2143
@@ -2151,7 +2158,8 b' class InteractiveShell(Configurable, Magic):'
2151 2158 retcode = self.run_source(ipy_body, symbol='exec',
2152 2159 post_execute=False)
2153 2160 if retcode==0:
2154 # Last expression compiled as 'single' so it produces output
2161 # Last expression compiled as 'single' so it
2162 # produces output
2155 2163 self.run_source(last)
2156 2164 else:
2157 2165 # Run the whole cell as one entity, storing both raw and
General Comments 0
You need to be logged in to leave comments. Login now