diff --git a/dotfiles/lib/python/merge_zsh_history.py b/dotfiles/lib/python/merge_zsh_history.py index c7b5def4..e92f57aa 100644 --- a/dotfiles/lib/python/merge_zsh_history.py +++ b/dotfiles/lib/python/merge_zsh_history.py @@ -2,9 +2,24 @@ import re history_entry_re = re.compile(": ([0-9]*):[0-9]*;.*") + +class dedup(set): + + def contains_add(self, elem): + if elem in self: + return True + else: + self.add(elem) + return False + + def merge_history(filenames): + entries = dedup() pairs = [entry for filename in filenames for entry in entry_timestamp_pairs(filename)] - return "".join([p[0] for p in sorted(pairs, key=lambda pair: pair[1])]) + return "".join([ + p[0] for p in sorted(pairs, key=lambda pair: pair[1]) + if not entries.contains_add(p[0]) + ]) def entry_timestamp_pairs(filename):