/
opt
/
alt
/
python35
/
lib64
/
python3.5
/
idlelib
/
/opt/alt/python35/lib64/python3.5/idlelib
mkdir
upload
Name
Size
Mode
Actions
Icons/
-
0755
rm
idle_test/
-
0755
rm
__pycache__/
-
0755
rm
aboutDialog.py
6987
0644
edit
dl
rm
AutoComplete.py
9201
0644
edit
dl
rm
AutoCompleteWindow.py
17739
0644
edit
dl
rm
AutoExpand.py
3395
0644
edit
dl
rm
Bindings.py
3111
0644
edit
dl
rm
CallTips.py
5932
0644
edit
dl
rm
CallTipWindow.py
6035
0644
edit
dl
rm
ChangeLog
56388
0644
edit
dl
rm
ClassBrowser.py
6999
0644
edit
dl
rm
CodeContext.py
8357
0644
edit
dl
rm
ColorDelegator.py
10598
0644
edit
dl
rm
config-extensions.def
2965
0644
edit
dl
rm
config-highlight.def
2515
0644
edit
dl
rm
config-keys.def
7777
0644
edit
dl
rm
config-main.def
2563
0644
edit
dl
rm
configDialog.py
65061
0644
edit
dl
rm
configHandler.py
32451
0644
edit
dl
rm
configHelpSourceEdit.py
6817
0644
edit
dl
rm
configSectionNameDialog.py
4007
0644
edit
dl
rm
CREDITS.txt
1866
0644
edit
dl
rm
Debugger.py
18758
0644
edit
dl
rm
Delegator.py
1043
0644
edit
dl
rm
dynOptionMenuWidget.py
1990
0644
edit
dl
rm
EditorWindow.py
65595
0644
edit
dl
rm
extend.txt
3642
0644
edit
dl
rm
FileList.py
3813
0644
edit
dl
rm
FormatParagraph.py
7287
0644
edit
dl
rm
GrepDialog.py
5124
0644
edit
dl
rm
help.html
43411
0644
edit
dl
rm
help.py
10952
0644
edit
dl
rm
help.txt
17900
0644
edit
dl
rm
HISTORY.txt
10312
0644
edit
dl
rm
HyperParser.py
12877
0644
edit
dl
rm
idle.py
453
0644
edit
dl
rm
idle.pyw
570
0644
edit
dl
rm
IdleHistory.py
4052
0644
edit
dl
rm
idlever.py
415
0644
edit
dl
rm
IOBinding.py
20599
0644
edit
dl
rm
keybindingDialog.py
12416
0644
edit
dl
rm
macosxSupport.py
8684
0644
edit
dl
rm
MultiCall.py
18571
0644
edit
dl
rm
MultiStatusBar.py
1348
0644
edit
dl
rm
NEWS.txt
15536
0644
edit
dl
rm
NEWS2x.txt
27172
0644
edit
dl
rm
ObjectBrowser.py
3975
0644
edit
dl
rm
OutputWindow.py
4394
0644
edit
dl
rm
ParenMatch.py
6714
0644
edit
dl
rm
PathBrowser.py
3207
0644
edit
dl
rm
Percolator.py
3179
0644
edit
dl
rm
PyParse.py
20461
0644
edit
dl
rm
PyShell.py
58846
0755
edit
dl
rm
README.txt
7891
0644
edit
dl
rm
RemoteDebugger.py
12007
0644
edit
dl
rm
RemoteObjectBrowser.py
964
0644
edit
dl
rm
ReplaceDialog.py
7481
0644
edit
dl
rm
rpc.py
20784
0644
edit
dl
rm
RstripExtension.py
1050
0644
edit
dl
rm
run.py
13869
0644
edit
dl
rm
ScriptBinding.py
8061
0644
edit
dl
rm
ScrolledList.py
4375
0644
edit
dl
rm
SearchDialog.py
3127
0644
edit
dl
rm
SearchDialogBase.py
7009
0644
edit
dl
rm
SearchEngine.py
7485
0644
edit
dl
rm
StackViewer.py
4426
0644
edit
dl
rm
tabbedpages.py
18418
0644
edit
dl
rm
textView.py
3419
0644
edit
dl
rm
TODO.txt
8478
0644
edit
dl
rm
ToolTip.py
3173
0644
edit
dl
rm
TreeWidget.py
15024
0644
edit
dl
rm
UndoDelegator.py
10980
0644
edit
dl
rm
WidgetRedirector.py
6939
0644
edit
dl
rm
WindowList.py
2472
0644
edit
dl
rm
ZoomHeight.py
1300
0644
edit
dl
rm
__init__.py
335
0644
edit
dl
rm
__main__.py
159
0644
edit
dl
rm
Edit:
/opt/alt/python35/lib64/python3.5/idlelib/IdleHistory.py
(4052B)
"Implement Idle Shell history mechanism with History class" from idlelib.configHandler import idleConf class History: ''' Implement Idle Shell history mechanism. store - Store source statement (called from PyShell.resetoutput). fetch - Fetch stored statement matching prefix already entered. history_next - Bound to <<history-next>> event (default Alt-N). history_prev - Bound to <<history-prev>> event (default Alt-P). ''' def __init__(self, text): '''Initialize data attributes and bind event methods. .text - Idle wrapper of tk Text widget, with .bell(). .history - source statements, possibly with multiple lines. .prefix - source already entered at prompt; filters history list. .pointer - index into history. .cyclic - wrap around history list (or not). ''' self.text = text self.history = [] self.prefix = None self.pointer = None self.cyclic = idleConf.GetOption("main", "History", "cyclic", 1, "bool") text.bind("<<history-previous>>", self.history_prev) text.bind("<<history-next>>", self.history_next) def history_next(self, event): "Fetch later statement; start with ealiest if cyclic." self.fetch(reverse=False) return "break" def history_prev(self, event): "Fetch earlier statement; start with most recent." self.fetch(reverse=True) return "break" def fetch(self, reverse): '''Fetch statememt and replace current line in text widget. Set prefix and pointer as needed for successive fetches. Reset them to None, None when returning to the start line. Sound bell when return to start line or cannot leave a line because cyclic is False. ''' nhist = len(self.history) pointer = self.pointer prefix = self.prefix if pointer is not None and prefix is not None: if self.text.compare("insert", "!=", "end-1c") or \ self.text.get("iomark", "end-1c") != self.history[pointer]: pointer = prefix = None self.text.mark_set("insert", "end-1c") # != after cursor move if pointer is None or prefix is None: prefix = self.text.get("iomark", "end-1c") if reverse: pointer = nhist # will be decremented else: if self.cyclic: pointer = -1 # will be incremented else: # abort history_next self.text.bell() return nprefix = len(prefix) while 1: pointer += -1 if reverse else 1 if pointer < 0 or pointer >= nhist: self.text.bell() if not self.cyclic and pointer < 0: # abort history_prev return else: if self.text.get("iomark", "end-1c") != prefix: self.text.delete("iomark", "end-1c") self.text.insert("iomark", prefix) pointer = prefix = None break item = self.history[pointer] if item[:nprefix] == prefix and len(item) > nprefix: self.text.delete("iomark", "end-1c") self.text.insert("iomark", item) break self.text.see("insert") self.text.tag_remove("sel", "1.0", "end") self.pointer = pointer self.prefix = prefix def store(self, source): "Store Shell input statement into history list." source = source.strip() if len(source) > 2: # avoid duplicates try: self.history.remove(source) except ValueError: pass self.history.append(source) self.pointer = None self.prefix = None if __name__ == "__main__": from unittest import main main('idlelib.idle_test.test_idlehistory', verbosity=2, exit=False)
Save
cmd:
run