blob: e60e2f32968756d594ed3e413b6befcd69b7c7e1 [file] [log] [blame]
Steven M. Gava4d712a42001-07-19 04:49:13 +00001original IDLE ChangeLog:
2========================
3
David Scherer7aced172000-08-15 01:13:23 +00004Tue Feb 15 18:08:19 2000 Guido van Rossum <guido@cnri.reston.va.us>
5
6 * NEWS.txt: Notice status bar and stack viewer.
7
8 * EditorWindow.py: Support for Moshe's status bar.
9
10 * MultiStatusBar.py: Status bar code -- by Moshe Zadka.
11
12 * OldStackViewer.py:
13 Adding the old stack viewer implementation back, for the debugger.
14
15 * StackViewer.py: New stack viewer, uses a tree widget.
16 (XXX: the debugger doesn't yet use this.)
17
18 * WindowList.py:
19 Correct a typo and remove an unqualified except that was hiding the error.
20
21 * ClassBrowser.py: Add an XXX comment about the ClassBrowser AIP.
22
23 * ChangeLog: Updated change log.
24
25 * NEWS.txt: News update. Probably incomplete; what else is new?
26
27 * README.txt:
28 Updated for pending IDLE 0.5 release (still very rough -- just getting
29 it out in a more convenient format than CVS).
30
31 * TODO.txt: Tiny addition.
32
33Thu Sep 9 14:16:02 1999 Guido van Rossum <guido@cnri.reston.va.us>
34
35 * TODO.txt: A few new TODO entries.
36
37Thu Aug 26 23:06:22 1999 Guido van Rossum <guido@cnri.reston.va.us>
38
39 * Bindings.py: Add Python Documentation entry to Help menu.
40
41 * EditorWindow.py:
42 Find the help.txt file relative to __file__ or ".", not in sys.path.
43 (Suggested by Moshe Zadka, but implemented differently.)
44
45 Add <<python-docs>> event which, on Unix, brings up Netscape pointing
46 to http://www.python.doc/current/ (a local copy would be nice but its
47 location can't be predicted). Windows solution TBD.
48
49Wed Aug 11 14:55:43 1999 Guido van Rossum <guido@cnri.reston.va.us>
50
51 * TreeWidget.py:
52 Moshe noticed an inconsistency in his comment, so I'm rephrasing it to
53 be clearer.
54
55 * TreeWidget.py:
56 Patch inspired by Moshe Zadka to search for the Icons directory in the
57 same directory as __file__, rather than searching for it along sys.path.
58 This works better when idle is a package.
59
60Thu Jul 15 13:11:02 1999 Guido van Rossum <guido@cnri.reston.va.us>
61
62 * TODO.txt: New wishes.
63
64Sat Jul 10 13:17:35 1999 Guido van Rossum <guido@cnri.reston.va.us>
65
66 * IdlePrefs.py:
67 Make the color for stderr red (i.e. the standard warning/danger/stop
68 color) rather than green. Suggested by Sam Schulenburg.
69
70Fri Jun 25 17:26:34 1999 Guido van Rossum <guido@cnri.reston.va.us>
71
72 * PyShell.py: Close debugger when closing. This may break a cycle.
73
74 * Debugger.py: Break cycle on close.
75
76 * ClassBrowser.py: Destroy the tree when closing.
77
78 * TreeWidget.py: Add destroy() method to recursively destroy a tree.
79
80 * PyShell.py: Extend _close() to break cycles.
81 Break some other cycles too (and destroy the root when done).
82
83 * EditorWindow.py:
84 Add _close() method that does the actual cleanup (close() asks the
85 user what they want first if there's unsaved stuff, and may cancel).
86 It closes more than before.
87
88 Add unload_extensions() method to unload all extensions; called from
89 _close(). It calls an extension's close() method if it has one.
90
91 * Percolator.py: Add close() method that breaks cycles.
92
93 * WidgetRedirector.py: Add unregister() method.
94 Unregister everything at closing.
95 Don't call close() in __del__, rely on explicit call to close().
96
97 * IOBinding.py, FormatParagraph.py, CallTips.py:
98 Add close() method that breaks a cycle.
99
100Fri Jun 11 15:03:00 1999 Guido van Rossum <guido@cnri.reston.va.us>
101
102 * AutoIndent.py, EditorWindow.py, FormatParagraph.py:
103 Tim Peters smart.patch:
104
105 EditorWindow.py:
106
107 + Added get_tabwidth & set_tabwidth "virtual text" methods, that get/set the
108 widget's view of what a tab means.
109
110 + Moved TK_TABWIDTH_DEFAULT here from AutoIndent.
111
112 + Renamed Mark's get_selection_index to get_selection_indices (sorry, Mark,
113 but the name was plain wrong <wink>).
114
115 FormatParagraph.py: renamed use of get_selection_index.
116
117 AutoIndent.py:
118
119 + Moved TK_TABWIDTH_DEFAULT to EditorWindow.
120
121 + Rewrote set_indentation_params to use new VTW get/set_tabwidth methods.
122
123 + Changed smart_backspace_event to delete whitespace back to closest
124 preceding virtual tab stop or real character (note that this may require
125 inserting characters if backspacing over a tab!).
126
127 + Nuked almost references to the selection tag, in favor of using
128 get_selection_indices. The sole exception is in set_region, for which no
129 "set_selection" abstraction has yet been agreed upon.
130
131 + Had too much fun using the spiffy new features of the format-paragraph
132 cmd.
133
134Thu Jun 10 17:48:02 1999 Guido van Rossum <guido@cnri.reston.va.us>
135
136 * FormatParagraph.py:
137 Code by Mark Hammond to format paragraphs embedded in comments.
138 Read the comments (which I reformatted using the new feature :-)
139 for some limitations.
140
141 * EditorWindow.py:
142 Added abstraction get_selection_index() (Mark Hammond). Also
143 reformatted some comment blocks to show off a cool feature I'm about
144 to check in next.
145
146 * ClassBrowser.py:
147 Adapt to the new pyclbr's support of listing top-level functions. If
148 this functionality is not present (e.g. when used with a vintage
149 Python 1.5.2 installation) top-level functions are not listed.
150
151 (Hmm... Any distribution of IDLE 0.5 should probably include a copy
152 of the new pyclbr.py!)
153
154 * AutoIndent.py:
155 Fix off-by-one error in Tim's recent change to comment_region(): the
156 list of lines returned by get_region() contains an empty line at the
157 end representing the start of the next line, and this shouldn't be
158 commented out!
159
160 * CallTips.py:
161 Mark Hammond writes: Here is another change that allows it to work for
162 class creation - tries to locate an __init__ function. Also updated
163 the test code to reflect your new "***" change.
164
165 * CallTipWindow.py:
166 Mark Hammond writes: Tim's suggestion of copying the font for the
167 CallTipWindow from the text control makes sense, and actually makes
168 the control look better IMO.
169
170Wed Jun 9 20:34:57 1999 Guido van Rossum <guido@cnri.reston.va.us>
171
172 * CallTips.py:
173 Append "..." if the appropriate flag (for varargs) in co_flags is set.
174 Ditto "***" for kwargs.
175
176Tue Jun 8 13:06:07 1999 Guido van Rossum <guido@cnri.reston.va.us>
177
178 * ReplaceDialog.py:
179 Hmm... Tim didn't turn "replace all" into a single undo block.
180 I think I like it better if it os, so here.
181
182 * ReplaceDialog.py: Tim Peters: made replacement atomic for undo/redo.
183
184 * AutoIndent.py: Tim Peters:
185
186 + Set usetabs=1. Editing pyclbr.py was driving me nuts <0.6 wink>.
187 usetabs=1 is the Emacs pymode default too, and thanks to indentwidth !=
188 tabwidth magical usetabs disabling, new files are still created with tabs
189 turned off. The only implication is that if you open a file whose first
190 indent is a single tab, IDLE will now magically use tabs for that file (and
191 set indentwidth to 8). Note that the whole scheme doesn't work right for
192 PythonWin, though, since Windows users typically set tabwidth to 4; Mark
193 probably has to hide the IDLE algorithm from them (which he already knows).
194
195 + Changed comment_region_event to stick "##" in front of every line. The
196 "holes" previously left on blank lines were visually confusing (made it
197 needlessly hard to figure out what to uncomment later).
198
199Mon Jun 7 15:38:40 1999 Guido van Rossum <guido@cnri.reston.va.us>
200
201 * TreeWidget.py, ObjectBrowser.py:
202 Remove unnecessary reference to pyclbr from test() code.
203
204 * PyParse.py: Tim Peters:
205
206 Smarter logic for finding a parse synch point.
207
208 Does a half to a fifth the work in normal cases; don't notice the speedup,
209 but makes more breathing room for other extensions.
210
211 Speeds terrible cases by at least a factor of 10. "Terrible" == e.g. you put
212 """ at the start of Tkinter.py, undo it, zoom to the bottom, and start
213 typing in code. Used to take about 8 seconds for ENTER to respond, now some
214 large fraction of a second. The new code gets indented correctly, despite
215 that it all remains "string colored" until the colorizer catches up (after
216 which, ENTER appears instantaneous again).
217
218Fri Jun 4 19:21:19 1999 Guido van Rossum <guido@cnri.reston.va.us>
219
220 * extend.py: Might as well enable CallTips by default.
221 If there are too many complaints I'll remove it again or fix it.
222
223Thu Jun 3 14:32:16 1999 Guido van Rossum <guido@cnri.reston.va.us>
224
225 * AutoIndent.py, EditorWindow.py, PyParse.py:
226 New offerings by Tim Peters; he writes:
227
228 IDLE is now the first Python editor in the Universe not confused by my
229 doctest.py <wink>.
230
231 As threatened, this defines IDLE's is_char_in_string function as a
232 method of EditorWindow. You just need to define one similarly in
233 whatever it is you pass as editwin to AutoIndent; looking at the
234 EditorWindow.py part of the patch should make this clear.
235
236 * GrepDialog.py: Enclose pattern in quotes in status message.
237
238 * CallTips.py:
239 Mark Hammond fixed some comments and improved the way the tip text is
240 constructed.
241
242Wed Jun 2 18:18:57 1999 Guido van Rossum <guido@cnri.reston.va.us>
243
244 * CallTips.py:
245 My fix to Mark's code: restore the universal check on <KeyRelease>.
246 Always cancel on <Key-Escape> or <ButtonPress>.
247
248 * CallTips.py:
249 A version that Mark Hammond posted to the newsgroup. Has some newer
250 stuff for getting the tip. Had to fix the Key-( and Key-) events
251 for Unix. Will have to re-apply my patch for catching KeyRelease and
252 ButtonRelease events.
253
254 * CallTipWindow.py, CallTips.py:
255 Call tips by Mark Hammond (plus tiny fix by me.)
256
257 * IdleHistory.py:
258 Changes by Mark Hammond: (1) support optional output_sep argument to
259 the constructor so he can eliminate the sys.ps2 that PythonWin leaves
260 in the source; (2) remove duplicate history items.
261
262 * AutoIndent.py:
263 Changes by Mark Hammond to allow using IDLE extensions in PythonWin as
264 well: make three dialog routines instance variables.
265
266 * EditorWindow.py:
267 Change by Mark Hammond to allow using IDLE extensions in PythonWin as
268 well: make three dialog routines instance variables.
269
270Tue Jun 1 20:06:44 1999 Guido van Rossum <guido@cnri.reston.va.us>
271
272 * AutoIndent.py: Hah! A fix of my own to Tim's code!
273 Unix bindings for <<toggle-tabs>> and <<change-indentwidth>> were
274 missing, and somehow that meant the events were never generated,
275 even though they were in the menu. The new Unix bindings are now
276 the same as the Windows bindings (M-t and M-u).
277
278 * AutoIndent.py, PyParse.py, PyShell.py: Tim Peters again:
279
280 The new version (attached) is fast enough all the time in every real module
281 I have <whew!>. You can make it slow by, e.g., creating an open list with
282 5,000 90-character identifiers (+ trailing comma) each on its own line, then
283 adding an item to the end -- but that still consumes less than a second on
284 my P5-166. Response time in real code appears instantaneous.
285
286 Fixed some bugs.
287
288 New feature: when hitting ENTER and the cursor is beyond the line's leading
289 indentation, whitespace is removed on both sides of the cursor; before
290 whitespace was removed only on the left; e.g., assuming the cursor is
291 between the comma and the space:
292
293 def something(arg1, arg2):
294 ^ cursor to the left of here, and hit ENTER
295 arg2): # new line used to end up here
296 arg2): # but now lines up the way you expect
297
298 New hack: AutoIndent has grown a context_use_ps1 Boolean config option,
299 defaulting to 0 (false) and set to 1 (only) by PyShell. Reason: handling
300 the fancy stuff requires looking backward for a parsing synch point; ps1
301 lines are the only sensible thing to look for in a shell window, but are a
302 bad thing to look for in a file window (ps1 lines show up in my module
303 docstrings often). PythonWin's shell should set this true too.
304
305 Persistent problem: strings containing def/class can still screw things up
306 completely. No improvement. Simplest workaround is on the user's head, and
307 consists of inserting e.g.
308
309 def _(): pass
310
311 (or any other def/class) after the end of the multiline string that's
312 screwing them up. This is especially irksome because IDLE's syntax coloring
313 is *not* confused, so when this happens the colors don't match the
314 indentation behavior they see.
315
316 * AutoIndent.py: Tim Peters again:
317
318 [Tim, after adding some bracket smarts to AutoIndent.py]
319 > ...
320 > What it can't possibly do without reparsing large gobs of text is
321 > suggest a reasonable indent level after you've *closed* a bracket
322 > left open on some previous line.
323 > ...
324
325 The attached can, and actually fast enough to use -- most of the time. The
326 code is tricky beyond belief to achieve that, but it works so far; e.g.,
327
328 return len(string.expandtabs(str[self.stmt_start :
329 ^ indents to caret
330 i],
331 ^ indents to caret
332 self.tabwidth)) + 1
333 ^ indents to caret
334
335 It's about as smart as pymode now, wrt both bracket and backslash
336 continuation rules. It does require reparsing large gobs of text, and if it
337 happens to find something that looks like a "def" or "class" or sys.ps1
338 buried in a multiline string, but didn't suck up enough preceding text to
339 see the start of the string, it's completely hosed. I can't repair that --
340 it's just too slow to reparse from the start of the file all the time.
341
342 AutoIndent has grown a new num_context_lines tuple attribute that controls
343 how far to look back, and-- like other params --this could/should be made
344 user-overridable at startup and per-file on the fly.
345
346 * PyParse.py: New file by Tim Peters:
347
348 One new file in the attached, PyParse.py. The LineStudier (whatever it was
349 called <wink>) class was removed from AutoIndent; PyParse subsumes its
350 functionality.
351
352 * AutoIndent.py: Tim Peters keeps revising this module (more to come):
353
354 Removed "New tabwidth" menu binding.
355
356 Added "a tab means how many spaces?" dialog to block tabify and untabify. I
357 think prompting for this is good now: they're usually at-most-once-per-file
358 commands, and IDLE can't let them change tabwidth from the Tk default
359 anymore, so IDLE can no longer presume to have any idea what a tab means.
360
361 Irony: for the purpose of keeping comments aligned via tabs, Tk's
362 non-default approach is much nicer than the Emacs/Notepad/Codewright/vi/etc
363 approach.
364
365 * EditorWindow.py:
366 1. Catch NameError on import (could be raised by case mismatch on Windows).
367 2. No longer need to reset pyclbr cache and show watch cursor when calling
368 ClassBrowser -- the ClassBrowser takes care of pyclbr and the TreeWidget
369 takes care of the watch cursor.
370 3. Reset the focus to the current window after error message about class
371 browser on buffer without filename.
372
373 * Icons/minusnode.gif, Icons/plusnode.gif: Missed a few.
374
375 * ClassBrowser.py, PathBrowser.py: Rewritten based on TreeWidget.py
376
377 * ObjectBrowser.py: Object browser, based on TreeWidget.py.
378
379 * TreeWidget.py: Tree widget done right.
380
381 * ToolTip.py: As yet unused code for tool tips.
382
383 * ScriptBinding.py:
384 Ensure sys.argv[0] is the script name on Run Script.
385
386 * ZoomHeight.py: Move zoom height functionality to separate function.
387
388 * Icons/folder.gif, Icons/openfolder.gif, Icons/python.gif, Icons/tk.gif:
389 A few icons used by ../TreeWidget.py and its callers.
390
391 * AutoIndent.py: New version by Tim Peters improves block opening test.
392
393Fri May 21 04:46:17 1999 Guido van Rossum <guido@cnri.reston.va.us>
394
395 * Attic/History.py, PyShell.py: Rename History to IdleHistory.
396 Add isatty() to pseudo files.
397
398 * StackViewer.py: Make initial stack viewer wider
399
400 * TODO.txt: New wishes
401
402 * AutoIndent.py, EditorWindow.py, PyShell.py:
403 Much improved autoindent and handling of tabs,
404 by Tim Peters.
405
406Mon May 3 15:49:52 1999 Guido van Rossum <guido@cnri.reston.va.us>
407
408 * AutoIndent.py, EditorWindow.py, FormatParagraph.py, UndoDelegator.py:
409 Tim Peters writes:
410
411 I'm still unsure, but couldn't stand the virtual event trickery so tried a
412 different sin (adding undo_block_start/stop methods to the Text instance in
413 EditorWindow.py). Like it or not, it's efficient and works <wink>. Better
414 idea?
415
416 Give the attached a whirl. Even if you hate the implementation, I think
417 you'll like the results. Think I caught all the "block edit" cmds,
418 including Format Paragraph, plus subtler ones involving smart indents and
419 backspacing.
420
421 * WidgetRedirector.py: Tim Peters writes:
422
423 [W]hile trying to dope out how redirection works, stumbled into two
424 possible glitches. In the first, it doesn't appear to make sense to try to
425 rename a command that's already been destroyed; in the second, the name
426 "previous" doesn't really bring to mind "ignore the previous value" <wink>.
427
428Fri Apr 30 19:39:25 1999 Guido van Rossum <guido@cnri.reston.va.us>
429
430 * __init__.py: Support for using idle as a package.
431
432 * PathBrowser.py:
433 Avoid listing files more than once (e.g. foomodule.so has two hits:
434 once for foo + module.so, once for foomodule + .so).
435
436Mon Apr 26 22:20:38 1999 Guido van Rossum <guido@cnri.reston.va.us>
437
438 * ChangeLog, ColorDelegator.py, PyShell.py: Tim Peters strikes again:
439
440 Ho ho ho -- that's trickier than it sounded! The colorizer is working with
441 "line.col" strings instead of Text marks, and the absolute coordinates of
442 the point of interest can change across the self.update call (voice of
443 baffled experience, when two quick backspaces no longer fooled it, but a
444 backspace followed by a quick ENTER did <wink>).
445
446 Anyway, the attached appears to do the trick. CPU usage goes way up when
447 typing quickly into a long triple-quoted string, but the latency is fine for
448 me (a relatively fast typist on a relatively slow machine). Most of the
449 changes here are left over from reducing the # of vrbl names to help me
450 reason about the logic better; I hope the code is a *little* easier to
451
452Fri Apr 23 14:01:25 1999 Guido van Rossum <guido@cnri.reston.va.us>
453
454 * EditorWindow.py:
455 Provide full arguments to __import__ so it works in packagized IDLE.
456
457Thu Apr 22 23:20:17 1999 Guido van Rossum <guido@cnri.reston.va.us>
458
459 * help.txt:
460 Bunch of updates necessary due to recent changes; added docs for File
461 menu, command line and color preferences.
462
463 * Bindings.py: Remove obsolete 'script' menu.
464
465 * TODO.txt: Several wishes fulfilled.
466
467 * OutputWindow.py:
468 Moved classes OnDemandOutputWindow and PseudoFile here,
469 from ScriptBinding.py where they are no longer needed.
470
471 * ScriptBinding.py:
472 Mostly rewritten. Instead of the old Run module and Debug module,
473 there are two new commands:
474
475 Import module (F5) imports or reloads the module and also adds its
476 name to the __main__ namespace. This gets executed in the PyShell
477 window under control of its debug settings.
478
479 Run script (Control-F5) is similar but executes the contents of the
480 file directly in the __main__ namespace.
481
482 * PyShell.py: Nits: document use of $IDLESTARTUP; display idle version
483
484 * idlever.py: New version to celebrate new command line
485
486 * OutputWindow.py: Added flush(), for completeness.
487
488 * PyShell.py:
489 A lot of changes to make the command line more useful. You can now do:
490 idle.py -e file ... -- to edit files
491 idle.py script arg ... -- to run a script
492 idle.py -c cmd arg ... -- to run a command
493 Other options, see also the usage message (also new!) for more details:
494 -d -- enable debugger
495 -s -- run $IDLESTARTUP or $PYTHONSTARTUP
496 -t title -- set Python Shell window's title
497 sys.argv is set accordingly, unless -e is used.
498 sys.path is absolutized, and all relevant paths are inserted into it.
499
500 Other changes:
501 - the environment in which commands are executed is now the
502 __main__ module
503 - explicitly save sys.stdout etc., don't restore from sys.__stdout__
504 - new interpreter methods execsource(), execfile(), stuffsource()
505 - a few small nits
506
507 * TODO.txt:
508 Some more TODO items. Made up my mind about command line args,
509 Run/Import, __main__.
510
511 * ColorDelegator.py:
512 Super-elegant patch by Tim Peters that speeds up colorization
513 dramatically (up to 15 times he claims). Works by reading more than
514 one line at a time, up to 100-line chunks (starting with one line and
515 then doubling up to the limit). On a typical machine (e.g. Tim's
516 P5-166) this doesn't reduce interactive responsiveness in a noticeable
517 way.
518
519Wed Apr 21 15:49:34 1999 Guido van Rossum <guido@cnri.reston.va.us>
520
521 * ColorDelegator.py:
522 Patch by Tim Peters to speed up colorizing of big multiline strings.
523
524Tue Apr 20 17:32:52 1999 Guido van Rossum <guido@cnri.reston.va.us>
525
526 * extend.txt:
527 For an event 'foo-bar', the corresponding method must be called
528 foo_bar_event(). Therefore, fix the references to zoom_height() in
529 the example.
530
531 * IdlePrefs.py: Restored the original IDLE color scheme.
532
533 * PyShell.py, IdlePrefs.py, ColorDelegator.py, EditorWindow.py:
534 Color preferences code by Loren Luke (massaged by me somewhat)
535
536 * SearchEngine.py:
537 Patch by Mark Favas: it fixes the search engine behaviour where an
538 unsuccessful search wraps around and re-searches that part of the file
539 between the start of the search and the end of the file - only really
540 an issue for very large files, but... (also removes a redundant
541 m.span() call).
542
543Mon Apr 19 16:26:02 1999 Guido van Rossum <guido@cnri.reston.va.us>
544
545 * TODO.txt: A few wishes are now fulfilled.
546
547 * AutoIndent.py: Tim Peters implements some of my wishes:
548
549 o Makes the tab key intelligently insert spaces when appropriate
550 (see Help list banter twixt David Ascher and me; idea stolen from
551 every other editor on earth <wink>).
552
553 o newline_and_indent_event trims trailing whitespace on the old
554 line (pymode and Codewright).
555
556 o newline_and_indent_event no longer fooled by trailing whitespace or
557 comment after ":" (pymode, PTUI).
558
559 o newline_and_indent_event now reduces the new line's indentation after
560 return, break, continue, raise and pass stmts (pymode).
561
562 The last two are easy to fool in the presence of strings &
563 continuations, but pymode requires Emacs's high-powered C parsing
564 functions to avoid that in finite time.
565
566======================================================================
567 Python release 1.5.2c1, IDLE version 0.4
568======================================================================
569
570Wed Apr 7 18:41:59 1999 Guido van Rossum <guido@cnri.reston.va.us>
571
572 * README.txt, NEWS.txt: New version.
573
574 * idlever.py: Version bump awaiting impending new release.
575 (Not much has changed :-( )
576
577Mon Mar 29 14:52:28 1999 Guido van Rossum <guido@cnri.reston.va.us>
578
579 * ScriptBinding.py, PyShell.py:
580 At Tim Peters' recommendation, add a dummy flush() method to
581 PseudoFile.
582
583Thu Mar 11 23:21:23 1999 Guido van Rossum <guido@cnri.reston.va.us>
584
585 * PathBrowser.py: Don't crash when sys.path contains an empty string.
586
587 * Attic/Outline.py: This file was never supposed to be part of IDLE.
588
589 * PathBrowser.py:
590 - Don't crash in the case where a superclass is a string instead of a
591 pyclbr.Class object; this can happen when the superclass is
592 unrecognizable (to pyclbr), e.g. when module renaming is used.
593
594 - Show a watch cursor when calling pyclbr (since it may take a while
595 recursively parsing imported modules!).
596
597Wed Mar 10 05:18:02 1999 Guido van Rossum <guido@cnri.reston.va.us>
598
599 * EditorWindow.py, Bindings.py: Add PathBrowser to File module
600
601 * PathBrowser.py: "Path browser" - 4 scrolled lists displaying:
602 directories on sys.path
603 modules in selected directory
604 classes in selected module
605 methods of selected class
606
607 Sinlge clicking in a directory, module or class item updates the next
608 column with info about the selected item. Double clicking in a
609 module, class or method item opens the file (and selects the clicked
610 item if it is a class or method).
611
612 I guess eventually I should be using a tree widget for this, but the
613 ones I've seen don't work well enough, so for now I use the old
614 Smalltalk or NeXT style multi-column hierarchical browser.
615
616 * MultiScrolledLists.py:
617 New utility: multiple scrolled lists in parallel
618
619 * ScrolledList.py: - White background.
620 - Display "(None)" (or text of your choosing) when empty.
621 - Don't set the focus.
622
623======================================================================
624 Python release 1.5.2b2, IDLE version 0.3
625======================================================================
626
627Wed Feb 17 22:47:41 1999 Guido van Rossum <guido@cnri.reston.va.us>
628
629 * NEWS.txt: News in 0.3.
630
631 * README.txt, idlever.py: Bump version to 0.3.
632
633 * EditorWindow.py:
634 After all, we don't need to call the callbacks ourselves!
635
636 * WindowList.py:
637 When deleting, call the callbacks *after* deleting the window from our list!
638
639 * EditorWindow.py:
640 Fix up the Windows menu via the new callback mechanism instead of
641 depending on menu post commands (which don't work when the menu is
642 torn off).
643
644 * WindowList.py:
645 Support callbacks to patch up Windows menus everywhere.
646
647 * ChangeLog: Oh, why not. Checking in the Emacs-generated change log.
648
649Tue Feb 16 22:34:17 1999 Guido van Rossum <guido@cnri.reston.va.us>
650
651 * ScriptBinding.py:
652 Only pop up the stack viewer when requested in the Debug menu.
653
654Mon Feb 8 22:27:49 1999 Guido van Rossum <guido@cnri.reston.va.us>
655
656 * WindowList.py: Don't crash if a window no longer exists.
657
658 * TODO.txt: Restructured a bit.
659
660Mon Feb 1 23:06:17 1999 Guido van Rossum <guido@cnri.reston.va.us>
661
662 * PyShell.py: Add current dir or paths of file args to sys.path.
663
664 * Debugger.py: Add canonic() function -- for brand new bdb.py feature.
665
666 * StackViewer.py: Protect against accessing an empty stack.
667
668Fri Jan 29 20:44:45 1999 Guido van Rossum <guido@cnri.reston.va.us>
669
670 * ZoomHeight.py:
671 Use only the height to decide whether to zoom in or out.
672
673Thu Jan 28 22:24:30 1999 Guido van Rossum <guido@cnri.reston.va.us>
674
675 * EditorWindow.py, FileList.py:
676 Make sure the Tcl variables are shared between windows.
677
678 * PyShell.py, EditorWindow.py, Bindings.py:
679 Move menu/key binding code from Bindings.py to EditorWindow.py,
680 with changed APIs -- it makes much more sense there.
681 Also add a new feature: if the first character of a menu label is
682 a '!', it gets a checkbox. Checkboxes are bound to Boolean Tcl variables
683 that can be accessed through the new getvar/setvar/getrawvar API;
684 the variable is named after the event to which the menu is bound.
685
686 * Debugger.py: Add Quit button to the debugger window.
687
688 * SearchDialog.py:
689 When find_again() finds exactly the current selection, it's a failure.
690
691 * idle.py, Attic/idle: Rename idle -> idle.py
692
693Mon Jan 18 15:18:57 1999 Guido van Rossum <guido@cnri.reston.va.us>
694
695 * EditorWindow.py, WindowList.py: Only deiconify when iconic.
696
697 * TODO.txt: Misc
698
699Tue Jan 12 22:14:34 1999 Guido van Rossum <guido@cnri.reston.va.us>
700
701 * testcode.py, Attic/test.py:
702 Renamed test.py to testcode.py so one can import Python's
703 test package from inside IDLE. (Suggested by Jack Jansen.)
704
705 * EditorWindow.py, ColorDelegator.py:
706 Hack to close a window that is colorizing.
707
708 * Separator.py: Vladimir Marangozov's patch:
709 The separator dances too much and seems to jump by arbitrary amounts
710 in arbitrary directions when I try to move it for resizing the frames.
711 This patch makes it more quiet.
712
713Mon Jan 11 14:52:40 1999 Guido van Rossum <guido@cnri.reston.va.us>
714
715 * TODO.txt: Some requests have been fulfilled.
716
717 * EditorWindow.py:
718 Set the cursor to a watch when opening the class browser (which may
719 take quite a while, browsing multiple files).
720
721 Newer, better center() -- but assumes no wrapping.
722
723 * SearchBinding.py:
724 Got rid of debug print statement in goto_line_event().
725
726 * ScriptBinding.py:
727 I think I like it better if it prints the traceback even when it displays
728 the stack viewer.
729
730 * Debugger.py: Bind ESC to close-window.
731
732 * ClassBrowser.py: Use a HSeparator between the classes and the items.
733 Make the list of classes wider by default (40 chars).
734 Bind ESC to close-window.
735
736 * Separator.py:
737 Separator classes (draggable divider between two panes).
738
739Sat Jan 9 22:01:33 1999 Guido van Rossum <guido@cnri.reston.va.us>
740
741 * WindowList.py:
742 Don't traceback when wakeup() is called when the window has been destroyed.
743 This can happen when a torn-of Windows menu references closed windows.
744 And Tim Peters claims that the Windows menu is his favorite to tear off...
745
746 * EditorWindow.py: Allow tearing off of the Windows menu.
747
748 * StackViewer.py: Close on ESC.
749
750 * help.txt: Updated a bunch of things (it was mostly still 0.1!)
751
752 * extend.py: Added ScriptBinding to standard bindings.
753
754 * ScriptBinding.py:
755 This now actually works. See doc string. It can run a module (i.e.
756 import or reload) or debug it (same with debugger control). Output
757 goes to a fresh output window, only created when needed.
758
759======================================================================
760 Python release 1.5.2b1, IDLE version 0.2
761======================================================================
762
763Fri Jan 8 17:26:02 1999 Guido van Rossum <guido@cnri.reston.va.us>
764
765 * README.txt, NEWS.txt: What's new in this release.
766
767 * Bindings.py, PyShell.py:
768 Paul Prescod's patches to allow the stack viewer to pop up when a
769 traceback is printed.
770
771Thu Jan 7 00:12:15 1999 Guido van Rossum <guido@cnri.reston.va.us>
772
773 * FormatParagraph.py:
774 Change paragraph width limit to 70 (like Emacs M-Q).
775
776 * README.txt:
777 Separating TODO from README. Slight reformulation of features. No
778 exact release date.
779
780 * TODO.txt: Separating TODO from README.
781
782Mon Jan 4 21:19:09 1999 Guido van Rossum <guido@cnri.reston.va.us>
783
784 * FormatParagraph.py:
785 Hm. There was a boundary condition error at the end of the file too.
786
787 * SearchBinding.py: Hm. Add Unix binding for replace, too.
788
789 * keydefs.py: Ran eventparse.py again.
790
791 * FormatParagraph.py: Added Unix Meta-q key binding;
792 fix find_paragraph when at start of file.
793
794 * AutoExpand.py: Added Meta-/ binding for Unix as alt for Alt-/.
795
796 * SearchBinding.py:
797 Add unix binding for grep (otherwise the menu entry doesn't work!)
798
799 * ZoomHeight.py: Adjusted Unix height to work with fvwm96. :=(
800
801 * GrepDialog.py: Need to import sys!
802
803 * help.txt, extend.txt, README.txt: Formatted some paragraphs
804
805 * extend.py, FormatParagraph.py:
806 Add new extension to reformat a (text) paragraph.
807
808 * ZoomHeight.py: Typo in Win specific height setting.
809
810Sun Jan 3 00:47:35 1999 Guido van Rossum <guido@cnri.reston.va.us>
811
812 * AutoIndent.py: Added something like Tim Peters' backspace patch.
813
814 * ZoomHeight.py: Adapted to Unix (i.e., more hardcoded constants).
815
816Sat Jan 2 21:28:54 1999 Guido van Rossum <guido@cnri.reston.va.us>
817
818 * 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:
819 Checking in IDLE 0.2.
820
821 Much has changed -- too much, in fact, to write down.
822 The big news is that there's a standard way to write IDLE extensions;
823 see extend.txt. Some sample extensions have been provided, and
824 some existing code has been converted to extensions. Probably the
825 biggest new user feature is a new search dialog with more options,
826 search and replace, and even search in files (grep).
827
828 This is exactly as downloaded from my laptop after returning
829 from the holidays -- it hasn't even been tested on Unix yet.
830
831Fri Dec 18 15:52:54 1998 Guido van Rossum <guido@cnri.reston.va.us>
832
833 * FileList.py, ClassBrowser.py:
834 Fix the class browser to work even when the file is not on sys.path.
835
836Tue Dec 8 20:39:36 1998 Guido van Rossum <guido@cnri.reston.va.us>
837
838 * Attic/turtle.py: Moved to Python 1.5.2/Lib
839
840Fri Nov 27 03:19:20 1998 Guido van Rossum <guido@cnri.reston.va.us>
841
842 * help.txt: Typo
843
844 * EditorWindow.py, FileList.py: Support underlining of menu labels
845
846 * Bindings.py:
847 New approach, separate tables for menus (platform-independent) and key
848 definitions (platform-specific), and generating accelerator strings
849 automatically from the key definitions.
850
851Mon Nov 16 18:37:42 1998 Guido van Rossum <guido@cnri.reston.va.us>
852
853 * Attic/README: Clarify portability and main program.
854
855 * Attic/README: Added intro for 0.1 release and append Grail notes.
856
857Mon Oct 26 18:49:00 1998 Guido van Rossum <guido@cnri.reston.va.us>
858
859 * Attic/turtle.py: root is now a global called _root
860
861Sat Oct 24 16:38:38 1998 Guido van Rossum <guido@cnri.reston.va.us>
862
863 * Attic/turtle.py: Raise the root window on reset().
864 Different action on WM_DELETE_WINDOW is more likely to do the right thing,
865 allowing us to destroy old windows.
866
867 * Attic/turtle.py:
868 Split the goto() function in two: _goto() is the internal one,
869 using Canvas coordinates, and goto() uses turtle coordinates
870 and accepts variable argument lists.
871
872 * Attic/turtle.py: Cope with destruction of the window
873
874 * Attic/turtle.py: Turtle graphics
875
876 * Debugger.py: Use of Breakpoint class should be bdb.Breakpoint.
877
878Mon Oct 19 03:33:40 1998 Guido van Rossum <guido@cnri.reston.va.us>
879
880 * SearchBinding.py:
881 Speed up the search a bit -- don't drag a mark around...
882
883 * PyShell.py:
884 Change our special entries from <console#N> to <pyshell#N>.
885 Patch linecache.checkcache() to keep our special entries alive.
886 Add popup menu to all editor windows to set a breakpoint.
887
888 * Debugger.py:
889 Use and pass through the 'force' flag to set_dict() where appropriate.
890 Default source and globals checkboxes to false.
891 Don't interact in user_return().
892 Add primitive set_breakpoint() method.
893
894 * ColorDelegator.py:
895 Raise priority of 'sel' tag so its foreground (on Windows) will take
896 priority over text colorization (which on Windows is almost the
897 same color as the selection background).
898
899 Define a tag and color for breakpoints ("BREAK").
900
901 * Attic/PopupMenu.py: Disable "Open stack viewer" and "help" commands.
902
903 * StackViewer.py:
904 Add optional 'force' argument (default 0) to load_dict().
905 If set, redo the display even if it's the same dict.
906
907Fri Oct 16 21:10:12 1998 Guido van Rossum <guido@cnri.reston.va.us>
908
909 * StackViewer.py: Do nothing when loading the same dict as before.
910
911 * PyShell.py: Details for debugger interface.
912
913 * Debugger.py:
914 Restructured and more consistent. Save checkboxes across instantiations.
915
916 * EditorWindow.py, Attic/README, Bindings.py:
917 Get rid of conflicting ^X binding. Use ^W.
918
919 * Debugger.py, StackViewer.py:
920 Debugger can now show local and global variables.
921
922 * Debugger.py: Oops
923
924 * Debugger.py, PyShell.py: Better debugger support (show stack etc).
925
926 * Attic/PopupMenu.py: Follow renames in StackViewer module
927
928 * StackViewer.py:
929 Rename classes to StackViewer (the widget) and StackBrowser (the toplevel).
930
931 * ScrolledList.py: Add close() method
932
933 * EditorWindow.py: Clarify 'Open Module' dialog text
934
935 * StackViewer.py: Restructured into a browser and a widget.
936
937Thu Oct 15 23:27:08 1998 Guido van Rossum <guido@cnri.reston.va.us>
938
939 * ClassBrowser.py, ScrolledList.py:
940 Generalized the scrolled list which is the base for the class and
941 method browser into a separate class in its own module.
942
943 * Attic/test.py: Cosmetic change
944
945 * Debugger.py: Don't show function name if there is none
946
947Wed Oct 14 03:43:05 1998 Guido van Rossum <guido@cnri.reston.va.us>
948
949 * Debugger.py, PyShell.py: Polish the Debugger GUI a bit.
950 Closing it now also does the right thing.
951
952Tue Oct 13 23:51:13 1998 Guido van Rossum <guido@cnri.reston.va.us>
953
954 * Debugger.py, PyShell.py, Bindings.py:
955 Ad primitive debugger interface (so far it will step and show you the
956 source, but it doesn't yet show the stack).
957
958 * Attic/README: Misc
959
960 * StackViewer.py: Whoops -- referenced self.top before it was set.
961
962 * help.txt: Added history and completion commands.
963
964 * help.txt: Updated
965
966 * FileList.py: Add class browser functionality.
967
968 * StackViewer.py:
969 Add a close() method and bind to WM_DELETE_WINDOW protocol
970
971 * PyShell.py: Clear the linecache before printing a traceback
972
973 * Bindings.py: Added class browser binding.
974
975 * ClassBrowser.py: Much improved, much left to do.
976
977 * PyShell.py: Make the return key do what I mean more often.
978
979 * ClassBrowser.py:
980 Adding the beginnings of a Class browser. Incomplete, yet.
981
982 * EditorWindow.py, Bindings.py:
983 Add new command, "Open module". You select or type a module name,
984 and it opens the source.
985
986Mon Oct 12 23:59:27 1998 Guido van Rossum <guido@cnri.reston.va.us>
987
988 * PyShell.py: Subsume functionality from Popup menu in Debug menu.
989 Other stuff so the PyShell window can be resurrected from the Windows menu.
990
991 * FileList.py: Get rid of PopUp menu.
992 Create a simple Windows menu. (Imperfect when Untitled windows exist.)
993 Add wakeup() method: deiconify, raise, focus.
994
995 * EditorWindow.py: Generalize menu creation.
996
997 * Bindings.py: Add Debug and Help menu items.
998
999 * EditorWindow.py: Added a menu bar to every window.
1000
1001 * Bindings.py: Add menu configuration to the event configuration.
1002
1003 * Attic/PopupMenu.py: Pass a root to the help window.
1004
1005 * SearchBinding.py:
1006 Add parent argument to 'to to line number' dialog box.
1007
1008Sat Oct 10 19:15:32 1998 Guido van Rossum <guido@cnri.reston.va.us>
1009
1010 * StackViewer.py:
1011 Add a label at the top showing (very basic) help for the stack viewer.
1012 Add a label at the bottom showing the exception info.
1013
1014 * Attic/test.py, Attic/idle: Add Unix main script and test program.
1015
1016 * 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:
1017 Initial checking of Tk-based Python IDE.
1018 Features: text editor with syntax coloring and undo;
1019 subclassed into interactive Python shell which adds history.
1020