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