Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 1 | |
| 2 | TO DO: |
| 3 | |
Guido van Rossum | 5ec13c5 | 1999-02-08 22:27:18 +0000 | [diff] [blame] | 4 | - improve debugger: |
| 5 | - manage breakpoints globally, allow bp deletion, tbreak, cbreak etc. |
| 6 | - real object browser |
Guido van Rossum | 5ec13c5 | 1999-02-08 22:27:18 +0000 | [diff] [blame] | 7 | - 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 Rossum | 4c6d0c7 | 1999-04-22 22:32:32 +0000 | [diff] [blame^] | 10 | - debugger should be global resource (attached to flist, not to shell) |
| 11 | - fix the stupid bug where you need to step twice |
Guido van Rossum | 5ec13c5 | 1999-02-08 22:27:18 +0000 | [diff] [blame] | 12 | - 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 Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 15 | - command expansion from keywords, module contents, other buffers, etc. |
| 16 | - "Recent documents" menu item |
Guido van Rossum | 9f5362b | 1999-04-22 14:07:33 +0000 | [diff] [blame] | 17 | - Filter region command |
Guido van Rossum | 4c6d0c7 | 1999-04-22 22:32:32 +0000 | [diff] [blame^] | 18 | - Optional horizontal scroll bar |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 19 | - more emacsisms: |
Guido van Rossum | 5ec13c5 | 1999-02-08 22:27:18 +0000 | [diff] [blame] | 20 | - parentheses matching |
| 21 | - M-[, M-] to move by paragraphs |
Guido van Rossum | 5ec13c5 | 1999-02-08 22:27:18 +0000 | [diff] [blame] | 22 | - incremental search? |
| 23 | - ^K should cut to buffer |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 24 | - restructure state sensitive code to avoid testing flags all the time |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 25 | - 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 Rossum | 4c6d0c7 | 1999-04-22 22:32:32 +0000 | [diff] [blame^] | 29 | - status bar??? |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 30 | - better help? |
Guido van Rossum | 9f5362b | 1999-04-22 14:07:33 +0000 | [diff] [blame] | 31 | - 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 Rossum | 4c6d0c7 | 1999-04-22 22:32:32 +0000 | [diff] [blame^] | 34 | Need to define a standard way whereby one can determine one is running |
Guido van Rossum | 9f5362b | 1999-04-22 14:07:33 +0000 | [diff] [blame] | 35 | 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 Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 37 | |
| 38 | Details: |
| 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 | |
| 47 | Structural 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 | |
| 55 | Jeff 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 | |
| 65 | The last suggestion is already a reality, but not yet |
| 66 | integrated into IDLE. I use a module called inspector.py, |
| 67 | that used to be available from python.org(?) It no longer |
| 68 | appears to be in the contributed section, and the source |
| 69 | has no author attribution. |
| 70 | |
| 71 | In any case, the code is useful for visually navigating |
| 72 | an object's attributes, including its container hierarchy. |
| 73 | |
| 74 | >>> from inspector import Tkinspect |
| 75 | >>> Tkinspect(None, myObject) |
| 76 | |
| 77 | Tkinspect could probably be extended and refined to |
| 78 | integrate better into IDLE. |
| 79 | |
| 80 | ====================================================================== |
| 81 | |
| 82 | Comparison 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 Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 91 | + PTUI has more bells and whistles: |
| 92 | open multiple |
| 93 | append |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 94 | examine |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 95 | |
| 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 Rossum | 21ad59f | 1999-04-08 20:28:42 +0000 | [diff] [blame] | 114 | - PTUI lacks path and class browsers |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 115 | |
| 116 | - PTUI lacks many of IDLE's features: |
| 117 | - expand word |
| 118 | - regular expression search |
| 119 | - search files (grep) |
Guido van Rossum | c66e860 | 1999-01-11 14:52:40 +0000 | [diff] [blame] | 120 | - (un)tabify |
| 121 | - center |
| 122 | - zoom height |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 123 | |
| 124 | ====================================================================== |
| 125 | |
| 126 | Notes after trying to run Grail |
| 127 | ------------------------------- |
| 128 | |
| 129 | - Grail does stuff to sys.path based on sys.argv[0]; you must set |
| 130 | sys.argv[0] to something decent first (it is normally set to the path of |
| 131 | the idle script). |
| 132 | |
| 133 | - Grail must be exec'ed in __main__ because that's imported by some |
| 134 | other parts of Grail. |
| 135 | |
| 136 | - Grail uses a module called History and so does idle :-( |
| 137 | |
| 138 | ====================================================================== |