
TO DO:

- improve debugger:
    - manage breakpoints globally, allow bp deletion, tbreak, cbreak etc.
    - real object browser
    - slidable panel separators
    - 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"
- insert the initial current directory into sys.path
- default directory attribute for each window instead of only for windows
  that have an associated filename
- "GO" command
- command expansion from keywords, module contents, other buffers, etc.
- "Recent documents" menu item
- more emacsisms:
    - parentheses matching
    - M-[, M-] to move by paragraphs
    - smart stuff with whitespace around Return
    - filter region?
    - incremental search?
    - ^K should cut to buffer
- 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
- 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)

+ PTUI has more bells and whistles:
  open multiple
  append
  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)
  - (un)tabify
  - center
  - zoom height

======================================================================

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 :-(

======================================================================
