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 | 2092b43 | 1999-05-21 04:45:20 +0000 | [diff] [blame] | 12 | - after closing and reopening PyShell, debugger no longer works :-( |
Guido van Rossum | 7f2c9d3 | 1999-09-09 14:16:02 +0000 | [diff] [blame^] | 13 | - display class name in stack viewer entries for methods |
| 14 | - suppress tracing through IDLE internals (e.g. print) |
| 15 | - add a button to suppress through a specific module or class or method |
Guido van Rossum | 5ec13c5 | 1999-02-08 22:27:18 +0000 | [diff] [blame] | 16 | - insert the initial current directory into sys.path |
| 17 | - default directory attribute for each window instead of only for windows |
| 18 | that have an associated filename |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 19 | - command expansion from keywords, module contents, other buffers, etc. |
| 20 | - "Recent documents" menu item |
Guido van Rossum | 9f5362b | 1999-04-22 14:07:33 +0000 | [diff] [blame] | 21 | - Filter region command |
Guido van Rossum | 4c6d0c7 | 1999-04-22 22:32:32 +0000 | [diff] [blame] | 22 | - Optional horizontal scroll bar |
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 | 2092b43 | 1999-05-21 04:45:20 +0000 | [diff] [blame] | 28 | - search should indicate wrap-around in some way |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 29 | - restructure state sensitive code to avoid testing flags all the time |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 30 | - persistent user state (e.g. window and cursor positions, bindings) |
| 31 | - make backups when saving |
| 32 | - check file mtimes at various points |
| 33 | - interface with RCS/CVS/Perforce ??? |
Guido van Rossum | 4c6d0c7 | 1999-04-22 22:32:32 +0000 | [diff] [blame] | 34 | - status bar??? |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 35 | - better help? |
Guido van Rossum | 9f5362b | 1999-04-22 14:07:33 +0000 | [diff] [blame] | 36 | - don't open second class browser on same module (nor second path browser) |
| 37 | - unify class and path browsers |
| 38 | - 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] | 39 | 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] | 40 | inside IDLE (needed for Tk mainloop, also handy for $PYTHONSTARTUP) |
Guido van Rossum | aba953e | 1999-07-15 13:11:02 +0000 | [diff] [blame] | 41 | - Add more utility methods for use by extensions (a la get_selection) |
| 42 | - Way to run command in totally separate interpreter (fork+os.system?) |
| 43 | - Way to find definition of fully-qualified name: |
| 44 | In other words, select "UserDict.UserDict", hit some magic key and |
| 45 | it loads up UserDict.py and finds the first def or class for UserDict. |
Guido van Rossum | 7f2c9d3 | 1999-09-09 14:16:02 +0000 | [diff] [blame^] | 46 | - need a way to force colorization on/off |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 47 | |
| 48 | Details: |
| 49 | |
| 50 | - when there's a selection, left/right arrow should go to either |
| 51 | end of the selection |
| 52 | - ^O (on Unix -- open-line) should honor autoindent |
| 53 | - after paste, show end of pasted text |
| 54 | - on Windows, should turn short filename to long filename (not only in argv!) |
| 55 | (shouldn't this be done -- or undone -- by ntpath.normpath?) |
Guido van Rossum | 2092b43 | 1999-05-21 04:45:20 +0000 | [diff] [blame] | 56 | - new autoindent after colon even indents when the colon is in a comment! |
| 57 | - sometimes forward slashes in pathname remain |
| 58 | - sometimes star in window name remains in Windows menu |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 59 | |
| 60 | Structural problems: |
| 61 | |
| 62 | - too much knowledge in FileList about EditorWindow (for example) |
Guido van Rossum | 2092b43 | 1999-05-21 04:45:20 +0000 | [diff] [blame] | 63 | - should add some primitives for accessing the selection etc. |
| 64 | to repeat cumbersome code over and over |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 65 | |
| 66 | ====================================================================== |
| 67 | |
| 68 | Jeff Bauer suggests: |
| 69 | |
| 70 | - The editor should show the current line number. |
| 71 | - Open Module doesn't appear to handle hierarchical packages. |
| 72 | - Class browser should also allow hierarchical packages. |
| 73 | - Open and Open Module could benefit from a history, |
| 74 | either command line style, or Microsoft recent-file |
| 75 | style. |
| 76 | - Add a Smalltalk-style inspector (i.e. Tkinspect) |
| 77 | |
| 78 | The last suggestion is already a reality, but not yet |
| 79 | integrated into IDLE. I use a module called inspector.py, |
| 80 | that used to be available from python.org(?) It no longer |
| 81 | appears to be in the contributed section, and the source |
| 82 | has no author attribution. |
| 83 | |
| 84 | In any case, the code is useful for visually navigating |
| 85 | an object's attributes, including its container hierarchy. |
| 86 | |
| 87 | >>> from inspector import Tkinspect |
| 88 | >>> Tkinspect(None, myObject) |
| 89 | |
| 90 | Tkinspect could probably be extended and refined to |
| 91 | integrate better into IDLE. |
| 92 | |
| 93 | ====================================================================== |
| 94 | |
| 95 | Comparison to PTUI |
| 96 | ------------------ |
| 97 | |
| 98 | + PTUI has a status line |
| 99 | |
| 100 | + PTUI's help is better (HTML!) |
| 101 | |
| 102 | + PTUI can attach a shell to any module |
| 103 | |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 104 | + PTUI has more bells and whistles: |
| 105 | open multiple |
| 106 | append |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 107 | examine |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 108 | |
| 109 | ? PTUI's fontify is faster but synchronous (and still too slow); |
| 110 | does a lousy job if editing affects lines below |
| 111 | |
| 112 | - PTUI's shell is worse: |
| 113 | no coloring; |
| 114 | no editing of multi-line commands; |
| 115 | ^P seems to permanently remove some text from the buffer |
| 116 | |
| 117 | - PTUI's undo is worse: |
| 118 | no redo; |
| 119 | one char at a time |
| 120 | |
| 121 | - PTUI's GUI is a tad ugly: |
| 122 | I don't like the multiple buffers in one window model; |
| 123 | I don't like the big buttons at the top of the widow |
| 124 | |
| 125 | - PTUI lacks an integrated debugger |
| 126 | |
Guido van Rossum | 21ad59f | 1999-04-08 20:28:42 +0000 | [diff] [blame] | 127 | - PTUI lacks path and class browsers |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 128 | |
| 129 | - PTUI lacks many of IDLE's features: |
| 130 | - expand word |
| 131 | - regular expression search |
| 132 | - search files (grep) |
Guido van Rossum | c66e860 | 1999-01-11 14:52:40 +0000 | [diff] [blame] | 133 | - (un)tabify |
| 134 | - center |
| 135 | - zoom height |
Guido van Rossum | 6ba219e | 1999-01-07 00:10:00 +0000 | [diff] [blame] | 136 | |
| 137 | ====================================================================== |
| 138 | |
| 139 | Notes after trying to run Grail |
| 140 | ------------------------------- |
| 141 | |
| 142 | - Grail does stuff to sys.path based on sys.argv[0]; you must set |
| 143 | sys.argv[0] to something decent first (it is normally set to the path of |
| 144 | the idle script). |
| 145 | |
| 146 | - Grail must be exec'ed in __main__ because that's imported by some |
| 147 | other parts of Grail. |
| 148 | |
| 149 | - Grail uses a module called History and so does idle :-( |
| 150 | |
| 151 | ====================================================================== |