cpython/Tools/idle
Guido van Rossum 6e0a413693 New approach, separate tables for menus (platform-independent) and key
definitions (platform-specific), and generating accelerator strings
automatically from the key definitions.
1998-11-27 03:17:49 +00:00
..
AutoExpand.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
AutoIndent.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
Bindings.py New approach, separate tables for menus (platform-independent) and key 1998-11-27 03:17:49 +00:00
ClassBrowser.py Generalized the scrolled list which is the base for the class and 1998-10-15 23:27:08 +00:00
ColorDelegator.py Raise priority of 'sel' tag so its foreground (on Windows) will take 1998-10-19 02:22:41 +00:00
Debugger.py Use of Breakpoint class should be bdb.Breakpoint. 1998-10-24 01:28:22 +00:00
Delegator.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
EditorWindow.py Get rid of conflicting ^X binding. Use ^W. 1998-10-16 20:08:34 +00:00
FileList.py Add class browser functionality. 1998-10-13 16:32:44 +00:00
FrameViewer.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
HelpWindow.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
History.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
IOBinding.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
IdleHistory.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
Outline.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
Percolator.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
PopupMenu.py Disable "Open stack viewer" and "help" commands. 1998-10-19 02:20:30 +00:00
PyShell.py Change our special entries from <console#N> to <pyshell#N>. 1998-10-19 02:26:16 +00:00
README Clarify portability and main program. 1998-11-16 18:37:42 +00:00
ScrolledList.py Add close() method 1998-10-16 16:10:09 +00:00
SearchBinding.py Speed up the search a bit -- don't drag a mark around... 1998-10-19 03:33:40 +00:00
StackViewer.py Add optional 'force' argument (default 0) to load_dict(). 1998-10-19 02:19:30 +00:00
UndoDelegator.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
WidgetRedirector.py Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
help.txt Added history and completion commands. 1998-10-13 17:38:03 +00:00
idle Add Unix main script and test program. 1998-10-10 18:58:15 +00:00
idle.pyw Initial checking of Tk-based Python IDE. 1998-10-10 18:48:31 +00:00
tabnanny.py Print serious errors to stderr instead of stdout. 1998-09-14 16:22:21 +00:00
test.py Cosmetic change 1998-10-15 14:08:20 +00:00
turtle.py root is now a global called _root 1998-10-26 18:49:00 +00:00

README

IDLE 0.1 - 10/16/98
-------------------

This is a *very* early preliminary release of IDLE, my own attempt at
a Tkinter-based IDE for Python.  It currently has the following
features:

- multi-window text editor with multiple undo and Python colorizing
- Python shell (a.k.a. interactive interpreter) window subclass
- debugger
- 100% pure Python
- works on Windows and Unix (should work on Mac too)

The main program is in the file "idle"; on Windows you can use
idle.pyw to avoid popping up a DOS console.  Any arguments passed are
interpreted as files that will be opened for editing.

IDLE requires Python 1.5.2, so it is currently only usable for PSA
members who have the latest 1.5.2 alpha release (a public beta release
is due shortly).

Please send feedback to the Python newsgroup, comp.lang.python.

--Guido van Rossum (home page: http://www.python.org/~guido/)

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

TO DO:

- "Recent documents" menu item
- use platform specific default bindings
- title and Windows menu should have base filename first
- restructure state sensitive code to avoid testing flags all the time
- integrated debugger
- object browser instead of current stack viewer
- save some user state (e.g. window and cursor positions, bindings)
- make backups when saving
- check file mtimes at various points
- interface with RCS/CVS/Perforce ???
- more search options: case [in]sensitive, fwd/back, string/regex
- global query replace
- incremental search
- more emacsisms:
  - reindent, reformat text etc.
  - M-[, M-] to move by paragraphs
  - smart stuff with whitespace around Return
  - filter region?
  - grep?
- status bar?
- better help?

Details:

- when there's a selection, left/right arrow should go to either
  end of the selection
- ^O should honor autoindent

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
- class browser could become an outline?

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

Comparison to PTUI
------------------

- 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 framework is better:
  status line
  (not sure if I like the toolbar)

- PTUI's GUI is a tad ugly:
  I don't like the multiple buffers in one window model

- PTUI's help is better (HTML!)

- PTUI's search/replace is better (more features)

- PTUI's auto indent is better
  (understands that "if a: # blah, blah" opens a block)

- PTUI's key bindings are a bit weird (DEL to dedent a line!?!?!?)

- PTUI's fontify is faster but synchronous (and still too slow);
  also doesn't do as good a job if editing affects lines far below

- PTUI has more bells and whistles:
  open multiple
  append
  zap tabs
  fontify (you could argue it's not needed in my code)
  comment/uncomment
  modularize
  examine
  go

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

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

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