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" |
| 10 | - insert the initial current directory into sys.path |
| 11 | - default directory attribute for each window instead of only for windows |
| 12 | that have an associated filename |
Guido van Rossum | 21ad59f | 1999-04-08 20:28:42 +0000 | [diff] [blame] | 13 | - "GO" commands (execute whole buffer, selection, current line |
| 14 | in the context of the Python Shell window) |
Guido van Rossum | 9f5362b | 1999-04-22 14:07:33 +0000 | [diff] [blame^] | 15 | Rename Run -> Import, Go -> Run (like Pythonwin) |
| 16 | - module __name__ should be '__main__' in console |
| 17 | - when reopening the shell window, the old __main__ module's contents |
| 18 | should still be there |
| 19 | - output from module execution should go to Python Shell |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 20 | - command expansion from keywords, module contents, other buffers, etc. |
| 21 | - "Recent documents" menu item |
Guido van Rossum | 9f5362b | 1999-04-22 14:07:33 +0000 | [diff] [blame^] | 22 | - Filter region command |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 23 | - more emacsisms: |
Guido van Rossum | 5ec13c5 | 1999-02-08 22:27:18 +0000 | [diff] [blame] | 24 | - parentheses matching |
| 25 | - M-[, M-] to move by paragraphs |
Guido van Rossum | 5ec13c5 | 1999-02-08 22:27:18 +0000 | [diff] [blame] | 26 | - incremental search? |
| 27 | - ^K should cut to buffer |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 28 | - restructure state sensitive code to avoid testing flags all the time |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 29 | - persistent user state (e.g. window and cursor positions, bindings) |
| 30 | - make backups when saving |
| 31 | - check file mtimes at various points |
| 32 | - interface with RCS/CVS/Perforce ??? |
| 33 | - status bar? |
| 34 | - better help? |
Guido van Rossum | 9f5362b | 1999-04-22 14:07:33 +0000 | [diff] [blame^] | 35 | - don't open second class browser on same module (nor second path browser) |
| 36 | - unify class and path browsers |
| 37 | - use a tree widget instead of a smalltalk/NeXT style multicolumn browser |
| 38 | - Make command line behave more like the standard Python interpreter: |
| 39 | idle.py -- starts interactive shell |
| 40 | idle.py script.py arg ... -- runs script as main |
| 41 | idle.py -i script.py arg ... -- runs script as main, then interactive shell |
| 42 | idle.py -e file ... -- edit files |
| 43 | idle.py -i -e file ... -- edit files and pop up interactive shell |
| 44 | idle.py -c cmd arg ... -- run command |
| 45 | idle.py -i -c cmd arg ... -- run command, then interactive shell |
| 46 | - In addition: |
| 47 | idle.py -t title -- specify alternate title for shell window |
| 48 | - And perhaps: |
| 49 | if $PYTHONSTARTUP is defined, use it (perhaps make it another option?) |
| 50 | - Need to define a standard way whereby one can determine one is running |
| 51 | inside IDLE (needed for Tk mainloop, also handy for $PYTHONSTARTUP) |
| 52 | - 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] | 53 | |
| 54 | Details: |
| 55 | |
| 56 | - when there's a selection, left/right arrow should go to either |
| 57 | end of the selection |
| 58 | - ^O (on Unix -- open-line) should honor autoindent |
| 59 | - after paste, show end of pasted text |
| 60 | - on Windows, should turn short filename to long filename (not only in argv!) |
| 61 | (shouldn't this be done -- or undone -- by ntpath.normpath?) |
| 62 | |
| 63 | Structural problems: |
| 64 | |
| 65 | - too much knowledge in FileList about EditorWindow (for example) |
| 66 | - Several occurrences of scrollable listbox with title and certain |
| 67 | behavior; should create base class to generalize this |
| 68 | |
| 69 | ====================================================================== |
| 70 | |
| 71 | Jeff Bauer suggests: |
| 72 | |
| 73 | - The editor should show the current line number. |
| 74 | - Open Module doesn't appear to handle hierarchical packages. |
| 75 | - Class browser should also allow hierarchical packages. |
| 76 | - Open and Open Module could benefit from a history, |
| 77 | either command line style, or Microsoft recent-file |
| 78 | style. |
| 79 | - Add a Smalltalk-style inspector (i.e. Tkinspect) |
| 80 | |
| 81 | The last suggestion is already a reality, but not yet |
| 82 | integrated into IDLE. I use a module called inspector.py, |
| 83 | that used to be available from python.org(?) It no longer |
| 84 | appears to be in the contributed section, and the source |
| 85 | has no author attribution. |
| 86 | |
| 87 | In any case, the code is useful for visually navigating |
| 88 | an object's attributes, including its container hierarchy. |
| 89 | |
| 90 | >>> from inspector import Tkinspect |
| 91 | >>> Tkinspect(None, myObject) |
| 92 | |
| 93 | Tkinspect could probably be extended and refined to |
| 94 | integrate better into IDLE. |
| 95 | |
| 96 | ====================================================================== |
| 97 | |
| 98 | Comparison to PTUI |
| 99 | ------------------ |
| 100 | |
| 101 | + PTUI has a status line |
| 102 | |
| 103 | + PTUI's help is better (HTML!) |
| 104 | |
| 105 | + PTUI can attach a shell to any module |
| 106 | |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 107 | + PTUI has more bells and whistles: |
| 108 | open multiple |
| 109 | append |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 110 | examine |
| 111 | go |
| 112 | |
| 113 | ? PTUI's fontify is faster but synchronous (and still too slow); |
| 114 | does a lousy job if editing affects lines below |
| 115 | |
| 116 | - PTUI's shell is worse: |
| 117 | no coloring; |
| 118 | no editing of multi-line commands; |
| 119 | ^P seems to permanently remove some text from the buffer |
| 120 | |
| 121 | - PTUI's undo is worse: |
| 122 | no redo; |
| 123 | one char at a time |
| 124 | |
| 125 | - PTUI's GUI is a tad ugly: |
| 126 | I don't like the multiple buffers in one window model; |
| 127 | I don't like the big buttons at the top of the widow |
| 128 | |
| 129 | - PTUI lacks an integrated debugger |
| 130 | |
Guido van Rossum | 21ad59f | 1999-04-08 20:28:42 +0000 | [diff] [blame] | 131 | - PTUI lacks path and class browsers |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 132 | |
| 133 | - PTUI lacks many of IDLE's features: |
| 134 | - expand word |
| 135 | - regular expression search |
| 136 | - search files (grep) |
Guido van Rossum | c66e860 | 1999-01-11 14:52:40 +0000 | [diff] [blame] | 137 | - (un)tabify |
| 138 | - center |
| 139 | - zoom height |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 140 | |
| 141 | ====================================================================== |
| 142 | |
| 143 | Notes after trying to run Grail |
| 144 | ------------------------------- |
| 145 | |
| 146 | - Grail does stuff to sys.path based on sys.argv[0]; you must set |
| 147 | sys.argv[0] to something decent first (it is normally set to the path of |
| 148 | the idle script). |
| 149 | |
| 150 | - Grail must be exec'ed in __main__ because that's imported by some |
| 151 | other parts of Grail. |
| 152 | |
| 153 | - Grail uses a module called History and so does idle :-( |
| 154 | |
| 155 | ====================================================================== |