Show More
@@ -140,17 +140,29 b' class ReadlineNoRecord(object):' | |||||
140 |
|
140 | |||
141 | def __enter__(self): |
|
141 | def __enter__(self): | |
142 | if self._nested_level == 0: |
|
142 | if self._nested_level == 0: | |
|
143 | self.orig_length = self.current_length() | |||
143 | self.readline_tail = self.get_readline_tail() |
|
144 | self.readline_tail = self.get_readline_tail() | |
144 | self._nested_level += 1 |
|
145 | self._nested_level += 1 | |
145 |
|
146 | |||
146 | def __exit__(self, type, value, traceback): |
|
147 | def __exit__(self, type, value, traceback): | |
147 | self._nested_level -= 1 |
|
148 | self._nested_level -= 1 | |
148 | if self._nested_level == 0: |
|
149 | if self._nested_level == 0: | |
149 | if self.get_readline_tail() != self.readline_tail: |
|
150 | # Try clipping the end if it's got longer | |
|
151 | e = self.current_length() - self.orig_length | |||
|
152 | if e > 0: | |||
|
153 | for _ in range(e): | |||
|
154 | self.shell.readline.remove_history_item(self.orig_length) | |||
|
155 | ||||
|
156 | # If it still doesn't match, just reload readline history. | |||
|
157 | if self.current_length() != self.orig_length \ | |||
|
158 | or self.get_readline_tail() != self.readline_tail: | |||
150 | self.shell.refill_readline_hist() |
|
159 | self.shell.refill_readline_hist() | |
151 | # Returning False will cause exceptions to propagate |
|
160 | # Returning False will cause exceptions to propagate | |
152 | return False |
|
161 | return False | |
153 |
|
|
162 | ||
|
163 | def current_length(self): | |||
|
164 | return self.shell.readline.get_current_history_length() | |||
|
165 | ||||
154 | def get_readline_tail(self, n=10): |
|
166 | def get_readline_tail(self, n=10): | |
155 | """Get the last n items in readline history.""" |
|
167 | """Get the last n items in readline history.""" | |
156 | end = self.shell.readline.get_current_history_length() + 1 |
|
168 | end = self.shell.readline.get_current_history_length() + 1 |
General Comments 0
You need to be logged in to leave comments.
Login now