blob: e33a6f0f357f38f2be5d2f8a8ffb78beb14453d8 [file] [log] [blame]
Guido van Rossum6ba219e1999-01-07 00:10:00 +00001
2TO DO:
3
Guido van Rossum5ec13c51999-02-08 22:27:18 +00004- improve debugger:
5 - manage breakpoints globally, allow bp deletion, tbreak, cbreak etc.
6 - real object browser
Guido van Rossum5ec13c51999-02-08 22:27:18 +00007 - help on how to use it (a simple help button will do wonders)
8 - performance? (updates of large sets of locals are slow)
9 - better integration of "debug module"
10- insert the initial current directory into sys.path
11- default directory attribute for each window instead of only for windows
12 that have an associated filename
Guido van Rossum21ad59f1999-04-08 20:28:42 +000013- "GO" commands (execute whole buffer, selection, current line
14 in the context of the Python Shell window)
Guido van Rossum9f5362b1999-04-22 14:07:33 +000015 Rename Run -> Import, Go -> Run (like Pythonwin)
16- module __name__ should be '__main__' in console
17- when reopening the shell window, the old __main__ module's contents
18 should still be there
19- output from module execution should go to Python Shell
Guido van Rossum6ba219e1999-01-07 00:10:00 +000020- command expansion from keywords, module contents, other buffers, etc.
21- "Recent documents" menu item
Guido van Rossum9f5362b1999-04-22 14:07:33 +000022- Filter region command
Guido van Rossum6ba219e1999-01-07 00:10:00 +000023- more emacsisms:
Guido van Rossum5ec13c51999-02-08 22:27:18 +000024 - parentheses matching
25 - M-[, M-] to move by paragraphs
Guido van Rossum5ec13c51999-02-08 22:27:18 +000026 - incremental search?
27 - ^K should cut to buffer
Guido van Rossum6ba219e1999-01-07 00:10:00 +000028- restructure state sensitive code to avoid testing flags all the time
Guido van Rossum6ba219e1999-01-07 00:10:00 +000029- persistent user state (e.g. window and cursor positions, bindings)
30- make backups when saving
31- check file mtimes at various points
32- interface with RCS/CVS/Perforce ???
33- status bar?
34- better help?
Guido van Rossum9f5362b1999-04-22 14:07:33 +000035- don't open second class browser on same module (nor second path browser)
36- unify class and path browsers
37- use a tree widget instead of a smalltalk/NeXT style multicolumn browser
38- Make command line behave more like the standard Python interpreter:
39 idle.py -- starts interactive shell
40 idle.py script.py arg ... -- runs script as main
41 idle.py -i script.py arg ... -- runs script as main, then interactive shell
42 idle.py -e file ... -- edit files
43 idle.py -i -e file ... -- edit files and pop up interactive shell
44 idle.py -c cmd arg ... -- run command
45 idle.py -i -c cmd arg ... -- run command, then interactive shell
46- In addition:
47 idle.py -t title -- specify alternate title for shell window
48- And perhaps:
49 if $PYTHONSTARTUP is defined, use it (perhaps make it another option?)
50- Need to define a standard way whereby one can determine one is running
51 inside IDLE (needed for Tk mainloop, also handy for $PYTHONSTARTUP)
52- Add utility methods for use by extensions (e.g. to get selection)
Guido van Rossum6ba219e1999-01-07 00:10:00 +000053
54Details:
55
56- when there's a selection, left/right arrow should go to either
57 end of the selection
58- ^O (on Unix -- open-line) should honor autoindent
59- after paste, show end of pasted text
60- on Windows, should turn short filename to long filename (not only in argv!)
61 (shouldn't this be done -- or undone -- by ntpath.normpath?)
62
63Structural problems:
64
65- too much knowledge in FileList about EditorWindow (for example)
66- Several occurrences of scrollable listbox with title and certain
67 behavior; should create base class to generalize this
68
69======================================================================
70
71Jeff Bauer suggests:
72
73- The editor should show the current line number.
74- Open Module doesn't appear to handle hierarchical packages.
75- Class browser should also allow hierarchical packages.
76- Open and Open Module could benefit from a history,
77 either command line style, or Microsoft recent-file
78 style.
79- Add a Smalltalk-style inspector (i.e. Tkinspect)
80
81The last suggestion is already a reality, but not yet
82integrated into IDLE. I use a module called inspector.py,
83that used to be available from python.org(?) It no longer
84appears to be in the contributed section, and the source
85has no author attribution.
86
87In any case, the code is useful for visually navigating
88an object's attributes, including its container hierarchy.
89
90 >>> from inspector import Tkinspect
91 >>> Tkinspect(None, myObject)
92
93Tkinspect could probably be extended and refined to
94integrate better into IDLE.
95
96======================================================================
97
98Comparison to PTUI
99------------------
100
101+ PTUI has a status line
102
103+ PTUI's help is better (HTML!)
104
105+ PTUI can attach a shell to any module
106
Guido van Rossum6ba219e1999-01-07 00:10:00 +0000107+ PTUI has more bells and whistles:
108 open multiple
109 append
Guido van Rossum6ba219e1999-01-07 00:10:00 +0000110 examine
111 go
112
113? PTUI's fontify is faster but synchronous (and still too slow);
114 does a lousy job if editing affects lines below
115
116- PTUI's shell is worse:
117 no coloring;
118 no editing of multi-line commands;
119 ^P seems to permanently remove some text from the buffer
120
121- PTUI's undo is worse:
122 no redo;
123 one char at a time
124
125- PTUI's GUI is a tad ugly:
126 I don't like the multiple buffers in one window model;
127 I don't like the big buttons at the top of the widow
128
129- PTUI lacks an integrated debugger
130
Guido van Rossum21ad59f1999-04-08 20:28:42 +0000131- PTUI lacks path and class browsers
Guido van Rossum6ba219e1999-01-07 00:10:00 +0000132
133- PTUI lacks many of IDLE's features:
134 - expand word
135 - regular expression search
136 - search files (grep)
Guido van Rossumc66e8601999-01-11 14:52:40 +0000137 - (un)tabify
138 - center
139 - zoom height
Guido van Rossum6ba219e1999-01-07 00:10:00 +0000140
141======================================================================
142
143Notes after trying to run Grail
144-------------------------------
145
146- Grail does stuff to sys.path based on sys.argv[0]; you must set
147sys.argv[0] to something decent first (it is normally set to the path of
148the idle script).
149
150- Grail must be exec'ed in __main__ because that's imported by some
151other parts of Grail.
152
153- Grail uses a module called History and so does idle :-(
154
155======================================================================