1998-11-16 18:34:26 +00:00
|
|
|
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
|
|
|
|
|
|
|
|
It 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/)
|
|
|
|
|
|
|
|
======================================================================
|
|
|
|
|
1998-10-10 18:48:31 +00:00
|
|
|
TO DO:
|
|
|
|
|
1998-10-16 20:08:34 +00:00
|
|
|
- "Recent documents" menu item
|
1998-10-13 23:49:55 +00:00
|
|
|
- use platform specific default bindings
|
|
|
|
- title and Windows menu should have base filename first
|
1998-10-10 18:48:31 +00:00
|
|
|
- restructure state sensitive code to avoid testing flags all the time
|
|
|
|
- integrated debugger
|
1998-10-13 23:49:55 +00:00
|
|
|
- object browser instead of current stack viewer
|
1998-10-10 18:48:31 +00:00
|
|
|
- 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
|
1998-10-13 23:49:55 +00:00
|
|
|
- filter region?
|
|
|
|
- grep?
|
1998-10-10 18:48:31 +00:00
|
|
|
- status bar?
|
|
|
|
- better help?
|
|
|
|
|
|
|
|
Details:
|
|
|
|
|
|
|
|
- when there's a selection, left/right arrow should go to either
|
|
|
|
end of the selection
|
1998-10-13 23:49:55 +00:00
|
|
|
- ^O should honor autoindent
|
1998-10-10 18:48:31 +00:00
|
|
|
|
|
|
|
Structural problems:
|
|
|
|
|
|
|
|
- too much knowledge in FileList about EditorWindow (for example)
|
1998-10-13 23:49:55 +00:00
|
|
|
- Several occurrences of scrollable listbox with title and certain
|
|
|
|
behavior; should create base class to generalize this
|
|
|
|
- class browser could become an outline?
|
1998-10-10 18:48:31 +00:00
|
|
|
|
|
|
|
======================================================================
|
|
|
|
|
|
|
|
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
|
1998-11-16 18:34:26 +00:00
|
|
|
|
|
|
|
======================================================================
|
|
|
|
|
|
|
|
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 :-(
|
|
|
|
|
|
|
|
======================================================================
|