jpayne@68
|
1 Original IDLE todo, much of it now outdated:
|
jpayne@68
|
2 ============================================
|
jpayne@68
|
3 TO DO:
|
jpayne@68
|
4
|
jpayne@68
|
5 - improve debugger:
|
jpayne@68
|
6 - manage breakpoints globally, allow bp deletion, tbreak, cbreak etc.
|
jpayne@68
|
7 - real object browser
|
jpayne@68
|
8 - help on how to use it (a simple help button will do wonders)
|
jpayne@68
|
9 - performance? (updates of large sets of locals are slow)
|
jpayne@68
|
10 - better integration of "debug module"
|
jpayne@68
|
11 - debugger should be global resource (attached to flist, not to shell)
|
jpayne@68
|
12 - fix the stupid bug where you need to step twice
|
jpayne@68
|
13 - display class name in stack viewer entries for methods
|
jpayne@68
|
14 - suppress tracing through IDLE internals (e.g. print) DONE
|
jpayne@68
|
15 - add a button to suppress through a specific module or class or method
|
jpayne@68
|
16 - more object inspection to stack viewer, e.g. to view all array items
|
jpayne@68
|
17 - insert the initial current directory into sys.path DONE
|
jpayne@68
|
18 - default directory attribute for each window instead of only for windows
|
jpayne@68
|
19 that have an associated filename
|
jpayne@68
|
20 - command expansion from keywords, module contents, other buffers, etc.
|
jpayne@68
|
21 - "Recent documents" menu item DONE
|
jpayne@68
|
22 - Filter region command
|
jpayne@68
|
23 - Optional horizontal scroll bar
|
jpayne@68
|
24 - more Emacsisms:
|
jpayne@68
|
25 - ^K should cut to buffer
|
jpayne@68
|
26 - M-[, M-] to move by paragraphs
|
jpayne@68
|
27 - incremental search?
|
jpayne@68
|
28 - search should indicate wrap-around in some way
|
jpayne@68
|
29 - restructure state sensitive code to avoid testing flags all the time
|
jpayne@68
|
30 - persistent user state (e.g. window and cursor positions, bindings)
|
jpayne@68
|
31 - make backups when saving
|
jpayne@68
|
32 - check file mtimes at various points
|
jpayne@68
|
33 - Pluggable interface with RCS/CVS/Perforce/Clearcase
|
jpayne@68
|
34 - better help?
|
jpayne@68
|
35 - don't open second class browser on same module (nor second path browser)
|
jpayne@68
|
36 - unify class and path browsers
|
jpayne@68
|
37 - Need to define a standard way whereby one can determine one is running
|
jpayne@68
|
38 inside IDLE (needed for Tk mainloop, also handy for $PYTHONSTARTUP)
|
jpayne@68
|
39 - Add more utility methods for use by extensions (a la get_selection)
|
jpayne@68
|
40 - Way to run command in totally separate interpreter (fork+os.system?) DONE
|
jpayne@68
|
41 - Way to find definition of fully-qualified name:
|
jpayne@68
|
42 In other words, select "UserDict.UserDict", hit some magic key and
|
jpayne@68
|
43 it loads up UserDict.py and finds the first def or class for UserDict.
|
jpayne@68
|
44 - need a way to force colorization on/off
|
jpayne@68
|
45 - need a way to force auto-indent on/off
|
jpayne@68
|
46
|
jpayne@68
|
47 Details:
|
jpayne@68
|
48
|
jpayne@68
|
49 - ^O (on Unix -- open-line) should honor autoindent
|
jpayne@68
|
50 - after paste, show end of pasted text
|
jpayne@68
|
51 - on Windows, should turn short filename to long filename (not only in argv!)
|
jpayne@68
|
52 (shouldn't this be done -- or undone -- by ntpath.normpath?)
|
jpayne@68
|
53 - new autoindent after colon even indents when the colon is in a comment!
|
jpayne@68
|
54 - sometimes forward slashes in pathname remain
|
jpayne@68
|
55 - sometimes star in window name remains in Windows menu
|
jpayne@68
|
56 - With unix bindings, ESC by itself is ignored
|
jpayne@68
|
57 - Sometimes for no apparent reason a selection from the cursor to the
|
jpayne@68
|
58 end of the command buffer appears, which is hard to get rid of
|
jpayne@68
|
59 because it stays when you are typing!
|
jpayne@68
|
60 - The Line/Col in the status bar can be wrong initially in PyShell DONE
|
jpayne@68
|
61
|
jpayne@68
|
62 Structural problems:
|
jpayne@68
|
63
|
jpayne@68
|
64 - too much knowledge in FileList about EditorWindow (for example)
|
jpayne@68
|
65 - should add some primitives for accessing the selection etc.
|
jpayne@68
|
66 to repeat cumbersome code over and over
|
jpayne@68
|
67
|
jpayne@68
|
68 ======================================================================
|
jpayne@68
|
69
|
jpayne@68
|
70 Jeff Bauer suggests:
|
jpayne@68
|
71
|
jpayne@68
|
72 - Open Module doesn't appear to handle hierarchical packages.
|
jpayne@68
|
73 - Class browser should also allow hierarchical packages.
|
jpayne@68
|
74 - Open and Open Module could benefit from a history, DONE
|
jpayne@68
|
75 either command line style, or Microsoft recent-file
|
jpayne@68
|
76 style.
|
jpayne@68
|
77 - Add a Smalltalk-style inspector (i.e. Tkinspect)
|
jpayne@68
|
78
|
jpayne@68
|
79 The last suggestion is already a reality, but not yet
|
jpayne@68
|
80 integrated into IDLE. I use a module called inspector.py,
|
jpayne@68
|
81 that used to be available from python.org(?) It no longer
|
jpayne@68
|
82 appears to be in the contributed section, and the source
|
jpayne@68
|
83 has no author attribution.
|
jpayne@68
|
84
|
jpayne@68
|
85 In any case, the code is useful for visually navigating
|
jpayne@68
|
86 an object's attributes, including its container hierarchy.
|
jpayne@68
|
87
|
jpayne@68
|
88 >>> from inspector import Tkinspect
|
jpayne@68
|
89 >>> Tkinspect(None, myObject)
|
jpayne@68
|
90
|
jpayne@68
|
91 Tkinspect could probably be extended and refined to
|
jpayne@68
|
92 integrate better into IDLE.
|
jpayne@68
|
93
|
jpayne@68
|
94 ======================================================================
|
jpayne@68
|
95
|
jpayne@68
|
96 Comparison to PTUI
|
jpayne@68
|
97 ------------------
|
jpayne@68
|
98
|
jpayne@68
|
99 + PTUI's help is better (HTML!)
|
jpayne@68
|
100
|
jpayne@68
|
101 + PTUI can attach a shell to any module
|
jpayne@68
|
102
|
jpayne@68
|
103 + PTUI has some more I/O commands:
|
jpayne@68
|
104 open multiple
|
jpayne@68
|
105 append
|
jpayne@68
|
106 examine (what's that?)
|
jpayne@68
|
107
|
jpayne@68
|
108 ======================================================================
|
jpayne@68
|
109
|
jpayne@68
|
110 Notes after trying to run Grail
|
jpayne@68
|
111 -------------------------------
|
jpayne@68
|
112
|
jpayne@68
|
113 - Grail does stuff to sys.path based on sys.argv[0]; you must set
|
jpayne@68
|
114 sys.argv[0] to something decent first (it is normally set to the path of
|
jpayne@68
|
115 the idle script).
|
jpayne@68
|
116
|
jpayne@68
|
117 - Grail must be exec'ed in __main__ because that's imported by some
|
jpayne@68
|
118 other parts of Grail.
|
jpayne@68
|
119
|
jpayne@68
|
120 - Grail uses a module called History and so does idle :-(
|
jpayne@68
|
121
|
jpayne@68
|
122 ======================================================================
|
jpayne@68
|
123
|
jpayne@68
|
124 Robin Friedrich's items:
|
jpayne@68
|
125
|
jpayne@68
|
126 Things I'd like to see:
|
jpayne@68
|
127 - I'd like support for shift-click extending the selection. There's a
|
jpayne@68
|
128 bug now that it doesn't work the first time you try it.
|
jpayne@68
|
129 - Printing is needed. How hard can that be on Windows? FIRST CUT DONE
|
jpayne@68
|
130 - The python-mode trick of autoindenting a line with <tab> is neat and
|
jpayne@68
|
131 very handy.
|
jpayne@68
|
132 - (someday) a spellchecker for docstrings and comments.
|
jpayne@68
|
133 - a pagedown/up command key which moves to next class/def statement (top
|
jpayne@68
|
134 level)
|
jpayne@68
|
135 - split window capability
|
jpayne@68
|
136 - DnD text relocation/copying
|
jpayne@68
|
137
|
jpayne@68
|
138 Things I don't want to see.
|
jpayne@68
|
139 - line numbers... will probably slow things down way too much.
|
jpayne@68
|
140 - Please use another icon for the tree browser leaf. The small snake
|
jpayne@68
|
141 isn't cutting it.
|
jpayne@68
|
142
|
jpayne@68
|
143 ----------------------------------------------------------------------
|
jpayne@68
|
144
|
jpayne@68
|
145 - Customizable views (multi-window or multi-pane). (Markus Gritsch)
|
jpayne@68
|
146
|
jpayne@68
|
147 - Being able to double click (maybe double right click) on a callable
|
jpayne@68
|
148 object in the editor which shows the source of the object, if
|
jpayne@68
|
149 possible. (Gerrit Holl)
|
jpayne@68
|
150
|
jpayne@68
|
151 - Hooks into the guts, like in Emacs. (Mike Romberg)
|
jpayne@68
|
152
|
jpayne@68
|
153 - Sharing the editor with a remote tutor. (Martijn Faassen)
|
jpayne@68
|
154
|
jpayne@68
|
155 - Multiple views on the same file. (Tony J Ibbs)
|
jpayne@68
|
156
|
jpayne@68
|
157 - Store breakpoints in a global (per-project) database (GvR); Dirk
|
jpayne@68
|
158 Heise adds: save some space-trimmed context and search around when
|
jpayne@68
|
159 reopening a file that might have been edited by someone else.
|
jpayne@68
|
160
|
jpayne@68
|
161 - Capture menu events in extensions without changing the IDLE source.
|
jpayne@68
|
162 (Matthias Barmeier)
|
jpayne@68
|
163
|
jpayne@68
|
164 - Use overlapping panels (a "notebook" in MFC terms I think) for info
|
jpayne@68
|
165 that doesn't need to be accessible simultaneously (e.g. HTML source
|
jpayne@68
|
166 and output). Use multi-pane windows for info that does need to be
|
jpayne@68
|
167 shown together (e.g. class browser and source). (Albert Brandl)
|
jpayne@68
|
168
|
jpayne@68
|
169 - A project should invisibly track all symbols, for instant search,
|
jpayne@68
|
170 replace and cross-ref. Projects should be allowed to span multiple
|
jpayne@68
|
171 directories, hosts, etc. Project management files are placed in a
|
jpayne@68
|
172 directory you specify. A global mapping between project names and
|
jpayne@68
|
173 project directories should exist [not so sure --GvR]. (Tim Peters)
|
jpayne@68
|
174
|
jpayne@68
|
175 - Merge attr-tips and auto-expand. (Mark Hammond, Tim Peters)
|
jpayne@68
|
176
|
jpayne@68
|
177 - Python Shell should behave more like a "shell window" as users know
|
jpayne@68
|
178 it -- i.e. you can only edit the current command, and the cursor can't
|
jpayne@68
|
179 escape from the command area. (Albert Brandl)
|
jpayne@68
|
180
|
jpayne@68
|
181 - Set X11 class to "idle/Idle", set icon and title to something
|
jpayne@68
|
182 beginning with "idle" -- for window manangers. (Randall Hopper)
|
jpayne@68
|
183
|
jpayne@68
|
184 - Config files editable through a preferences dialog. (me) DONE
|
jpayne@68
|
185
|
jpayne@68
|
186 - Config files still editable outside the preferences dialog.
|
jpayne@68
|
187 (Randall Hopper) DONE
|
jpayne@68
|
188
|
jpayne@68
|
189 - When you're editing a command in PyShell, and there are only blank
|
jpayne@68
|
190 lines below the cursor, hitting Return should ignore or delete those
|
jpayne@68
|
191 blank lines rather than deciding you're not on the last line. (me)
|
jpayne@68
|
192
|
jpayne@68
|
193 - Run command (F5 c.s.) should be more like Pythonwin's Run -- a
|
jpayne@68
|
194 dialog with options to give command line arguments, run the debugger,
|
jpayne@68
|
195 etc. (me)
|
jpayne@68
|
196
|
jpayne@68
|
197 - Shouldn't be able to delete part of the prompt (or any text before
|
jpayne@68
|
198 it) in the PyShell. (Martijn Faassen) DONE
|
jpayne@68
|
199
|
jpayne@68
|
200 - Emacs style auto-fill (also smart about comments and strings).
|
jpayne@68
|
201 (Jeremy Hylton)
|
jpayne@68
|
202
|
jpayne@68
|
203 - Output of Run Script should go to a separate output window, not to
|
jpayne@68
|
204 the shell window. Output of separate runs should all go to the same
|
jpayne@68
|
205 window but clearly delimited. (David Scherer) REJECT FIRST, LATTER DONE
|
jpayne@68
|
206
|
jpayne@68
|
207 - GUI form designer to kick VB's butt. (Robert Geiger) THAT'S NOT IDLE
|
jpayne@68
|
208
|
jpayne@68
|
209 - Printing! Possibly via generation of PDF files which the user must
|
jpayne@68
|
210 then send to the printer separately. (Dinu Gherman) FIRST CUT
|