0
0
mirror of https://github.com/python/cpython.git synced 2024-11-24 17:47:13 +01:00
cpython/Tools/idle
1998-12-18 15:52:54 +00:00
..
AutoExpand.py
AutoIndent.py
Bindings.py
ClassBrowser.py Fix the class browser to work even when the file is not on sys.path. 1998-12-18 15:52:54 +00:00
ColorDelegator.py
Debugger.py
Delegator.py
EditorWindow.py
FileList.py Fix the class browser to work even when the file is not on sys.path. 1998-12-18 15:52:54 +00:00
FrameViewer.py
help.txt
HelpWindow.py
History.py
idle
idle.pyw
IdleHistory.py
IOBinding.py
Outline.py
Percolator.py
PopupMenu.py
PyShell.py
README
ScrolledList.py
SearchBinding.py
StackViewer.py
tabnanny.py
test.py
UndoDelegator.py
WidgetRedirector.py

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

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