##// END OF EJS Templates
Only refill readline history if it doesn't look like it's been changed.
Thomas Kluyver -
Show More
@@ -139,14 +139,24 b' class ReadlineNoRecord(object):'
139 self._nested_level = 0
139 self._nested_level = 0
140
140
141 def __enter__(self):
141 def __enter__(self):
142 if self._nested_level == 0:
143 self.readline_tail = self.get_readline_tail()
142 self._nested_level += 1
144 self._nested_level += 1
143
145
144 def __exit__(self, type, value, traceback):
146 def __exit__(self, type, value, traceback):
145 self._nested_level -= 1
147 self._nested_level -= 1
146 if self._nested_level == 0:
148 if self._nested_level == 0:
147 self.shell.refill_readline_hist()
149 if self.get_readline_tail() != self.readline_tail:
150 self.shell.refill_readline_hist()
148 # Returning False will cause exceptions to propagate
151 # Returning False will cause exceptions to propagate
149 return False
152 return False
153
154 def get_readline_tail(self, n=10):
155 """Get the last n items in readline history."""
156 end = self.shell.readline.get_current_history_length() + 1
157 start = max(end-n, 1)
158 ghi = self.shell.readline.get_history_item
159 return [ghi(x) for x in range(start, end)]
150
160
151
161
152 #-----------------------------------------------------------------------------
162 #-----------------------------------------------------------------------------
General Comments 0
You need to be logged in to leave comments. Login now