From 6ba219e9755c0cfb2e6716cd68f3162bcbdc3019 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 7 Jan 1999 00:10:00 +0000 Subject: Separating TODO from README. --- Tools/idle/TODO.txt | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 Tools/idle/TODO.txt diff --git a/Tools/idle/TODO.txt b/Tools/idle/TODO.txt new file mode 100644 index 0000000..9bf8fbf --- /dev/null +++ b/Tools/idle/TODO.txt @@ -0,0 +1,132 @@ + +TO DO: + +- "GO" command +- "Modularize" command +- command expansion from keywords, module contents, other buffers, etc. +- "Recent documents" menu item +- more emacsisms: + - parentheses matching + - reindent, reformat text etc. + - M-[, M-] to move by paragraphs + - smart stuff with whitespace around Return + - filter region? + - incremental search? + - ^K should cut to buffer + - command to fill text paragraphs +- restructure state sensitive code to avoid testing flags all the time +- finish debugger +- object browser instead of current stack viewer +- 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 + +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?) + +Structural problems: + +- too much knowledge in FileList about EditorWindow (for example) +- Several occurrences of scrollable listbox with title and certain + behavior; should create base class to generalize this + +====================================================================== + +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's auto indent is better + (understands that "if a: # blah, blah" opens a block) + ++ IDLE requires 4x backspace to dedent a line + ++ PTUI has more bells and whistles: + open multiple + append + modularize + examine + go + +? 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 a class browser + +- PTUI lacks many of IDLE's features: + - expand word + - regular expression search + - search files (grep) + +====================================================================== + +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 :-( + +====================================================================== -- cgit v0.12