| |
| TO DO: |
| |
| - improve debugger: |
| - manage breakpoints globally, allow bp deletion, tbreak, cbreak etc. |
| - real object browser |
| - help on how to use it (a simple help button will do wonders) |
| - performance? (updates of large sets of locals are slow) |
| - better integration of "debug module" |
| - debugger should be global resource (attached to flist, not to shell) |
| - fix the stupid bug where you need to step twice |
| - after closing and reopening PyShell, debugger no longer works :-( |
| - display class name in stack viewer entries for methods |
| - suppress tracing through IDLE internals (e.g. print) |
| - add a button to suppress through a specific module or class or method |
| - insert the initial current directory into sys.path |
| - default directory attribute for each window instead of only for windows |
| that have an associated filename |
| - command expansion from keywords, module contents, other buffers, etc. |
| - "Recent documents" menu item |
| - Filter region command |
| - Optional horizontal scroll bar |
| - more emacsisms: |
| - parentheses matching |
| - M-[, M-] to move by paragraphs |
| - incremental search? |
| - ^K should cut to buffer |
| - search should indicate wrap-around in some way |
| - restructure state sensitive code to avoid testing flags all the time |
| - persistent user state (e.g. window and cursor positions, bindings) |
| - make backups when saving |
| - check file mtimes at various points |
| - interface with RCS/CVS/Perforce ??? |
| - status bar??? |
| - better help? |
| - don't open second class browser on same module (nor second path browser) |
| - unify class and path browsers |
| - use a tree widget instead of a smalltalk/NeXT style multicolumn browser |
| Need to define a standard way whereby one can determine one is running |
| inside IDLE (needed for Tk mainloop, also handy for $PYTHONSTARTUP) |
| - Add more utility methods for use by extensions (a la get_selection) |
| - Way to run command in totally separate interpreter (fork+os.system?) |
| - Way to find definition of fully-qualified name: |
| In other words, select "UserDict.UserDict", hit some magic key and |
| it loads up UserDict.py and finds the first def or class for UserDict. |
| - need a way to force colorization on/off |
| |
| Details: |
| |
| - when there's a selection, left/right arrow should go to either |
| end of the selection |
| - ^O (on Unix -- open-line) should honor autoindent |
| - after paste, show end of pasted text |
| - on Windows, should turn short filename to long filename (not only in argv!) |
| (shouldn't this be done -- or undone -- by ntpath.normpath?) |
| - new autoindent after colon even indents when the colon is in a comment! |
| - sometimes forward slashes in pathname remain |
| - sometimes star in window name remains in Windows menu |
| |
| Structural problems: |
| |
| - too much knowledge in FileList about EditorWindow (for example) |
| - should add some primitives for accessing the selection etc. |
| to repeat cumbersome code over and over |
| |
| ====================================================================== |
| |
| Jeff Bauer suggests: |
| |
| - The editor should show the current line number. |
| - Open Module doesn't appear to handle hierarchical packages. |
| - Class browser should also allow hierarchical packages. |
| - Open and Open Module could benefit from a history, |
| either command line style, or Microsoft recent-file |
| style. |
| - Add a Smalltalk-style inspector (i.e. Tkinspect) |
| |
| The last suggestion is already a reality, but not yet |
| integrated into IDLE. I use a module called inspector.py, |
| that used to be available from python.org(?) It no longer |
| appears to be in the contributed section, and the source |
| has no author attribution. |
| |
| In any case, the code is useful for visually navigating |
| an object's attributes, including its container hierarchy. |
| |
| >>> from inspector import Tkinspect |
| >>> Tkinspect(None, myObject) |
| |
| Tkinspect could probably be extended and refined to |
| integrate better into IDLE. |
| |
| ====================================================================== |
| |
| Comparison to PTUI |
| ------------------ |
| |
| + PTUI has a status line |
| |
| + PTUI's help is better (HTML!) |
| |
| + PTUI can attach a shell to any module |
| |
| + PTUI has more bells and whistles: |
| open multiple |
| append |
| examine |
| |
| ? PTUI's fontify is faster but synchronous (and still too slow); |
| does a lousy job if editing affects lines below |
| |
| - PTUI's shell is worse: |
| no coloring; |
| no editing of multi-line commands; |
| ^P seems to permanently remove some text from the buffer |
| |
| - PTUI's undo is worse: |
| no redo; |
| one char at a time |
| |
| - PTUI's GUI is a tad ugly: |
| I don't like the multiple buffers in one window model; |
| I don't like the big buttons at the top of the widow |
| |
| - PTUI lacks an integrated debugger |
| |
| - PTUI lacks path and class browsers |
| |
| - PTUI lacks many of IDLE's features: |
| - expand word |
| - regular expression search |
| - search files (grep) |
| - (un)tabify |
| - center |
| - zoom height |
| |
| ====================================================================== |
| |
| Notes after trying to run Grail |
| ------------------------------- |
| |
| - Grail does stuff to sys.path based on sys.argv[0]; you must set |
| sys.argv[0] to something decent first (it is normally set to the path of |
| the idle script). |
| |
| - Grail must be exec'ed in __main__ because that's imported by some |
| other parts of Grail. |
| |
| - Grail uses a module called History and so does idle :-( |
| |
| ====================================================================== |