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