Thu Apr 22 23:20:17 1999 Guido van Rossum * help.txt: Bunch of updates necessary due to recent changes; added docs for File menu, command line and color preferences. * Bindings.py: Remove obsolete 'script' menu. * TODO.txt: Several wishes fulfilled. * OutputWindow.py: Moved classes OnDemandOutputWindow and PseudoFile here, from ScriptBinding.py where they are no longer needed. * ScriptBinding.py: Mostly rewritten. Instead of the old Run module and Debug module, there are two new commands: Import module (F5) imports or reloads the module and also adds its name to the __main__ namespace. This gets executed in the PyShell window under control of its debug settings. Run script (Control-F5) is similar but executes the contents of the file directly in the __main__ namespace. * PyShell.py: Nits: document use of $IDLESTARTUP; display idle version * idlever.py: New version to celebrate new command line * OutputWindow.py: Added flush(), for completeness. * PyShell.py: A lot of changes to make the command line more useful. You can now do: idle.py -e file ... -- to edit files idle.py script arg ... -- to run a script idle.py -c cmd arg ... -- to run a command Other options, see also the usage message (also new!) for more details: -d -- enable debugger -s -- run $IDLESTARTUP or $PYTHONSTARTUP -t title -- set Python Shell window's title sys.argv is set accordingly, unless -e is used. sys.path is absolutized, and all relevant paths are inserted into it. Other changes: - the environment in which commands are executed is now the __main__ module - explicitly save sys.stdout etc., don't restore from sys.__stdout__ - new interpreter methods execsource(), execfile(), stuffsource() - a few small nits * TODO.txt: Some more TODO items. Made up my mind about command line args, Run/Import, __main__. * ColorDelegator.py: Super-elegant patch by Tim Peters that speeds up colorization dramatically (up to 15 times he claims). Works by reading more than one line at a time, up to 100-line chunks (starting with one line and then doubling up to the limit). On a typical machine (e.g. Tim's P5-166) this doesn't reduce interactive responsiveness in a noticeable way. Wed Apr 21 15:49:34 1999 Guido van Rossum * ColorDelegator.py: Patch by Tim Peters to speed up colorizing of big multiline strings. Tue Apr 20 17:32:52 1999 Guido van Rossum * extend.txt: For an event 'foo-bar', the corresponding method must be called foo_bar_event(). Therefore, fix the references to zoom_height() in the example. * IdlePrefs.py: Restored the original IDLE color scheme. * PyShell.py, IdlePrefs.py, ColorDelegator.py, EditorWindow.py: Color preferences code by Loren Luke (massaged by me somewhat) * SearchEngine.py: Patch by Mark Favas: it fixes the search engine behaviour where an unsuccessful search wraps around and re-searches that part of the file between the start of the search and the end of the file - only really an issue for very large files, but... (also removes a redundant m.span() call). Mon Apr 19 16:26:02 1999 Guido van Rossum * TODO.txt: A few wishes are now fulfilled. * AutoIndent.py: Tim Peters implements some of my wishes: o Makes the tab key intelligently insert spaces when appropriate (see Help list banter twixt David Ascher and me; idea stolen from every other editor on earth ). o newline_and_indent_event trims trailing whitespace on the old line (pymode and Codewright). o newline_and_indent_event no longer fooled by trailing whitespace or comment after ":" (pymode, PTUI). o newline_and_indent_event now reduces the new line's indentation after return, break, continue, raise and pass stmts (pymode). The last two are easy to fool in the presence of strings & continuations, but pymode requires Emacs's high-powered C parsing functions to avoid that in finite time. ====================================================================== Python release 1.5.2c1, IDLE version 0.4 ====================================================================== Wed Apr 7 18:41:59 1999 Guido van Rossum * README.txt, NEWS.txt: New version. * idlever.py: Version bump awaiting impending new release. (Not much has changed :-( ) Mon Mar 29 14:52:28 1999 Guido van Rossum * ScriptBinding.py, PyShell.py: At Tim Peters' recommendation, add a dummy flush() method to PseudoFile. Thu Mar 11 23:21:23 1999 Guido van Rossum * PathBrowser.py: Don't crash when sys.path contains an empty string. * Attic/Outline.py: This file was never supposed to be part of IDLE. * PathBrowser.py: - Don't crash in the case where a superclass is a string instead of a pyclbr.Class object; this can happen when the superclass is unrecognizable (to pyclbr), e.g. when module renaming is used. - Show a watch cursor when calling pyclbr (since it may take a while recursively parsing imported modules!). Wed Mar 10 05:18:02 1999 Guido van Rossum * EditorWindow.py, Bindings.py: Add PathBrowser to File module * PathBrowser.py: "Path browser" - 4 scrolled lists displaying: directories on sys.path modules in selected directory classes in selected module methods of selected class Sinlge clicking in a directory, module or class item updates the next column with info about the selected item. Double clicking in a module, class or method item opens the file (and selects the clicked item if it is a class or method). I guess eventually I should be using a tree widget for this, but the ones I've seen don't work well enough, so for now I use the old Smalltalk or NeXT style multi-column hierarchical browser. * MultiScrolledLists.py: New utility: multiple scrolled lists in parallel * ScrolledList.py: - White background. - Display "(None)" (or text of your choosing) when empty. - Don't set the focus. ====================================================================== Python release 1.5.2b2, IDLE version 0.3 ====================================================================== Wed Feb 17 22:47:41 1999 Guido van Rossum * NEWS.txt: News in 0.3. * README.txt, idlever.py: Bump version to 0.3. * EditorWindow.py: After all, we don't need to call the callbacks ourselves! * WindowList.py: When deleting, call the callbacks *after* deleting the window from our list! * EditorWindow.py: Fix up the Windows menu via the new callback mechanism instead of depending on menu post commands (which don't work when the menu is torn off). * WindowList.py: Support callbacks to patch up Windows menus everywhere. * ChangeLog: Oh, why not. Checking in the Emacs-generated change log. Tue Feb 16 22:34:17 1999 Guido van Rossum * ScriptBinding.py: Only pop up the stack viewer when requested in the Debug menu. Mon Feb 8 22:27:49 1999 Guido van Rossum * WindowList.py: Don't crash if a window no longer exists. * TODO.txt: Restructured a bit. Mon Feb 1 23:06:17 1999 Guido van Rossum * PyShell.py: Add current dir or paths of file args to sys.path. * Debugger.py: Add canonic() function -- for brand new bdb.py feature. * StackViewer.py: Protect against accessing an empty stack. Fri Jan 29 20:44:45 1999 Guido van Rossum * ZoomHeight.py: Use only the height to decide whether to zoom in or out. Thu Jan 28 22:24:30 1999 Guido van Rossum * EditorWindow.py, FileList.py: Make sure the Tcl variables are shared between windows. * PyShell.py, EditorWindow.py, Bindings.py: Move menu/key binding code from Bindings.py to EditorWindow.py, with changed APIs -- it makes much more sense there. Also add a new feature: if the first character of a menu label is a '!', it gets a checkbox. Checkboxes are bound to Boolean Tcl variables that can be accessed through the new getvar/setvar/getrawvar API; the variable is named after the event to which the menu is bound. * Debugger.py: Add Quit button to the debugger window. * SearchDialog.py: When find_again() finds exactly the current selection, it's a failure. * idle.py, Attic/idle: Rename idle -> idle.py Mon Jan 18 15:18:57 1999 Guido van Rossum * EditorWindow.py, WindowList.py: Only deiconify when iconic. * TODO.txt: Misc Tue Jan 12 22:14:34 1999 Guido van Rossum * testcode.py, Attic/test.py: Renamed test.py to testcode.py so one can import Python's test package from inside IDLE. (Suggested by Jack Jansen.) * EditorWindow.py, ColorDelegator.py: Hack to close a window that is colorizing. * Separator.py: Vladimir Marangozov's patch: The separator dances too much and seems to jump by arbitrary amounts in arbitrary directions when I try to move it for resizing the frames. This patch makes it more quiet. Mon Jan 11 14:52:40 1999 Guido van Rossum * TODO.txt: Some requests have been fulfilled. * EditorWindow.py: Set the cursor to a watch when opening the class browser (which may take quite a while, browsing multiple files). Newer, better center() -- but assumes no wrapping. * SearchBinding.py: Got rid of debug print statement in goto_line_event(). * ScriptBinding.py: I think I like it better if it prints the traceback even when it displays the stack viewer. * Debugger.py: Bind ESC to close-window. * ClassBrowser.py: Use a HSeparator between the classes and the items. Make the list of classes wider by default (40 chars). Bind ESC to close-window. * Separator.py: Separator classes (draggable divider between two panes). Sat Jan 9 22:01:33 1999 Guido van Rossum * WindowList.py: Don't traceback when wakeup() is called when the window has been destroyed. This can happen when a torn-of Windows menu references closed windows. And Tim Peters claims that the Windows menu is his favorite to tear off... * EditorWindow.py: Allow tearing off of the Windows menu. * StackViewer.py: Close on ESC. * help.txt: Updated a bunch of things (it was mostly still 0.1!) * extend.py: Added ScriptBinding to standard bindings. * ScriptBinding.py: This now actually works. See doc string. It can run a module (i.e. import or reload) or debug it (same with debugger control). Output goes to a fresh output window, only created when needed. ====================================================================== Python release 1.5.2b1, IDLE version 0.2 ====================================================================== Fri Jan 8 17:26:02 1999 Guido van Rossum * README.txt, NEWS.txt: What's new in this release. * Bindings.py, PyShell.py: Paul Prescod's patches to allow the stack viewer to pop up when a traceback is printed. Thu Jan 7 00:12:15 1999 Guido van Rossum * FormatParagraph.py: Change paragraph width limit to 70 (like Emacs M-Q). * README.txt: Separating TODO from README. Slight reformulation of features. No exact release date. * TODO.txt: Separating TODO from README. Mon Jan 4 21:19:09 1999 Guido van Rossum * FormatParagraph.py: Hm. There was a boundary condition error at the end of the file too. * SearchBinding.py: Hm. Add Unix binding for replace, too. * keydefs.py: Ran eventparse.py again. * FormatParagraph.py: Added Unix Meta-q key binding; fix find_paragraph when at start of file. * AutoExpand.py: Added Meta-/ binding for Unix as alt for Alt-/. * SearchBinding.py: Add unix binding for grep (otherwise the menu entry doesn't work!) * ZoomHeight.py: Adjusted Unix height to work with fvwm96. :=( * GrepDialog.py: Need to import sys! * help.txt, extend.txt, README.txt: Formatted some paragraphs * extend.py, FormatParagraph.py: Add new extension to reformat a (text) paragraph. * ZoomHeight.py: Typo in Win specific height setting. Sun Jan 3 00:47:35 1999 Guido van Rossum * AutoIndent.py: Added something like Tim Peters' backspace patch. * ZoomHeight.py: Adapted to Unix (i.e., more hardcoded constants). Sat Jan 2 21:28:54 1999 Guido van Rossum * keydefs.py, idlever.py, idle.pyw, idle.bat, help.txt, extend.txt, extend.py, eventparse.py, ZoomHeight.py, WindowList.py, UndoDelegator.py, StackViewer.py, SearchEngine.py, SearchDialogBase.py, SearchDialog.py, ScrolledList.py, SearchBinding.py, ScriptBinding.py, ReplaceDialog.py, Attic/README, README.txt, PyShell.py, Attic/PopupMenu.py, OutputWindow.py, IOBinding.py, Attic/HelpWindow.py, History.py, GrepDialog.py, FileList.py, FrameViewer.py, EditorWindow.py, Debugger.py, Delegator.py, ColorDelegator.py, Bindings.py, ClassBrowser.py, AutoExpand.py, AutoIndent.py: 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. Fri Dec 18 15:52:54 1998 Guido van Rossum * FileList.py, ClassBrowser.py: Fix the class browser to work even when the file is not on sys.path. Tue Dec 8 20:39:36 1998 Guido van Rossum * Attic/turtle.py: Moved to Python 1.5.2/Lib Fri Nov 27 03:19:20 1998 Guido van Rossum * help.txt: Typo * EditorWindow.py, FileList.py: Support underlining of menu labels * Bindings.py: New approach, separate tables for menus (platform-independent) and key definitions (platform-specific), and generating accelerator strings automatically from the key definitions. Mon Nov 16 18:37:42 1998 Guido van Rossum * Attic/README: Clarify portability and main program. * Attic/README: Added intro for 0.1 release and append Grail notes. Mon Oct 26 18:49:00 1998 Guido van Rossum * Attic/turtle.py: root is now a global called _root Sat Oct 24 16:38:38 1998 Guido van Rossum * Attic/turtle.py: Raise the root window on reset(). Different action on WM_DELETE_WINDOW is more likely to do the right thing, allowing us to destroy old windows. * Attic/turtle.py: Split the goto() function in two: _goto() is the internal one, using Canvas coordinates, and goto() uses turtle coordinates and accepts variable argument lists. * Attic/turtle.py: Cope with destruction of the window * Attic/turtle.py: Turtle graphics * Debugger.py: Use of Breakpoint class should be bdb.Breakpoint. Mon Oct 19 03:33:40 1998 Guido van Rossum * SearchBinding.py: Speed up the search a bit -- don't drag a mark around... * PyShell.py: Change our special entries from to . Patch linecache.checkcache() to keep our special entries alive. Add popup menu to all editor windows to set a breakpoint. * Debugger.py: Use and pass through the 'force' flag to set_dict() where appropriate. Default source and globals checkboxes to false. Don't interact in user_return(). Add primitive set_breakpoint() method. * ColorDelegator.py: Raise priority of 'sel' tag so its foreground (on Windows) will take priority over text colorization (which on Windows is almost the same color as the selection background). Define a tag and color for breakpoints ("BREAK"). * Attic/PopupMenu.py: Disable "Open stack viewer" and "help" commands. * StackViewer.py: Add optional 'force' argument (default 0) to load_dict(). If set, redo the display even if it's the same dict. Fri Oct 16 21:10:12 1998 Guido van Rossum * StackViewer.py: Do nothing when loading the same dict as before. * PyShell.py: Details for debugger interface. * Debugger.py: Restructured and more consistent. Save checkboxes across instantiations. * EditorWindow.py, Attic/README, Bindings.py: Get rid of conflicting ^X binding. Use ^W. * Debugger.py, StackViewer.py: Debugger can now show local and global variables. * Debugger.py: Oops * Debugger.py, PyShell.py: Better debugger support (show stack etc). * Attic/PopupMenu.py: Follow renames in StackViewer module * StackViewer.py: Rename classes to StackViewer (the widget) and StackBrowser (the toplevel). * ScrolledList.py: Add close() method * EditorWindow.py: Clarify 'Open Module' dialog text * StackViewer.py: Restructured into a browser and a widget. Thu Oct 15 23:27:08 1998 Guido van Rossum * ClassBrowser.py, ScrolledList.py: Generalized the scrolled list which is the base for the class and method browser into a separate class in its own module. * Attic/test.py: Cosmetic change * Debugger.py: Don't show function name if there is none Wed Oct 14 03:43:05 1998 Guido van Rossum * Debugger.py, PyShell.py: Polish the Debugger GUI a bit. Closing it now also does the right thing. Tue Oct 13 23:51:13 1998 Guido van Rossum * Debugger.py, PyShell.py, Bindings.py: Ad primitive debugger interface (so far it will step and show you the source, but it doesn't yet show the stack). * Attic/README: Misc * StackViewer.py: Whoops -- referenced self.top before it was set. * help.txt: Added history and completion commands. * help.txt: Updated * FileList.py: Add class browser functionality. * StackViewer.py: Add a close() method and bind to WM_DELETE_WINDOW protocol * PyShell.py: Clear the linecache before printing a traceback * Bindings.py: Added class browser binding. * ClassBrowser.py: Much improved, much left to do. * PyShell.py: Make the return key do what I mean more often. * ClassBrowser.py: Adding the beginnings of a Class browser. Incomplete, yet. * EditorWindow.py, Bindings.py: Add new command, "Open module". You select or type a module name, and it opens the source. Mon Oct 12 23:59:27 1998 Guido van Rossum * PyShell.py: Subsume functionality from Popup menu in Debug menu. Other stuff so the PyShell window can be resurrected from the Windows menu. * FileList.py: Get rid of PopUp menu. Create a simple Windows menu. (Imperfect when Untitled windows exist.) Add wakeup() method: deiconify, raise, focus. * EditorWindow.py: Generalize menu creation. * Bindings.py: Add Debug and Help menu items. * EditorWindow.py: Added a menu bar to every window. * Bindings.py: Add menu configuration to the event configuration. * Attic/PopupMenu.py: Pass a root to the help window. * SearchBinding.py: Add parent argument to 'to to line number' dialog box. Sat Oct 10 19:15:32 1998 Guido van Rossum * StackViewer.py: Add a label at the top showing (very basic) help for the stack viewer. Add a label at the bottom showing the exception info. * Attic/test.py, Attic/idle: Add Unix main script and test program. * idle.pyw, help.txt, WidgetRedirector.py, UndoDelegator.py, StackViewer.py, SearchBinding.py, Attic/README, PyShell.py, Attic/PopupMenu.py, Percolator.py, Outline.py, IOBinding.py, History.py, Attic/HelpWindow.py, FrameViewer.py, FileList.py, EditorWindow.py, Delegator.py, ColorDelegator.py, Bindings.py, AutoIndent.py, AutoExpand.py: Initial checking of Tk-based Python IDE. Features: text editor with syntax coloring and undo; subclassed into interactive Python shell which adds history.