blob: 092560feba0191cb19bd4120244eecb6d565fa47 [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"
Guido van Rossum4c6d0c71999-04-22 22:32:32 +000010 - debugger should be global resource (attached to flist, not to shell)
11 - fix the stupid bug where you need to step twice
Guido van Rossum5ec13c51999-02-08 22:27:18 +000012- insert the initial current directory into sys.path
13- default directory attribute for each window instead of only for windows
14 that have an associated filename
Guido van Rossum6ba219e1999-01-07 00:10:00 +000015- command expansion from keywords, module contents, other buffers, etc.
16- "Recent documents" menu item
Guido van Rossum9f5362b1999-04-22 14:07:33 +000017- Filter region command
Guido van Rossum4c6d0c71999-04-22 22:32:32 +000018- Optional horizontal scroll bar
Guido van Rossum6ba219e1999-01-07 00:10:00 +000019- more emacsisms:
Guido van Rossum5ec13c51999-02-08 22:27:18 +000020 - parentheses matching
21 - M-[, M-] to move by paragraphs
Guido van Rossum5ec13c51999-02-08 22:27:18 +000022 - incremental search?
23 - ^K should cut to buffer
Guido van Rossum6ba219e1999-01-07 00:10:00 +000024- restructure state sensitive code to avoid testing flags all the time
Guido van Rossum6ba219e1999-01-07 00:10:00 +000025- persistent user state (e.g. window and cursor positions, bindings)
26- make backups when saving
27- check file mtimes at various points
28- interface with RCS/CVS/Perforce ???
Guido van Rossum4c6d0c71999-04-22 22:32:32 +000029- status bar???
Guido van Rossum6ba219e1999-01-07 00:10:00 +000030- better help?
Guido van Rossum9f5362b1999-04-22 14:07:33 +000031- don't open second class browser on same module (nor second path browser)
32- unify class and path browsers
33- use a tree widget instead of a smalltalk/NeXT style multicolumn browser
Guido van Rossum4c6d0c71999-04-22 22:32:32 +000034 Need to define a standard way whereby one can determine one is running
Guido van Rossum9f5362b1999-04-22 14:07:33 +000035 inside IDLE (needed for Tk mainloop, also handy for $PYTHONSTARTUP)
36- Add utility methods for use by extensions (e.g. to get selection)
Guido van Rossum6ba219e1999-01-07 00:10:00 +000037
38Details:
39
40- when there's a selection, left/right arrow should go to either
41 end of the selection
42- ^O (on Unix -- open-line) should honor autoindent
43- after paste, show end of pasted text
44- on Windows, should turn short filename to long filename (not only in argv!)
45 (shouldn't this be done -- or undone -- by ntpath.normpath?)
46
47Structural problems:
48
49- too much knowledge in FileList about EditorWindow (for example)
50- Several occurrences of scrollable listbox with title and certain
51 behavior; should create base class to generalize this
52
53======================================================================
54
55Jeff Bauer suggests:
56
57- The editor should show the current line number.
58- Open Module doesn't appear to handle hierarchical packages.
59- Class browser should also allow hierarchical packages.
60- Open and Open Module could benefit from a history,
61 either command line style, or Microsoft recent-file
62 style.
63- Add a Smalltalk-style inspector (i.e. Tkinspect)
64
65The last suggestion is already a reality, but not yet
66integrated into IDLE. I use a module called inspector.py,
67that used to be available from python.org(?) It no longer
68appears to be in the contributed section, and the source
69has no author attribution.
70
71In any case, the code is useful for visually navigating
72an object's attributes, including its container hierarchy.
73
74 >>> from inspector import Tkinspect
75 >>> Tkinspect(None, myObject)
76
77Tkinspect could probably be extended and refined to
78integrate better into IDLE.
79
80======================================================================
81
82Comparison to PTUI
83------------------
84
85+ PTUI has a status line
86
87+ PTUI's help is better (HTML!)
88
89+ PTUI can attach a shell to any module
90
Guido van Rossum6ba219e1999-01-07 00:10:00 +000091+ PTUI has more bells and whistles:
92 open multiple
93 append
Guido van Rossum6ba219e1999-01-07 00:10:00 +000094 examine
Guido van Rossum6ba219e1999-01-07 00:10:00 +000095
96? PTUI's fontify is faster but synchronous (and still too slow);
97 does a lousy job if editing affects lines below
98
99- PTUI's shell is worse:
100 no coloring;
101 no editing of multi-line commands;
102 ^P seems to permanently remove some text from the buffer
103
104- PTUI's undo is worse:
105 no redo;
106 one char at a time
107
108- PTUI's GUI is a tad ugly:
109 I don't like the multiple buffers in one window model;
110 I don't like the big buttons at the top of the widow
111
112- PTUI lacks an integrated debugger
113
Guido van Rossum21ad59f1999-04-08 20:28:42 +0000114- PTUI lacks path and class browsers
Guido van Rossum6ba219e1999-01-07 00:10:00 +0000115
116- PTUI lacks many of IDLE's features:
117 - expand word
118 - regular expression search
119 - search files (grep)
Guido van Rossumc66e8601999-01-11 14:52:40 +0000120 - (un)tabify
121 - center
122 - zoom height
Guido van Rossum6ba219e1999-01-07 00:10:00 +0000123
124======================================================================
125
126Notes after trying to run Grail
127-------------------------------
128
129- Grail does stuff to sys.path based on sys.argv[0]; you must set
130sys.argv[0] to something decent first (it is normally set to the path of
131the idle script).
132
133- Grail must be exec'ed in __main__ because that's imported by some
134other parts of Grail.
135
136- Grail uses a module called History and so does idle :-(
137
138======================================================================