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