jpayne@68: Original IDLE todo, much of it now outdated: jpayne@68: ============================================ jpayne@68: TO DO: jpayne@68: jpayne@68: - improve debugger: jpayne@68: - manage breakpoints globally, allow bp deletion, tbreak, cbreak etc. jpayne@68: - real object browser jpayne@68: - help on how to use it (a simple help button will do wonders) jpayne@68: - performance? (updates of large sets of locals are slow) jpayne@68: - better integration of "debug module" jpayne@68: - debugger should be global resource (attached to flist, not to shell) jpayne@68: - fix the stupid bug where you need to step twice jpayne@68: - display class name in stack viewer entries for methods jpayne@68: - suppress tracing through IDLE internals (e.g. print) DONE jpayne@68: - add a button to suppress through a specific module or class or method jpayne@68: - more object inspection to stack viewer, e.g. to view all array items jpayne@68: - insert the initial current directory into sys.path DONE jpayne@68: - default directory attribute for each window instead of only for windows jpayne@68: that have an associated filename jpayne@68: - command expansion from keywords, module contents, other buffers, etc. jpayne@68: - "Recent documents" menu item DONE jpayne@68: - Filter region command jpayne@68: - Optional horizontal scroll bar jpayne@68: - more Emacsisms: jpayne@68: - ^K should cut to buffer jpayne@68: - M-[, M-] to move by paragraphs jpayne@68: - incremental search? jpayne@68: - search should indicate wrap-around in some way jpayne@68: - restructure state sensitive code to avoid testing flags all the time jpayne@68: - persistent user state (e.g. window and cursor positions, bindings) jpayne@68: - make backups when saving jpayne@68: - check file mtimes at various points jpayne@68: - Pluggable interface with RCS/CVS/Perforce/Clearcase jpayne@68: - better help? jpayne@68: - don't open second class browser on same module (nor second path browser) jpayne@68: - unify class and path browsers jpayne@68: - Need to define a standard way whereby one can determine one is running jpayne@68: inside IDLE (needed for Tk mainloop, also handy for $PYTHONSTARTUP) jpayne@68: - Add more utility methods for use by extensions (a la get_selection) jpayne@68: - Way to run command in totally separate interpreter (fork+os.system?) DONE jpayne@68: - Way to find definition of fully-qualified name: jpayne@68: In other words, select "UserDict.UserDict", hit some magic key and jpayne@68: it loads up UserDict.py and finds the first def or class for UserDict. jpayne@68: - need a way to force colorization on/off jpayne@68: - need a way to force auto-indent on/off jpayne@68: jpayne@68: Details: jpayne@68: jpayne@68: - ^O (on Unix -- open-line) should honor autoindent jpayne@68: - after paste, show end of pasted text jpayne@68: - on Windows, should turn short filename to long filename (not only in argv!) jpayne@68: (shouldn't this be done -- or undone -- by ntpath.normpath?) jpayne@68: - new autoindent after colon even indents when the colon is in a comment! jpayne@68: - sometimes forward slashes in pathname remain jpayne@68: - sometimes star in window name remains in Windows menu jpayne@68: - With unix bindings, ESC by itself is ignored jpayne@68: - Sometimes for no apparent reason a selection from the cursor to the jpayne@68: end of the command buffer appears, which is hard to get rid of jpayne@68: because it stays when you are typing! jpayne@68: - The Line/Col in the status bar can be wrong initially in PyShell DONE jpayne@68: jpayne@68: Structural problems: jpayne@68: jpayne@68: - too much knowledge in FileList about EditorWindow (for example) jpayne@68: - should add some primitives for accessing the selection etc. jpayne@68: to repeat cumbersome code over and over jpayne@68: jpayne@68: ====================================================================== jpayne@68: jpayne@68: Jeff Bauer suggests: jpayne@68: jpayne@68: - Open Module doesn't appear to handle hierarchical packages. jpayne@68: - Class browser should also allow hierarchical packages. jpayne@68: - Open and Open Module could benefit from a history, DONE jpayne@68: either command line style, or Microsoft recent-file jpayne@68: style. jpayne@68: - Add a Smalltalk-style inspector (i.e. Tkinspect) jpayne@68: jpayne@68: The last suggestion is already a reality, but not yet jpayne@68: integrated into IDLE. I use a module called inspector.py, jpayne@68: that used to be available from python.org(?) It no longer jpayne@68: appears to be in the contributed section, and the source jpayne@68: has no author attribution. jpayne@68: jpayne@68: In any case, the code is useful for visually navigating jpayne@68: an object's attributes, including its container hierarchy. jpayne@68: jpayne@68: >>> from inspector import Tkinspect jpayne@68: >>> Tkinspect(None, myObject) jpayne@68: jpayne@68: Tkinspect could probably be extended and refined to jpayne@68: integrate better into IDLE. jpayne@68: jpayne@68: ====================================================================== jpayne@68: jpayne@68: Comparison to PTUI jpayne@68: ------------------ jpayne@68: jpayne@68: + PTUI's help is better (HTML!) jpayne@68: jpayne@68: + PTUI can attach a shell to any module jpayne@68: jpayne@68: + PTUI has some more I/O commands: jpayne@68: open multiple jpayne@68: append jpayne@68: examine (what's that?) jpayne@68: jpayne@68: ====================================================================== jpayne@68: jpayne@68: Notes after trying to run Grail jpayne@68: ------------------------------- jpayne@68: jpayne@68: - Grail does stuff to sys.path based on sys.argv[0]; you must set jpayne@68: sys.argv[0] to something decent first (it is normally set to the path of jpayne@68: the idle script). jpayne@68: jpayne@68: - Grail must be exec'ed in __main__ because that's imported by some jpayne@68: other parts of Grail. jpayne@68: jpayne@68: - Grail uses a module called History and so does idle :-( jpayne@68: jpayne@68: ====================================================================== jpayne@68: jpayne@68: Robin Friedrich's items: jpayne@68: jpayne@68: Things I'd like to see: jpayne@68: - I'd like support for shift-click extending the selection. There's a jpayne@68: bug now that it doesn't work the first time you try it. jpayne@68: - Printing is needed. How hard can that be on Windows? FIRST CUT DONE jpayne@68: - The python-mode trick of autoindenting a line with is neat and jpayne@68: very handy. jpayne@68: - (someday) a spellchecker for docstrings and comments. jpayne@68: - a pagedown/up command key which moves to next class/def statement (top jpayne@68: level) jpayne@68: - split window capability jpayne@68: - DnD text relocation/copying jpayne@68: jpayne@68: Things I don't want to see. jpayne@68: - line numbers... will probably slow things down way too much. jpayne@68: - Please use another icon for the tree browser leaf. The small snake jpayne@68: isn't cutting it. jpayne@68: jpayne@68: ---------------------------------------------------------------------- jpayne@68: jpayne@68: - Customizable views (multi-window or multi-pane). (Markus Gritsch) jpayne@68: jpayne@68: - Being able to double click (maybe double right click) on a callable jpayne@68: object in the editor which shows the source of the object, if jpayne@68: possible. (Gerrit Holl) jpayne@68: jpayne@68: - Hooks into the guts, like in Emacs. (Mike Romberg) jpayne@68: jpayne@68: - Sharing the editor with a remote tutor. (Martijn Faassen) jpayne@68: jpayne@68: - Multiple views on the same file. (Tony J Ibbs) jpayne@68: jpayne@68: - Store breakpoints in a global (per-project) database (GvR); Dirk jpayne@68: Heise adds: save some space-trimmed context and search around when jpayne@68: reopening a file that might have been edited by someone else. jpayne@68: jpayne@68: - Capture menu events in extensions without changing the IDLE source. jpayne@68: (Matthias Barmeier) jpayne@68: jpayne@68: - Use overlapping panels (a "notebook" in MFC terms I think) for info jpayne@68: that doesn't need to be accessible simultaneously (e.g. HTML source jpayne@68: and output). Use multi-pane windows for info that does need to be jpayne@68: shown together (e.g. class browser and source). (Albert Brandl) jpayne@68: jpayne@68: - A project should invisibly track all symbols, for instant search, jpayne@68: replace and cross-ref. Projects should be allowed to span multiple jpayne@68: directories, hosts, etc. Project management files are placed in a jpayne@68: directory you specify. A global mapping between project names and jpayne@68: project directories should exist [not so sure --GvR]. (Tim Peters) jpayne@68: jpayne@68: - Merge attr-tips and auto-expand. (Mark Hammond, Tim Peters) jpayne@68: jpayne@68: - Python Shell should behave more like a "shell window" as users know jpayne@68: it -- i.e. you can only edit the current command, and the cursor can't jpayne@68: escape from the command area. (Albert Brandl) jpayne@68: jpayne@68: - Set X11 class to "idle/Idle", set icon and title to something jpayne@68: beginning with "idle" -- for window manangers. (Randall Hopper) jpayne@68: jpayne@68: - Config files editable through a preferences dialog. (me) DONE jpayne@68: jpayne@68: - Config files still editable outside the preferences dialog. jpayne@68: (Randall Hopper) DONE jpayne@68: jpayne@68: - When you're editing a command in PyShell, and there are only blank jpayne@68: lines below the cursor, hitting Return should ignore or delete those jpayne@68: blank lines rather than deciding you're not on the last line. (me) jpayne@68: jpayne@68: - Run command (F5 c.s.) should be more like Pythonwin's Run -- a jpayne@68: dialog with options to give command line arguments, run the debugger, jpayne@68: etc. (me) jpayne@68: jpayne@68: - Shouldn't be able to delete part of the prompt (or any text before jpayne@68: it) in the PyShell. (Martijn Faassen) DONE jpayne@68: jpayne@68: - Emacs style auto-fill (also smart about comments and strings). jpayne@68: (Jeremy Hylton) jpayne@68: jpayne@68: - Output of Run Script should go to a separate output window, not to jpayne@68: the shell window. Output of separate runs should all go to the same jpayne@68: window but clearly delimited. (David Scherer) REJECT FIRST, LATTER DONE jpayne@68: jpayne@68: - GUI form designer to kick VB's butt. (Robert Geiger) THAT'S NOT IDLE jpayne@68: jpayne@68: - Printing! Possibly via generation of PDF files which the user must jpayne@68: then send to the printer separately. (Dinu Gherman) FIRST CUT