diff options
author | hut <hut@lepus.uberspace.de> | 2016-02-28 18:16:52 +0100 |
---|---|---|
committer | hut <hut@lepus.uberspace.de> | 2016-02-28 18:16:58 +0100 |
commit | 55f9030f784a823a6bce7f498fb6a18e2bd9672b (patch) | |
tree | 2edbb71ec5ff4dfddd1b3a6ce3c6b1033abb8f2b /ranger | |
parent | c216901aef4380d9f0d06d4c5545c2983fc244ef (diff) | |
download | ranger-55f9030f784a823a6bce7f498fb6a18e2bd9672b.tar.gz |
container.history: fixed rebase() unit test
Diffstat (limited to 'ranger')
-rw-r--r-- | ranger/container/history.py | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/ranger/container/history.py b/ranger/container/history.py index db2ea8ab..69c3da57 100644 --- a/ranger/container/history.py +++ b/ranger/container/history.py @@ -53,12 +53,31 @@ class History(object): self.add(item) def rebase(self, other_history): + """ + Replace the past of this history by that of another. + + This is used when creating a new tab to seamlessly blend in the history + of the old tab into the new one. + + Example: if self is [a,b,C], the current item is uppercase, and + other_history is [x,Y,z], then self.merge(other_history) will result in + [x, y, C]. + """ assert isinstance(other_history, History) - index_offset = len(self._history) - self._index - self._history[:self._index + 1] = list(other_history._history) + + if len(self._history) == 0: + self._index = 0 + future_length = 0 + else: + future_length = len(self._history) - self._index - 1 + + self._history[:self._index] = list( + other_history._history[:other_history._index + 1]) if len(self._history) > self.maxlen: self._history = self._history[-self.maxlen:] - self._index = len(self._history) - index_offset + + self._index = len(self._history) - future_length - 1 + assert self._index < len(self._history) def __len__(self): return len(self._history) |