diff options
Diffstat (limited to 'Lib/idlelib/IdleHistory.py')
-rw-r--r-- | Lib/idlelib/IdleHistory.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/Lib/idlelib/IdleHistory.py b/Lib/idlelib/IdleHistory.py index 46e70e1..f672db7 100644 --- a/Lib/idlelib/IdleHistory.py +++ b/Lib/idlelib/IdleHistory.py @@ -1,3 +1,5 @@ +from configHandler import idleConf + class History: def __init__(self, text, output_sep = "\n"): @@ -6,6 +8,7 @@ class History: self.history_prefix = None self.history_pointer = None self.output_sep = output_sep + self.cyclic = idleConf.GetOption("main", "History", "cyclic", 1, "bool") text.bind("<<history-previous>>", self.history_prev) text.bind("<<history-next>>", self.history_next) @@ -40,7 +43,11 @@ class History: if reverse: pointer = nhist else: - pointer = -1 + if self.cyclic: + pointer = -1 + else: + self.text.bell() + return nprefix = len(prefix) while 1: if reverse: @@ -49,10 +56,13 @@ class History: pointer = pointer + 1 if pointer < 0 or pointer >= nhist: self.text.bell() - if self._get_source("iomark", "end-1c") != prefix: - self.text.delete("iomark", "end-1c") - self._put_source("iomark", prefix) - pointer = prefix = None + if not self.cyclic and pointer < 0: + return + else: + if self._get_source("iomark", "end-1c") != prefix: + self.text.delete("iomark", "end-1c") + self._put_source("iomark", prefix) + pointer = prefix = None break item = self.history[pointer] if item[:nprefix] == prefix and len(item) > nprefix: |