123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- Original IDLE todo, much of it now outdated:
- ============================================
- TO DO:
- - improve debugger:
- - manage breakpoints globally, allow bp deletion, tbreak, cbreak etc.
- - real object browser
- - help on how to use it (a simple help button will do wonders)
- - performance? (updates of large sets of locals are slow)
- - better integration of "debug module"
- - debugger should be global resource (attached to flist, not to shell)
- - fix the stupid bug where you need to step twice
- - display class name in stack viewer entries for methods
- - suppress tracing through IDLE internals (e.g. print) DONE
- - add a button to suppress through a specific module or class or method
- - more object inspection to stack viewer, e.g. to view all array items
- - insert the initial current directory into sys.path DONE
- - default directory attribute for each window instead of only for windows
- that have an associated filename
- - command expansion from keywords, module contents, other buffers, etc.
- - "Recent documents" menu item DONE
- - Filter region command
- - Optional horizontal scroll bar
- - more Emacsisms:
- - ^K should cut to buffer
- - M-[, M-] to move by paragraphs
- - incremental search?
- - search should indicate wrap-around in some way
- - restructure state sensitive code to avoid testing flags all the time
- - persistent user state (e.g. window and cursor positions, bindings)
- - make backups when saving
- - check file mtimes at various points
- - Pluggable interface with RCS/CVS/Perforce/Clearcase
- - better help?
- - don't open second class browser on same module (nor second path browser)
- - unify class and path browsers
- - Need to define a standard way whereby one can determine one is running
- inside IDLE (needed for Tk mainloop, also handy for $PYTHONSTARTUP)
- - Add more utility methods for use by extensions (a la get_selection)
- - Way to run command in totally separate interpreter (fork+os.system?) DONE
- - Way to find definition of fully-qualified name:
- In other words, select "UserDict.UserDict", hit some magic key and
- it loads up UserDict.py and finds the first def or class for UserDict.
- - need a way to force colorization on/off
- - need a way to force auto-indent on/off
- Details:
- - ^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?)
- - new autoindent after colon even indents when the colon is in a comment!
- - sometimes forward slashes in pathname remain
- - sometimes star in window name remains in Windows menu
- - With unix bindings, ESC by itself is ignored
- - Sometimes for no apparent reason a selection from the cursor to the
- end of the command buffer appears, which is hard to get rid of
- because it stays when you are typing!
- - The Line/Col in the status bar can be wrong initially in PyShell DONE
- Structural problems:
- - too much knowledge in FileList about EditorWindow (for example)
- - should add some primitives for accessing the selection etc.
- to repeat cumbersome code over and over
- ======================================================================
- Jeff Bauer suggests:
- - 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, DONE
- 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's help is better (HTML!)
- + PTUI can attach a shell to any module
- + PTUI has some more I/O commands:
- open multiple
- append
- examine (what's that?)
- ======================================================================
- 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 :-(
- ======================================================================
- Robin Friedrich's items:
- Things I'd like to see:
- - I'd like support for shift-click extending the selection. There's a
- bug now that it doesn't work the first time you try it.
- - Printing is needed. How hard can that be on Windows? FIRST CUT DONE
- - The python-mode trick of autoindenting a line with <tab> is neat and
- very handy.
- - (someday) a spellchecker for docstrings and comments.
- - a pagedown/up command key which moves to next class/def statement (top
- level)
- - split window capability
- - DnD text relocation/copying
- Things I don't want to see.
- - line numbers... will probably slow things down way too much.
- - Please use another icon for the tree browser leaf. The small snake
- isn't cutting it.
- ----------------------------------------------------------------------
- - Customizable views (multi-window or multi-pane). (Markus Gritsch)
- - Being able to double click (maybe double right click) on a callable
- object in the editor which shows the source of the object, if
- possible. (Gerrit Holl)
- - Hooks into the guts, like in Emacs. (Mike Romberg)
- - Sharing the editor with a remote tutor. (Martijn Faassen)
- - Multiple views on the same file. (Tony J Ibbs)
- - Store breakpoints in a global (per-project) database (GvR); Dirk
- Heise adds: save some space-trimmed context and search around when
- reopening a file that might have been edited by someone else.
- - Capture menu events in extensions without changing the IDLE source.
- (Matthias Barmeier)
- - Use overlapping panels (a "notebook" in MFC terms I think) for info
- that doesn't need to be accessible simultaneously (e.g. HTML source
- and output). Use multi-pane windows for info that does need to be
- shown together (e.g. class browser and source). (Albert Brandl)
- - A project should invisibly track all symbols, for instant search,
- replace and cross-ref. Projects should be allowed to span multiple
- directories, hosts, etc. Project management files are placed in a
- directory you specify. A global mapping between project names and
- project directories should exist [not so sure --GvR]. (Tim Peters)
- - Merge attr-tips and auto-expand. (Mark Hammond, Tim Peters)
- - Python Shell should behave more like a "shell window" as users know
- it -- i.e. you can only edit the current command, and the cursor can't
- escape from the command area. (Albert Brandl)
- - Set X11 class to "idle/Idle", set icon and title to something
- beginning with "idle" -- for window manangers. (Randall Hopper)
- - Config files editable through a preferences dialog. (me) DONE
- - Config files still editable outside the preferences dialog.
- (Randall Hopper) DONE
- - When you're editing a command in PyShell, and there are only blank
- lines below the cursor, hitting Return should ignore or delete those
- blank lines rather than deciding you're not on the last line. (me)
- - Run command (F5 c.s.) should be more like Pythonwin's Run -- a
- dialog with options to give command line arguments, run the debugger,
- etc. (me)
- - Shouldn't be able to delete part of the prompt (or any text before
- it) in the PyShell. (Martijn Faassen) DONE
- - Emacs style auto-fill (also smart about comments and strings).
- (Jeremy Hylton)
- - Output of Run Script should go to a separate output window, not to
- the shell window. Output of separate runs should all go to the same
- window but clearly delimited. (David Scherer) REJECT FIRST, LATTER DONE
- - GUI form designer to kick VB's butt. (Robert Geiger) THAT'S NOT IDLE
- - Printing! Possibly via generation of PDF files which the user must
- then send to the printer separately. (Dinu Gherman) FIRST CUT
|