Add config-main.def option to make the 'history' feature non-cyclic.
Default remains cyclic.  Python Patch 914546 Noam Raphael.

M IdleHistory.py
M NEWS.txt
M config-main.def
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 @@
         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 @@
             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 @@
                 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: