Initial Commit
[packages] / xemacs-packages / oo-browser / BR-RELEASE
1 #
2 # SUMMARY:      What's new in this version of the OO-Browser?
3 #
4 # AUTHOR:       Bob Weiner
5 #
6 # ORIG-DATE:    15-Oct-90
7 # LAST-MOD:      3-Jan-02 at 18:18:42 by Bob Weiner
8 #
9 # Copyright (C) 2000-2001 Bob Weiner
10 # Copyright (C) 1990-1999 BeOpen.com
11 # See the file BR-COPY for license information.
12 #
13 # This file is part of the OO-Browser.
14
15 ---------------------------------------------------------------------------
16                                VERSION 4.08
17
18 * V4.07 was released as a sourceforge.net project.  Updated the mailing list
19   and support e-mail addresses to point to the sourceforge lists.  See
20   "www.sf.net/projects/oo-browser" for more details.
21
22 * Added support for the GNU General Public License Version 2.  See "BR-COPY".
23
24 * Clarified installation instructions in "BR-README".
25
26 * If help-mode is available, can now use {q} to exit from OO-Browser
27   information display buffers shown in the viewer window.
28
29 * Many bug fixes for initial version of the Python support code and
30   elsewhere, notably a regexp overflow bug when scanning C++ code.
31   See "ChangeLog" for details.
32
33 * Python OO-Browser
34
35   ** See the `Python Specifics' section of the OO-Browser user manual,
36      "(oo-browser)Python Specifics", for how to use the following new
37      features.
38
39   ** Added global variable browsing support.
40   
41   ** Added module and package browsing support.
42
43   ** Added support for Python OO-Browser Environments which include C or C++
44      code.
45
46   ** Support for source file lookup within directories listed in the
47      PYTHONPATH environment variable.
48
49   ** Added support for all docstring types, not just method docstrings.
50
51   ** Improved class scanning.
52
53   ** Integration with Python's pydoc self-documentation module when the
54      separate pydoc.el interface package is available.  Download pydoc.el
55      from: "www.deepware.com/pub/python".
56
57   ** Support for browsing Java-type interfaces within Python.  The add-on
58      Python module, bwcto_interface, lets you define interfaces within Python
59      which the OO-Browser will then browse.  Download bwcto_interface from
60      "www.deepware.com/pub/python".
61
62 ----------------------------------------------------------------------------------
63                                VERSION 4.07
64
65 * Bug fix release.
66
67 * Integrated OO-Browser Options with InfoDock's Options menu.
68
69 * Fix startup time library dependency failure.
70
71 * Java OO-Browser: Fixed handling of classes with no `extends' or
72   `implements' clauses.  When edit a class, point is now left at the
73   beginning of the class def line as expected, not after initial modifiers
74   such as `public'.
75
76 * Windows Graphical OO-Browser: Fixed bug in source code which failed to
77   deselect a node before deleting it.  (The binary is not fixed yet so
78   if you want this fix, you will have to build the binary yourself for
79   now.)
80
81 ---------------------------------------------------------------------------
82                                VERSION 4.06
83
84 * Bug fix release.
85
86 * Separated binary distributions from the rest of the OO-Browser distribution 
87   so that parties who use it on multiple platforms don't have to download
88   the Lisp and documentation multiple times.
89
90 ---------------------------------------------------------------------------
91                                VERSION 4.05
92
93 * Open Sourced the commercial-quality multi-language OO-Browser.
94
95 * Added C construct support for Python and Eiffel.
96
97 * Added support for building the Texinfo version of the OO-Browser Manual.
98
99 * Improved function handling.
100
101 * Added support for HP-UX distributions.
102
103 ---------------------------------------------------------------------------
104                                VERSION 4.04
105
106 * Improved selection and error reporting within *Implementors* buffers that
107   list potential implementors of a method.  These are displayed when multiple 
108   implementations of a method name are detected after an Action Key click on
109   the method name within a code buffer.
110
111 * The Use-Vi-as-Editor option worked only if an xterm was used as the
112   shell from which vi is run.  Now other shells work.
113
114 * Improved handling when a dedicated frame is used to display the OO-Browser
115   and the frame is deleted.  It now is recreated.
116
117 ---------------------------------------------------------------------------
118                                VERSION 4.03
119
120 * Added support for the pop-tag-mark command {M-*} available in some editors
121   to move back to prior code locations displayed from clicking the Action Key 
122   on an identifier or other cross-reference.
123
124 * Fixed Action Key support for selecting an overloaded method within an
125   *Implementors* buffer.  Such a buffer is generated by the OO-Browser in
126   response to an Action Key click on an overloaded method call.
127
128 * C++ OO-Browser
129
130   ** Eliminated rare false matches within conditional statements that look like
131      function calls and eliminated processing of ::function references within
132      function bodies.
133
134   ** Improved matching between declaration and definition of a function where
135      the two have different whitespace or contain * characters within
136      their return types.
137
138   ** Added .inc and .hpp as C++ header file suffix types since some libraries
139      use these.
140
141   ** Eliminated substring problem where searching for implementors of `func'
142      would include entries such as `function'.
143
144 * Windows OO-Browser
145
146   ** Added potential support for background building of Environments.
147
148 * Many subtle bug fixes.
149
150 ---------------------------------------------------------------------------
151                                VERSION 4.02
152
153 * C++ OO-Browser
154
155   ** Improved handling of nested template class and parent declarations.
156
157   ** Improved handling of complex method declarations.
158
159   ** Support for the `typename' keyword.
160
161 ---------------------------------------------------------------------------
162                                VERSION 4.01
163
164 * C++ OO-Browser
165
166   ** Improved recognition of C++ template and array constructs.
167
168   ** Modified listing prefix for structs and enums from "- " to "= " for now.
169
170 * Eiffel OO-Browser
171
172   ** Multiple attribute declarations such as: `a,b,c: TYPE' may now be viewed 
173      individually within the browser.  Multiple routines definitions were
174      already handled by the browser.
175
176   ** Improved recognition of Eiffel inherit clauses, external features and
177      Windows-based Eiffel files.
178
179   ** Made the class `ANY' a parent of any class without an inheritance
180      clause (lacking any explicit parents).
181
182   ** The OO-Browser now browses ISE's publicly released BASE data
183      structures library and the SmallEiffel class libraries as well.
184
185 * Python OO-Browser
186
187   ** Corrected comment recognition and improved expression matches.
188
189   ** Added Action Key clicking on import modules or the specific classes,
190      methods, functions or variables that they reference.  A click on
191      any such name locates the associated definition and displays it.
192
193 * Java OO-Browser
194
195   ** Improved recognition of Java attributes.
196
197 * Eliminated invalid association of an existing Env name with a newly created 
198   Env file.
199
200 * With XEmacs under the X Window System, the Backspace key now works just
201   like the Delete key in listing buffers, scrolling the viewer window back a
202   windowful.
203
204 * Bug fixes.
205
206 ---------------------------------------------------------------------------
207                                VERSION 4.00
208
209 * An OO-Browser menubar entry has been added to the global menubar under
210   XEmacs and GNU Emacs to simplify invocation of the OO-Browser for new
211   users.  (InfoDock has long had this feature.)
212
213 * The Action Key part of whose function is to display classes and features
214   when clicked upon in listing buffers is now bound to the middle mouse
215   button on 3-button systems and the left mouse button on typically 2-button
216   systems.  (InfoDock has long had this feature.)
217
218 * Environments are now named, with a full suite of menu and keyboard commands 
219   for adding, removing, renaming, listing and changing Environment
220   associations to names.  Environment names eliminate the need to remember
221   where each Environment is stored within a file system.  You are prompted to
222   add a name to an Environment when trying to load an Environment to which
223   you have not yet assigned a name.
224
225   Names are user-specific so that each user can have names that are most
226   memorable and easiest to use according to their own tastes.  Names may
227   however be copied for sharing and site-wide commonality; BeOpen.com support
228   programs can help you with such configuration.
229
230 * Within OO-Browser listing windows, the title bar above the frame displays
231   both the name and full pathname of the Environment being browsed for easy
232   reference.  It also shows the version of the OO-Browser in use.
233
234 * Redesigned all feature handling code to speed feature queries.
235   A test Environment of 586 C++ classes on a Pentium II 350 Mhz
236   Linux system required only 1.5 seconds to list all of its features
237   (9859 entries including classes).  The time went from 15 seconds in V3.07
238   to 1.5 seconds for a 10-fold speedup.
239
240   A user-visible side-effect of this speedup under MS operating systems
241   only (due to their lack of the -d option to their builtin sort function),
242   is that features are alphabetized by category, e.g. regular methods in one
243   group, special methods in other groups, followed by attributes.
244
245 * Restructured internals for improved efficiency and reliability.
246
247 * When scanning trees of code directories, symbolic link subdirectories are
248   now ignored since these sometimes cause circularities that can produce an
249   infinite recursion.  If any code lives within another tree, the Environment
250   can specify inclusion of its root directory.  If a root directory given as
251   an Environment search path is a symbolic link, it is scanned, only
252   subdirectory symbolic links are ignored.
253
254 * Features in a graphical OO-Browser display may now be edited or viewed
255   read-only rather than just viewed.
256
257 * PC files ending with carriage-return and linefeed characters are now
258   handled without any need for conversion. 
259
260 * The {@} command which shows a class within its textual inheritance graph no 
261   longer hides all other entries within the current listing.  This brings it
262   into conformance with other OO-Browser commands.
263
264 * C++ OO-Browser
265
266   ** Pure virtual functions are now shown properly within feature listings.
267
268   ** C constructs of enumerations, structures, typedefs, and unions declared
269      within classes are now recognized.  Their type definitions are listed
270      under associated default classes, e.g. [enumeration].  Any variable
271      names associated with these declarations are shown as attributes under
272      the class in which they are declared.
273
274   ** Fixed to handle unsigned attribute declarations.
275
276 * Eiffel OO-Browser
277
278   ** Added support for multiple routine definitions with a single definition
279      signature.
280
281   ** Made {i} show class info binding work automatically without the need to
282      call another setup command.
283
284 * Lisp/CLOS OO-Browser
285
286   ** Improved implementors listings involving default classes.
287
288   ** All feature listings now have categorizing prefixes as in other
289      languages.  Constants and variables are now preceded by "= "; for now,
290      other features all are preceded by "- ".
291
292 * Eliminated Rebuild-Lib-Part and Rebuild-Sys-Part from the
293   OO-Browser/Environment menu since these are seldom used.
294
295 * Bug fixes.
296
297 ---------------------------------------------------------------------------
298                                VERSION 3.07
299
300 * When an Environment is reloaded within the OO-Browser (using {C-c C-l}),
301   the browser display is completely refreshed to its beginning state as if
302   a different Environment had been loaded.  This eliminates any issue of
303   having stale data in a listing window after an Environment load.
304
305 * Improved the output of `br-where' {w} to include the class name of any
306   feature being displayed.
307
308 * When prompted to load or to create an Environment, completion now occurs in 
309   the current directory rather than the directory of the last used
310   Environment.  Thus, by moving to the directory in which you want your
311   Environment to be saved and then using {C-c C-o} or {M-x oo-browser RET},
312   you will be able to just hit return when promted for an Environment name.
313
314 * Switching from one language Environment to another now automatically
315   updates the Environment feature file in use.
316
317 * Eiffel OO-Browser:
318
319   ** Updated feature handling to latest OO-Browser standards.   This fixed
320      problems with a number of Eiffel operations.
321
322   ** Classes are now shown in upper case as they are in Eiffel code.
323
324   ** Speeded up feature scanning when building Environments.
325
326   ** Eiffel Environments built with earlier versions of the OO-Browser are
327      now obsolete.  You will be prompted to rebuild them whenever out-of-date 
328      Environments are loaded.
329
330 * Bug fixes.
331
332 ---------------------------------------------------------------------------
333                                 VERSION 3.06
334
335 * The emacs-related editor in use and other current environment information
336   is now included within the output of {M-e} (br-env-stats) when within a
337   browser listing window.
338
339 * Bug fixes.
340
341 * Improved feature listings to leave same named features in the same order as
342   they occur within the source file.
343
344 * C++ OO-Browser
345
346   ** Static data members (attributes for which one copy is shared by all
347      instances of a class) are now prefixed with an "& " prefix to
348      distinguish them from replicated attributes which are prefixed with
349      "= ".
350
351   ** Improved C++ declaration recognition.
352
353   ** Improved case-sensitivity when locating features.
354
355   ** Improved constructor recognition.
356
357   ** Method argument lists may contain either :: scoped operators or ()
358      operator related parentheses.  The browser will properly recognize such
359      methods if they contain one or the other but not both embedded
360      parentheses and scoping operators.  This limitation is related to poor
361      design in the C++ language that reuses the : and parentheses characters
362      within method declarations for multiple purposes.
363
364   ** Class declarations conditionalized with #ifdef preprocessor constructs
365      are now handled better; only one version of such a class declaration
366      will appear within an Environment.
367
368
369 * Java OO-Browser
370
371   ** Constructs from C files found within Java Environment source directories
372      are now listed within Java Environmens as they are within C++ and
373      Objective-C Environments.
374
375 ---------------------------------------------------------------------------
376                                 VERSION 3.05
377
378 * Up to 6-fold improvement in the speed of building C++ and other
379   language environments under InfoDock and XEmacs; 14-fold speedup
380   under GNU Emacs.
381
382 * C++ OO-Browser: Improved attribute matching including array support.
383
384 * Support for viewing and editing elements/features with external
385   viewers/editors.  (Earlier versions support external viewing of classes
386   only.)
387
388 * New menu item, Options/Use-Vi-as-Editor to toggle the setting of whether
389   the internal editor or Vi is used when edit commands are issued in the
390   OO-Browser listing windows.  Viewing commands remain unaffected.
391
392 * Bug fixes.
393
394 ---------------------------------------------------------------------------
395                                 VERSION 3.04
396 * Windows OO-Browser:
397
398   ** Added a version of the graphical OO-Browser for use under MS Windows-based
399      OSes and window systems.  It works in the same way as the X OO-Browser.
400      The textual OO-Browser automatically selects the appropriate graphical
401      browser to use under each OS.
402
403   ** Added Windows support under GNU Emacs major release 20.
404
405 * C functions are now found using a variant of the etags program called
406   `ootags' to prevent any naming conflicts with other versions of etags
407   on a system.
408
409 ---------------------------------------------------------------------------
410                                 VERSION 3.03
411
412 * The OO-Browser program directory is now called oo-browser.
413
414 * C++ OO-Browser: Fixed support for global operator+ and operator- functions.
415   Be sure to not leave whitespace between the `operator' and its type
416   symbol, e.g. =, when writing global operators or the browser may
417   not browse it properly.  Whitespace is handled in scoped :: operators.
418
419 * Many bug fixes, notably a fix for the problem where the OO-Browser reports
420   that a class is not defined in the Environment even though its definition
421   was found.  (This occurred only when a class was referenced in one part of
422   the Environment, e.g. System, and then defined in the other part,
423   e.g. Library.)
424
425 ---------------------------------------------------------------------------
426                             VERSION 3.01 and 3.02
427
428 * C++ OO-Browser: Reduced large Environment build times by approximately 36%
429   through a number of optimizations.
430
431 * Environments now store the start and end times of the last build of the
432   Environment.  When in the OO-Browser, {M-e} (br-env-stats) will show
433   these times.  It will also show an improved summary of the number of
434   classes and interfaces in the Environment.
435
436 * Many bug fixes.
437
438 * If you have a problem building an Environment in the background under
439   XEmacs or InfoDock, you can now use {C-u M-x br-env-rebuild RET} to 
440   build an Environment and to generate a stack backtrace when errors
441   occur.
442
443 ---------------------------------------------------------------------------
444                                VERSION 3.00
445
446
447 * New key bindings and commands:
448
449       ==========================================================
450       OO-Browser Listing             Menu Item
451       Window Key Binding
452       ==========================================================
453             r               Feature/Routines
454             =               Feature/Attributes
455
456             <               View-Window/To-Buffer-Beginning
457             >               View-Window/To-Buffer-End
458             ,               View-Window/Scroll-Backward-One-Line
459             .               View-Window/Scroll-Forward-One-Line
460
461           M-0 P             Options/List-Protocols-with-Classes
462
463
464   Standalone browser features (those useful in code buffers outside of the
465   browser user interface) are now bound to keys by default (which differ from
466   the previously recommended bindings to prevent conflicts with other
467   packages).
468
469       ==========================================================
470       Source Code                    Command
471       Buffer Key Binding
472       ==========================================================
473
474          C-c M-f                     br-find
475            Prompt with completion for a class or element name from the
476            current Environment and display its definition for editing.
477
478          C-c M-j  (C++ only)         br-feature-edit-declaration
479            Prompt with completion for a CLASS::FEATURE argument and then edit
480            the associated declaration.  If point is on a feature definition
481            signature in a code buffer (prior to any of its arguments), the
482            default is to edit that feature's declaration.  An error is
483            signaled if the declaration is not found.
484
485          C-c M-w                     br-where
486            Display in the viewer window and return the full path of the
487            defining file for a browser listing entry.  Optional prefix arg
488            PROMPT means prompt for the entry name; automatically prompts if
489            called interactively outside of a listing window (in standalone
490            mode), e.g. within a source code buffer when the browser user
491            interface is not displayed.  If called in standalone mode with a
492            prefix argument, the command inserts the defining path at point
493            rather than displaying it elsewhere.
494
495           M-TAB                      br-complete-symbol
496            Complete an OO-Browser type or element or an Emacs Lisp symbol
497            preceding point.  The symbol is compared against current
498            Environment entries (or Emacs symbol table entries) and any needed
499            characters are inserted.
500
501 * Redesigned menus for clarity and ease of use.  Added Graphical Menu to
502   centralize graphical browser commands.  Also added documentation
503   entries that display help for each menu and each menu concept, such as
504   `Feature'.  Added an item on the OO-Browser menu that e-mails pre-paid
505   support issues directly to BeOpen.com.
506
507 * Made Ancestor menu entries behave exactly as the {a} and {C-u a} keys do,
508   rather than inverting ancestor listings, since the difference could be
509   confusing.
510
511 * Simplified the (br-add-class-file) command bound to {C-c ^}.  It now
512   tries to determine by itself whether to add the class to the Library or
513   System part of the Environment.
514
515 * Eliminated the load of an Environment after it is built in batch mode since
516   the editor session is terminated immediately after the build.
517
518 * Fixed so that when switch Environment languages, the new Environment is
519   always properly loaded.
520
521 * Simplified installation and batch usage of the OO-Browser.
522
523
524 * C++ OO-Browser:
525
526   ** Attributes (data members) declared within class definitions are now
527      included in Environments.  Environments will take a bit longer to build
528      but will be more complete.
529
530   ** Friend classes are now included in Environments (previously only
531      individual friend features were included).
532
533   ** Because of the above changes, Environments built with versions of the
534      OO-Browser prior to 3.00 are now obsolete.  The browser will prompt you
535      to rebuild such Environments when they are loaded.
536
537   ** Action Key presses at the start of feature declarations and definitions
538      jump back and forth between matching definitions and declarations.
539
540   ** Action Key presses on types found within method signature argument lists
541      try to display the definitions of the types.
542
543   ** Improved default feature name computed for various commands when point
544      is within the pre-argument part of a declaration or definition of a
545      feature.
546
547   ** Allow single-line C or C++-style comments between method arguments when
548      searching for matching definitions and declarations.
549
550   ** Numerous special case fixes for optimum performance.
551
552   ** Fixed parsing of global `operator' features which ootags mishandles.
553
554
555 * Java OO-Browser:
556
557   ** Require types for all feature declarations and definitions.
558
559   ** Action Key presses on types found within method signature argument lists
560      try to display the definitions of the types.
561
562   ** Eliminated false matches to statements that look like method signatures,
563      e.g. if (expr) { body }.
564
565   ** Eliminated failure of feature and ancestor queries made when point was
566      in the middle of an <interface> entry name.
567
568   ** Clarified the message display when a feature definition is found.
569
570   ** Made br-find work for Java features.
571
572
573 * Graphical OO-Browser
574
575   ** Fixed so that the selected tree node is highlighted in red on
576      16-bit-plane and higher displays.  (Previously, no highlight was seen.)
577
578   ** ANSIfied the C source code and added initial multi-platform
579      configuration support.
580
581   ** Eliminated jumping between windows within the textual browser to display
582      entries selected within the graphical browser.
583
584   ** Coming soon: A native Windows port of the graphical browser.
585
586 ---------------------------------------------------------------------------
587                                VERSION 2.13.01
588
589 * Java OO-Browser: Fixed regexp scanning bug that could cause a hang when
590   scanning Java class files that contain multiple blank lines at the end
591   of the file.
592
593 * New menu item Option/List-Protocols-with-Classes which is on by default
594   includes protocols (interfaces) in the listings of all classes or top-level
595   classes under Java and Objective-C.  If you want to turn this off in your
596   editor initialization file, add the expression:
597     (setq br-protocols-with-classes-flag nil)
598
599 * Listing buffers have been renamed from `Inher-Lvl-' to `OO-Browse-' and
600   now contain both the key binding that generated the listing and the listing
601   number (sequential from 1).  So if the third listing command that you use
602   is the ancestors command bound to {a}, its output would be shown in a
603   buffer named `OO-Browse-a3'.
604
605 * Each command that displays its output in a new listing window uses the next
606   window to the right (and then wraps back to the first window on the left).
607   Some commands used to use the prior left window and so could obscur
608   recently generated information.
609
610 * New key bindings in listing buffers:
611     {A} = list all classes       (this used to be {C-u t} which still works)
612     {T} = list top-level classes (this used to be {t}     which still works)
613
614 ---------------------------------------------------------------------------
615                                VERSION 2.13.02
616
617 * C++ OO-Browser: Allow for #define replacement keyword between the `class'
618   literal and the class name, a technique used in some class libraries.
619
620 ---------------------------------------------------------------------------
621                                 VERSION 2.13
622
623 * Eliminated issues with running the OO-Browser under Microsoft
624   OSes which lack typical UNIX executables like sort and make used
625   by the OO-Browser.
626
627 * Eliminated `file has changed' messages when browse an Env after
628   building it in the background.
629
630 * C++ OO-Browser
631
632   ** Improved handling of variable declarations with template args.
633
634   ** Improved recognition of "type var1, var2, var3;" declarations.
635
636   ** Made feature matches work under GNU Emacs 20 (in prior versions
637      could signal an error).
638
639 ---------------------------------------------------------------------------
640                                VERSION 2.12.05
641
642 * C++ OO-Browser bug fixes and addition of class name display when a feature
643   definition is found since the class name may not be on the screen
644   otherwise.
645
646 ---------------------------------------------------------------------------
647                                VERSION 2.12.04
648
649 * All Environment handling commands now prompt with a full pathname of the
650   most recent Environment as a default and beep if an attempt to enter a
651   directory name is made.
652
653 * Modified installation instructions to require loading of initial browser
654   files at startup, rather than autoloading.  This avoids any undefined
655   Action/Assist Key autoloads.
656
657 * Added support for Action Key selection of identifiers within the body of
658   features defined within the class declaration itself.  In earlier releases,
659   a click anywhere on the first line of an in-class method definition would
660   just move the first line of the definition to the top of the window.  Now
661   that happens only if you click before the opening brace.  This applies to
662   C++, Java and Objective-C files.
663
664 * Background builds should now reload and redisplay the Environment properly
665   after finishing.  If the Environment built is the same one currently being
666   browsed, the Environment is reloaded and the browser reinitialized
667   automatically when the build finishes.
668
669 * C++ OO-Browser
670
671   ** Fixed recognition of C++ feature definitions.
672
673   ** When Action Key press on a C++ member reference, if no possible
674      definitions are found within the Environment, it will try to display a
675      matching declaration instead.
676
677   ** Declaration recognition is much improved.
678
679   ** {j} and {J} commands now work when used on entries from [default
680      classes], i.e. C constructs.  They also will now find a declaration for
681      which no definition exists within the Environment.
682
683   ** References that start with the pseudo-variable `this->' now work
684      properly when the Action Key is pressed on them.
685
686   ** Made commands that display declarations and definitions of features
687      show the class of the feature in the minibuffer message since it may not
688      be visible on screen.
689
690   ** Significantly improved default prompting based on a feature name or
691      feature reference at point, whether in code or within a listing buffer.
692      Also corrected several bugs.
693
694 ---------------------------------------------------------------------------
695                                VERSION 2.12.03
696
697 * Simplified listing display of implementor signatures when the browser
698   produces more than one feature entry as possible matches for a feature
699   reference.
700
701 * Action and Assist Mouse Keys work under GNU Emacs 20.
702
703 * Action and Assist Key direct selection of entities has been greatly
704   expanded.  See the Hyperbole Manual for a superset of the things that
705   can be clicked upon for action.
706
707 * C++ OO-Browser
708
709   ** You should rebuild any C++ Environments built with earlier versions of
710      the browser as this may improve commands which work with feature
711      entries.
712
713   ** New {j} key binding to jump to (view) the declaration (header) of the
714      entry at point.  {C-u j} prompts with completion for the name of the
715      feature declaration to view.
716
717   ** New {J} key binding to edit the declaration of the entry at point.
718      {C-u J} prompts with completion for the name of the feature declaration
719      to edit.
720
721   ** Feature name completion when used in source buffers prompts with
722      much more intelligent defaults than in prior versions.
723
724   ** Action Key clicks on var.attribute or var->attribute feature references
725      display the attribute definition for editing if var is declared
726      within the current bufffer and the attribute is lexically defined within
727      the class given by the type of var.  Inherited attributes will be
728      supported in the future.  Action Key clicks on method calls also work
729      better.
730
731 ---------------------------------------------------------------------------
732                                VERSION 2.12.02
733
734 * Added support independent of a full Hyperbole for Action Key clicks within C,
735   C++, Java, Lisp and Objective-C buffers as documented in the OO-Browser
736   user manual.
737
738 * When the browser is invoked and a background build is initiated, the buffer
739   showing the status of the build is displayed in the viewer window.
740
741 * When a background Environment finishes, the built Environment is loaded
742   if it is the current Environment or the user asks to browse it.
743
744 * Improved Environment loading if user aborts during some of the Environment
745   build prompts.
746
747 * Selection of completions with the Action Key is much more reliable.
748 * In-buffer and minibuffer completion lists of classes, features and elements
749   now work correctly.
750
751 ---------------------------------------------------------------------------
752                                VERSION 2.12.01
753
754 * Clarified prompts sent to the user when building an Environment to reduce
755   the need for reading the manual before getting started.
756
757 * Now works with GNU Emacs 20.
758
759 * Background building under GNU Emacs now works.
760
761 * Now works without a full distribution of Hyperbole installed.
762
763 * Reloading the same Environment after a {C-u q} now works without error.
764
765 ---------------------------------------------------------------------------
766                                 VERSION 2.12
767
768 * OO-Browser Multi-language Changes
769
770   ** New class and protocol-oriented menu items "Protocols" and
771      "All-Protocols" plus "Implementors" and "All-Implementors".
772
773   ** Action Key clicks within the whitespace preceding classes or
774      interface/protocols displays their ancestors; an Assist Key click in the
775      same context displays descendants.  The same click on a feature line
776      displays the implementors of the feature.
777
778   ** Action or Assist Key clicks on default class names (those delimited by
779      square brackets, []) lists the instances of the default class, e.g. the
780      instances of [interface] are all interface names within the Environment.
781
782   ** Added text to help the user identify and correct the problem when an
783      OO-Browser Environment is moved from one location to another but the
784      pathnames it refers to are not updated.
785
786   ** The {I} (br-implementors) command has been extended to work on
787      interfaces (Java) and protocols (Objective-C), each of which are
788      shown in the browser delimited by <>.  The implementors of an
789      interface/protocol are those classes which lexically define the methods
790      specified by the interfaces.  Classes that inherit such method
791      definitions are not list as implementors.  Use {d} (br-descendants) on
792      an interface/protocol entry to see all classes that conform to the
793      entry.  Implementors are now shown in the next listing window rather
794      than the prior one since they are more like descendant relations than
795      ancestral ones.
796
797   ** {P} (br-protocols) on a class entry now shows all interfaces/protocols
798      to which a class conforms (including those it inherits), not just those
799      referenced within the class declaration.  Also changed this command when
800      on an interface/protocol entry to display the interfaces to which the
801      entry conforms, just as it does for regular classes.  Use {v} or {e} to
802      display the interface declaration itself for viewing or editing.  The
803      OO-Browser command/help menu bound to {h} now documents the {P} key.
804
805   ** Method implementors no longer include entries from interfaces/protocols
806      since these are abstract entries, not implementations.
807
808   ** The Action Key, when pressed on individual class or interface/protocol
809      names referenced for inheritance purposes within the initial line of a
810      class declaration, jumps to their associated declarations.
811
812   ** Modified the way the browser displays definitions/declarations.  Point
813      is now left on the first line of the definition, not on preceding
814      comments, although the preceding comments are also displayed.  Comments
815      that do not begin a line are ignored, so that lines such as:
816          @end /* comment */
817      are not considered preceding comments.
818
819 * C++ OO-Browser
820
821   ** Navigating from method declarations to their definitions now works
822      when classes are declared within the same files as the methods rather
823      than in header files.
824
825 * Java OO-Browser
826
827   ** Added full support for browsing interfaces just like classes;
828      additionally, implementors of interfaces may be listed.  Use the {f}
829      (br-features) command on the top-level default class, [interface], to
830      see all interfaces defined within the Environment.  Interface entries
831      are shown delimited by <>.
832
833   ** Interface method declarations are now properly categorized as abstract
834      methods within OO-Browser listings.
835
836   ** Due to changes in the handling of interfaces, Java OO-Browser Environments
837      built prior to V2.12 are obsolete.  The browser now prompts the user
838      to rebuild such Environments whenever they are loaded.
839
840 * Objective-C OO-Browser
841
842   ** Fixed so {I} (br-implementors) works when used on feature entries
843      or class category entries.
844
845   ** Added support for method signatures which end with ,...
846      This syntax is used within GNUstep libraries.
847
848   ** Due to changes in the handling of interfaces, Objective-C OO-Browser
849      Environments built prior to V2.12 are obsolete.  The browser now prompts
850      the user to rebuild such Environments whenever they are loaded.
851
852 ---------------------------------------------------------------------------
853                                VERSION 2.11.03
854
855 * OO-Browser Multi-language Changes
856
857   ** When using OO-Browser Environments outside of the browser user interface
858      to click on identifiers and jump to their definitions, the location of
859      display of new files and buffers is controlled by Hyperbole's
860      `hpath:display-buffer' function which allows user-level control of where
861      display occurs.
862
863   ** The browser now skips CVS subdirectories by default when scanning source
864      code.  See the documentation for `br-skip-dir-regexps' for more details.
865
866 * C++ OO-Browser
867
868   ** Support for .CXX and .HXX suffixes from case-insensitive platforms.
869
870   ** Eliminated false #define macro listings when a simple constant contains
871      parentheses.
872
873   ** Method and function call browsing is now supported by pressing the
874      Action Key on a call after an Environment has been loaded.  The
875      OO-Browser deals with much of the complexity of C++'s calling
876      syntax so you need not (though it doesn't yet account for method
877      overloading).  In cases where it cannot determine a unique definition
878      (e.g. where dynamic binding is involved), it pops up a list of possible
879      definitions (method signatures).  An Action Key click on any of these
880      (or on the class names separating these signature lines) will display
881      the definition within the source code.
882
883   ** An Action Key press on pretty much any class name, including those
884      preceeding the :: scoping operator in a method call, jumps to the
885      class declaration.
886
887 * Java OO-Browser
888
889   ** All interfaces and classes mentioned within `implements' and `extends'
890      clauses are now properly recorded.  Interfaces give Java a limited form
891      of multiple inheritance which is reflected by the OO-Browser.  There is
892      as yet no visual distinction within listing buffers between interface
893      and class names.
894
895   ** Classes which are referenced but not defined in the Environment
896      are now assumed to inherit directly from Object so that it remains
897      the sole top-level class.
898
899 ---------------------------------------------------------------------------
900                                VERSION 2.11.02
901
902 * Added support for new C++ `restrict' keyword.
903
904 * Added hmouse-tag.el file to support jumping from C-based headers to
905   their definitions when a full Hyperbole distribution is not available.
906
907 * Added support for rebuilding C constructs when just the System or
908   Library part of an Environment is rebuilt.  You must first rebuild
909   in its entirety any Environment built with an earlier version of the
910   OO-Browser; then rebuilding either part of it will work properly.
911
912 ---------------------------------------------------------------------------
913                                VERSION 2.11.01
914
915 * Case-sensitive feature name lookup in C++, C, Java, Python, and
916   Objective-C.
917
918 * Added support for running the OO-Browser in a dedicated frame under
919   InfoDock.
920
921 ---------------------------------------------------------------------------
922                                VERSION 2.11
923
924 * OO-Browser Multi-language Changes
925
926   ** {M-x oo-browser RET} now prompts to return to the previously browsed
927      Environment.
928
929   ** Errors in redrawing trees in the X OO-Browser when collapse a node
930      are gone (double buffering during redrawing had to be disabled).
931
932   ** Fixed a number of bugs.  See the "ChangeLog" file.
933
934   ** Edited whole OO-Browser Manual.
935
936   ** Long comments preceding an element definition no longer scroll the
937      element outside of the window bounds.
938
939   ** The {br-where} command now displays its output in the viewer window so
940      that it is never truncated and the results can be more easily reused.
941
942 * C++ and Objective-C OO-Browser
943
944   ** C functions are included in Environments only if `br-c-tags-flag' is t,
945      which is the default.
946
947   ** C constructs whose name comes at the end of a multi-line { list }, such
948      as an enum, now are displayed in their entirety.  (The old behavior
949      displayed just the final line of the construct.
950
951   ** Action Key presses on global C identifier references within code jumps
952      to their definitions.
953
954   ** Global variables and individual enumeration labels are now listed in
955      default classes [variable] and [enum_label] respectively.
956
957 * Eiffel OO-Browser
958
959   ** Added details to the OO-Browser Manual concerning the br-entry-info
960      command bound to {i} under Eiffel.
961
962 ---------------------------------------------------------------------------
963                                VERSION 2.10
964
965 * OO-Browser Multi-language Changes
966
967   ** Added Show-Inherited-Features toggle button to the OO-Browser Options
968      menu.  This determines whether or not inherited features are shown
969      when listing class features.  (The default is `on'.)
970
971   ** Adding a single class to an Environment with the br-add-class command
972      now properly adds its features too.  Similarly, the br-delete command
973      deletes associated features.
974
975   ** X OO-Browser bug on some platforms that blackened the whole window after
976      drawing the tree may be eliminated on some platforms, but not all.
977
978   ** br-edit-feature is now more flexible, permitting separate specification of
979      class and feature name arguments.
980
981   ** Fixed br-find-file to never display a file in a browser listing window.
982
983   ** Eliminated unnecessary execution of mode-specific hooks when scanning
984      class files.  For example, invocation of syntax highlighting could
985      slow down scanning dramatically.
986
987   ** Added BeOpen.com contact info to version/credit screen that
988      appears on startup or when using the {C-c #} command in the browser
989      to make it easy for people to get commercial support or custom
990      develpment for the OO-Browser.
991
992 * C++ OO-Browser
993
994   ** Added support for multi-line virtual method declarations.
995
996 * Java OO-Browser
997
998   ** Attributes are now included as features of a class (you must rebuild
999      any existing Environment to have them included).  They are prefaced
1000      with "= " when shown in a browser listing buffer.
1001
1002   ** Array return values from methods are now handled properly by the
1003      OO-Browser scanner.
1004
1005   ** Feature name completion now works properly, whenever the browser
1006      prompts for a feature name.
1007
1008   ** Added support for .jav files for 3-character suffix impaired users.
1009
1010   ** Cleaned up a number of areas of the code that were improperly carried
1011      over from the C++ OO-Browser.
1012
1013   ** Removed support for threadsafe keyword since it has been deleted from
1014      the language specification.
1015
1016 * Objective-C OO-Browser
1017
1018   ** objc-feature-matches can now take a regular expression and return
1019      all matching features.
1020
1021 * Python OO-Browser
1022
1023   ** Included support for the Python object-oriented scripting language.
1024
1025 ---------------------------------------------------------------------------
1026                                VERSION 2.9.11
1027
1028 * Added man/br-design.texi to document the design rationale of the
1029   OO-Browser.
1030
1031 * Java: The OO-Browser now works on code with the new Java exception syntax:
1032       public Connection(String host, int port)
1033         throws UnknownHostException, InputOutputException {}
1034
1035 * Fixed mouse key initialization bug.
1036
1037 * C: Fixed bug in displaying structure or enum definitions.
1038
1039 * Emacs 19: Fixed bug that caused OO-Browser menubar menu not to appear.
1040
1041 * BR-README: Rewrote Installation / Configuration section.
1042
1043 ---------------------------------------------------------------------------
1044                                VERSION 2.9.10
1045
1046 * {M-x br-report-bug RET} bound to {C-c C-b} in OO-Browser listing buffers
1047   can be used to send mail to the OO-Browser discussion list.
1048
1049 * A number of significant bug fixes, including errors triggered when scanning
1050   source directories and encountering an unreadable file.  See "ChangeLog".
1051
1052 * .icc and .I C++ inline definition file suffixes are now supported.
1053
1054 * Any time an Environment is built interactively, you are queried whether or
1055   not to build it in the background.
1056
1057 * If you try to load an Environment which has not yet been built and you
1058   decide not to build it, then the load is aborted rather than prompting you
1059   for another Environment to load.
1060
1061 ---------------------------------------------------------------------------
1062                                VERSION 2.9.9
1063
1064 * Standard OO-Browser invocation command renamed to `oo-browser' for clarity.
1065   `oobr' still exists for backward compatibility.  Invocation is now much
1066   simpler and cleaner.  You are always prompted for the Environment to
1067   browse, but if you hit {RET} immediately or if you give a prefix argument
1068   to the command, then you jump right into browsing the previous Environment.
1069   This eliminates the problem new users had in not knowing how to switch
1070   Environments.  See "(oo-browser.info)Loading Environments".
1071
1072 * {q} to quit from the OO-Browser now always puts the browser buffers at the
1073   bottom of the buffer list, as it should.
1074
1075 * Subdirectories whose names are a single character long now are scanned
1076   properly.
1077
1078 * br-skip-dir-regexps and br-file-dir-regexp are now documented in the
1079   manual, see "(oo-browser.info)Customization".
1080
1081 ---------------------------------------------------------------------------
1082                                VERSION 2.9.8
1083
1084 * Improved tree-x/Makefile support for building under UNIX System V.
1085
1086 * Fixed bugs in Java Environment building.
1087
1088 * Added Java Specifics section to the OO-Browser manual.
1089 ---------------------------------------------------------------------------
1090                           VERSIONS 2.9.6 and 2.9.7
1091
1092 * Added support for browsing Java code.
1093
1094 * A number of bug fixes.
1095 ---------------------------------------------------------------------------
1096                           VERSIONS 2.9.4 and 2.9.5
1097
1098 * Eiffel: Added some new Eiffel V3 keywords.
1099
1100 * Added information on the new oo-browser mailing list in the "BR-README"
1101   file.  Also added menu items to subscribe to / unsubscribe from the list
1102   and to send mail to it.
1103
1104 * CLOS: Changed language name to Lisp, since the browser is useful on
1105   non-CLOS Lisp too.
1106
1107 ---------------------------------------------------------------------------
1108                                 VERSION 2.9.3
1109
1110 * Environment files now contain the version of the OO-Browser which was used
1111   to build them.  If the Environment file format is obsolete, the OO-Browser
1112   will automatically prompt you to rebuild it whenever you load it.
1113
1114 * {C-c C-s} now properly saves Environment features, when the Environment is
1115   renamed.
1116
1117 * The browser user interface will now display within a frame even if you have
1118   set the unsplittable frame property.
1119
1120 * Eiffel: Fixed bug that prevented display of a feature from its listing
1121    entry when using {f}.
1122 ---------------------------------------------------------------------------
1123                                 VERSION 2.9.2
1124
1125 * Added pulldown and popup menu support for Emacs 19.
1126
1127 * `make install' now installs OO-Browser documentation in an Emacs tree.
1128
1129 ---------------------------------------------------------------------------
1130                                 VERSION 2.9.1
1131
1132 * C++/C/Objective-C:
1133
1134          NOTE:  You must rebuild any Objective-C Environments that you have
1135                 built with earlier versions of the browser.  If you want the
1136                 new C default classes described below to appear in C++
1137                 Environments, you must rebuild them, too.
1138
1139          The OO-Browser now supports browsing the following C constructs
1140          within C++ and Objective-C Environments via default classes:
1141
1142          DEFAULT CLASS    C CONSTRUCT
1143          --------------------------------------
1144          [constant]       #define constant
1145          [enumeration]    enum {}
1146          [function]       non-member function()
1147          [macro]          #define macro()
1148          [structure]      struct {}
1149          [type]           typedef {}
1150          [union]          union {}
1151
1152          You may now define a C++ Environment which contains only C code.
1153          The above default classes are the only ones that will appear in such
1154          Environments.
1155
1156 * C++: Added recognition of keywords, `mutable' and `explicit', newly added
1157        to standard C++.
1158
1159 * Removed key binding of br-toggle-keep-viewed since this is little used and
1160   reused its key, {V}, for br-view-friend, which views the definition of a
1161   C++ friend declaration.  This was mistakenly formerly bound to {M-v} which
1162   conflicted with a basic scrolling command.
1163
1164 * C++: Recognition of new array operators, `operator new [] ()' and 'operator
1165        delete [] ()'.
1166
1167 * The X OO-Browser can now be built on systems without the usleep system call
1168   (see oo-browser/tree-x/Makefile).
1169
1170 * {M-e}, br-env-stats, now shows the names of any classes which are defined
1171   multiple times within the Environment, to help you eliminate duplicates.
1172   It also shows a list of undefined classes, those which are referenced,
1173   e.g. as parents of another class, but not defined within the Environment.
1174
1175 ---------------------------------------------------------------------------
1176                                  VERSION 2.9
1177
1178 * C++: See the C++ Specifics section of the OO-Browser manual for user
1179        documentation on all of these changes.
1180
1181 * C++: friend declarations now appear in class feature listings, prefixed by
1182        `% '.  {V} views the definition of a friend.
1183
1184 * C++: pure virtual functions now appear in listings as `> func' instead of
1185       `func = 0'.  Object creation and deletion functions appear as `+ func'
1186       instead of `- func'.
1187
1188 * C++: Overloading of operator[] and operator() is now supported.
1189
1190 * C++: Greatly speeded up feature listings by caching feature names.
1191
1192 * C++: Expanded variety of complex declarations/definitions that the browser
1193        recognizes. 
1194
1195 * Eiffel: Added full feature browsing as in other languages along with Eiffel
1196           V3 support.
1197
1198 ---------------------------------------------------------------------------
1199                                 VERSION 2.8.6
1200
1201 * Added KEYWORDS: header to all *.el files, so the Emacs finder
1202   program, {C-h p}, can now include them in its indices for lookup.
1203
1204 * C++: Added support for browsing pure virtual function interfaces declared
1205   within classes.  Given a pure virtual function named, f, it appears as, f =
1206   0, in a browser listing buffer to distinguish it from a member definition.
1207
1208 * C++: Improved scanning of a broader range of C++ definitions.
1209
1210 * {C-u F} now works properly.  It shows the signatures/tags of all features
1211   in the current listing buffer.
1212
1213 * CLOS: Added proper support for &keywords in argument lists.
1214
1215 * CLOS: All methods which do not contain any specialized parameters (those
1216   of a specific type) are considered members of the root CLOS class `t'. 
1217
1218 ---------------------------------------------------------------------------
1219                                 VERSION 2.8.5
1220
1221 * Documented InfoDock/XEmacs menus in the manual.
1222
1223 * Improved Makefile support for adding custom load-path entries.
1224
1225 * Emacs 19 versions now run site-start.el when batch compiling files.
1226
1227 ---------------------------------------------------------------------------
1228                                 VERSION 2.8.4
1229
1230 * Added autoload comments so that autoloaded OO-Browser commands are
1231   automatically picked up under V19.
1232
1233 * The default display of class features/elements, bound to {f}, now includes
1234   all inherited features.  Use {M-0 f} to turn off display of inherited
1235   features.
1236
1237 * Under XEmacs when mouse support is available, there is an OO-Browser
1238   pulldown menu and the same menu as a popup, bound to the right mouse button
1239   when in a browser listing buffer.
1240
1241 * Instantiation of templates is handled well now, especially when a parent
1242   class is a template instantiation.
1243
1244 * Action Key press on a C++ class feature declaration now properly jumps to
1245   the definition.
1246
1247 ---------------------------------------------------------------------------
1248                           VERSIONS 2.8.2 and 2.8.3
1249
1250 * New version of the X OO-Browser with more reliable display updates after a
1251   node is collapsed and a color X resource file.
1252
1253 * Support for C++ template class and method browsing.
1254
1255 * Under C++, non-class functions are now found and added to the default
1256   [function] class for easy browsing.  This includes both C and C++ functions.
1257
1258 * Br-unique, {u}, and br-order, {o}, now work on all entry types, not just
1259   classes.
1260
1261 * New command, br-match-entries, bound to {M}.  Permits filtering of the set
1262   of entries in a listing buffer.  Under Emacs 19, you can still browse
1263   entries after filtering them.  Emacs 18 doesn't permit this since each
1264   entry name is not necessarily unique.
1265
1266 * Many bug fixes and many fewer invalid method tag matches under C++.
1267
1268 * Much faster compilation of the OO-Browser Emacs Lisp source code since all
1269   files are compiled with one invocation of Emacs, rather than one per file.
1270
1271 * Environment builds may now be done in the background.  (You are prompted
1272   for whether to build in the background, each time you build an
1273   Environment.  When the build finishes, you are asked if you would like to
1274   browse the built Environment.)
1275
1276 * Eiffel 3 inheritance clause support.
1277
1278 ---------------------------------------------------------------------------
1279                                 VERSION 2.8.1
1280
1281 * Much faster C++ feature lookups.  You *must* rebuild any C++ Environments
1282   built with earlier versions of the OO-Browser before trying to browse
1283   features within the Environment.  Load such an Environment and use {C-c
1284   C-e} to rebuild it.
1285
1286 * XEmacs 19.12 mouse support.
1287
1288
1289 ---------------------------------------------------------------------------
1290                                  VERSION 2.8
1291
1292 * Command and Key Binding Improvements
1293
1294   ** Action Key press on an OO-Browser environment file named OOBR or
1295      OOBR-FTR, automatically determines the language of the Environment and
1296      loads it for browsing.
1297
1298   ** Common Lisp and Emacs Lisp element browsing support added.  Standard
1299      language element types are added as default classes to Environment, so
1300      one can browse functions, variables, methods and more.  See
1301      "(oo-browser.info)CLOS Specifics" for details.
1302
1303   ** The feature listing command, br-routines, previously bound to {r}, has
1304      been renamed br-features and bound to {f}.  {f} used to run br-find; use
1305      {C-u e} (br-edit-entry) for that command instead.  This makes the
1306      bindings of {f} and {F}, which lists feature signatures, more uniform.
1307      {r} still works for backwards compatibility in this release.
1308
1309   ** {f} if applied to a single class for which there are no feature
1310      definitions within the Environment, displays the associated class
1311      definition so that you may browse its feature declarations.  This
1312      improves browsing in Environments where you have only interface
1313      specifications, e.g. *.h files, but no source code.
1314
1315   ** Fixed {I}, br-implementors command.  Also, now an Action Key press on
1316      an implementor class shows the implemented element.
1317
1318   ** {C} lists class categories.  Presently only supported under Objective-C.
1319      {v} or {e} views or edits the class category definition.
1320      {I} shows the classes which implement a category.
1321      The [category] default class displays all Environment categories as its
1322      features.  {v} or {e} then displays the associated category definition.
1323
1324   ** {P} lists class protocols.   Presently only supported under Objective-C.
1325      {v} or {e} views or edits the class definition which directly conforms
1326      to the protocol.
1327      {I} shows the classes which implement a protocol.
1328      The [protocol] default class displays all Environment protocols as its
1329      features.  {v} or {e} then displays the associated protocol definition.
1330
1331
1332 * Graphical Browser Improvements
1333
1334   ** Motif version of the X OO-Browser interface redone using the Athena
1335      toolkit, so that only free X libraries are required.  Thanks to Torgeir
1336      Veimo for this conversion work.
1337
1338
1339 * Many bug fixes.
1340
1341   ** The browser will no longer scan SCCS revision subdirectories by default.
1342
1343   ** Better support for the wide variety of C++ coding styles and file naming
1344      conventions.
1345
1346
1347 * User Manual Improvements
1348
1349   ** Reorganized and renamed sections for clarity.
1350
1351   ** New sections:
1352
1353      ***  "(oo-browser.info)Browsing Categories"
1354      ***  "(oo-browser.info)Browsing Elements"
1355      ***  "(oo-browser.info)Browsing Implementors"
1356      ***  "(oo-browser.info)Browsing Protocols"
1357
1358   ** Expanded glossary in user manual.
1359
1360
1361 * Installation Improvements
1362
1363   ** Improved Makefile to support all common Emacs versions.
1364
1365   ** More detailed installation notes in "BR-README".