0
0
mirror of https://github.com/python/cpython.git synced 2024-11-25 01:20:47 +01:00
cpython/Tools/idle
Guido van Rossum 504b0bf066 Checking in IDLE 0.2.
Much has changed -- too much, in fact, to write down.
The big news is that there's a standard way to write IDLE extensions;
see extend.txt.  Some sample extensions have been provided, and
some existing code has been converted to extensions.  Probably the
biggest new user feature is a new search dialog with more options,
search and replace, and even search in files (grep).

This is exactly as downloaded from my laptop after returning
from the holidays -- it hasn't even been tested on Unix yet.
1999-01-02 21:28:54 +00:00
..
AutoExpand.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
AutoIndent.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
Bindings.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
ClassBrowser.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
ColorDelegator.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
Debugger.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
Delegator.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
EditorWindow.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
eventparse.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
extend.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
extend.txt Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
FileList.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
FrameViewer.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
GrepDialog.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
help.txt Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
History.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
idle
idle.bat Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
idle.pyw Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
IdleHistory.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
idlever.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
IOBinding.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
keydefs.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
Outline.py
OutputWindow.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
Percolator.py
PyShell.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
README.txt Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
ReplaceDialog.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
ScriptBinding.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
ScrolledList.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
SearchBinding.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
SearchDialog.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
SearchDialogBase.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
SearchEngine.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
StackViewer.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
tabnanny.py
test.py
UndoDelegator.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
WidgetRedirector.py
WindowList.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00
ZoomHeight.py Checking in IDLE 0.2. 1999-01-02 21:28:54 +00:00

IDLE 0.2 - 01/01/99
-------------------

This is a *very* early preliminary release of IDLE, my own attempt at
a Tkinter-based IDE for Python.  It 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 (probably works 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 with the
Python 1.5.2 beta distribution (luckily, IDLE is bundled with Python
1.5.2).

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

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

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

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

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

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

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