Commits

Anonymous committed 94dceff

Sync with current upstream 1.91.1

  • Participants
  • Parent commits 3a958cb

Comments (0)

Files changed (18)

+Version 1.91.1
+--------------
+
+* Fixes a bug in the speedbar integration which prevented clicking onto a
+  directory in the speedbar: Always after clicking onto a directory speedbar
+  has re-synced itself to the directory of the current source-buffer in the
+  edit-window. This bug is fixed, now directory navigation in the speedbar
+  works. (Klaus)
+
+* Fixes a bug in upgrading stored window-sizes from ECB 1.80 to ECB >= 1.90.
+  Fixes also two bugs in `ecb-store-window-sizes' if default-values are used in
+  `ecb-layout-window-sizes' or if ecb-windows have frame-height as height
+  (resp. frame-width as width) . (Klaus)
+
+* Fixed a bug in the downloading feature of ECB. (Klaus)
+
+* Fixed a bug in the navigation-history of ECB which sometimes has prevented
+  that a user can open files from the sources/history buffer or clicking onto
+  tokens in the method-buffer. Now the back-forward-navigation works stable.
+  (Klaus)
+
+* Enhanced the "downloading new packages" feature of ECB: Now ECB autom. checks
+  at the download sites which versions are available. With the new option
+  `ecb-download-package-version-type' you can define which types of version
+  you allow to download (only stable, stable and betas or stable, betas and
+  alphas); see related section in the online-manual! (Klaus)
+
+* New command `ecb-download-semantic' for easy getting latest semantic
+  versions. (Klaus)
+
+
+Version 1.90
+------------
+
+* The website of ECB has moved from http://home.swipnet.se/mayhem/ecb.html to
+  http://ecb.sourceforge.net. Maintainance has switched from Jesper Nordenberg
+  to Klaus Berndl.
+
+* Fixed an annoying bug which results in an error "Wrong type argument:
+  integer-or-marker-p nil)" after a full buffer reparse. ECB 1.80 has repaired
+  its internal state but nevertheless the user had to reclick on the same
+  token after this error to really jump to a token. With ECB 1.90 this bug has
+  been gone (Klaus).
+
+* Fixed a small bug in `ecb-add-all-buffers-to-history': If
+  `ecb-sort-history-items' is nil then now the most recently used buffers are
+  added to the top of the history, the seldom used buffers at the bottom.
+  Thanks to Stefan Reich�r <xsteve@riic.at>! (Klaus).
+
+* Now ECB displays at every start a "Tip of the day" in a dialog-box. This can
+  be switched off with option `ecb-tip-of-the-day'. There is also a new
+  command `ecb-show-tip-of-the-day' (Klaus).
+
+* New feature: Now the methods buffer is auto. expanded if the node related to
+  the current token in the edit-window is not visible (probably because its
+  parent is collapsed). See new options `ecb-auto-expand-token-tree' and
+  `ecb-expand-methods-switch-off-auto-expand' and the new comand
+  `ecb-toggle-auto-expand-token-tree' (Klaus).
+  
+* New command `ecb-expand-methods-nodes' which allows precisely expanding
+  tokens with a certain indentation-level. There are also two new related
+  options `ecb-methods-nodes-expand-spec' and
+  `ecb-methods-nodes-collapse-spec' (Klaus).
+
+* New command `ecb-expand-directory-nodes' which does the same for the
+  directories tree-buffer as the new command `ecb-expand-methods-nodes' for
+  the methods tree-buffer (Klaus).
+
+* Advicing `scroll-all-mode' so it works correct with ECB, means
+  `scroll-all-mode' scrolls only the windows of the edit-area, i.e. max. the
+  two edit-windows (Klaus).
+
+* Autom. preventing `winner-mode' from being activated as long as ECB is
+  running (Klaus).
+
+* The option ecb-source-file-regexps now works on a directory-base, which means
+  for each directory-regexp the files to display can be specified. Default is
+  an all-matching directory-regexp. Old saved values are autom. upgraded
+  (Klaus).
+
+* Rewritten the mechanism for storing customized window-sizes. See option
+  ecb-layout-window-sizes and the command ecb-store-window-sizes and
+  ecb-restore-window-sizes. Now the sizes are always saved as fractions of the
+  width (resp. height) of the ECB-frame, so the stored sizes are always
+  correct regardless of the current frame-size (Klaus).
+  Suggested and first implementation by Geert Ribbers
+  [geert.ribbers@realworld.nl]
+
+* Rewritten cache-mechanism for directories and sources:
+  Depending on the value of the option ecb-cache-directory-contents the
+  following is cached for a directory:
+  - The disk-contents of the directory means subdirs and files
+  - If ecb-show-sources-in-directories-buffer is nil (i.e. sources are
+    displayed in the extra ECB-sources-window) then also the complete
+    sources-buffer is cached. This results in a speed-boost for big-size
+    directories.
+  The cache of a directory is refreshed and actualized with a POWER-click onto
+  the related directory in the directories-buffer (s.b.) (Klaus)
+
+* Introduced a POWER-click (was SHIFT-click before) in the ECB-tree-windows -
+  see documentation of ecb-primary-secondary-mouse-buttons and see also the
+  online-help section "Usage of ECB --> Using the mouse" (Klaus).
+
+* Added new command 'ecb-toggle-compile-window': Toggle the visibility of the
+  compile-window of ECB (Klaus).
+
+* Now autom. (de)activating ECB via the options ecb-major-modes-activate and
+  ecb-major-modes-deactivate also works when opening files via dired (Klaus).
+
+* Added a complete new section "The layout-engine of ECB" to the online-help
+  which describes in detail how to program new layouts and new special
+  windows. This is for foreign packages which want to display own informations
+  in own special windows and synchronizing these windows with the edit-window
+  of ECB (a graphical debugger could be an example). Also a full working
+  example is added in the new file ecb-examples.el. (Klaus)
+
+* Fixed some bugs concerning the eshell-integration (Klaus):
+  + Synchronizing does not set the mark anymore
+  + No longer synchronizing after every command if current source resides in
+    the HOME directory.
+  + Redrawing the layout preserves the eshell-buffer in the compile-window.
+  + Standard emacs-hooks are not clobbered with ecb-eshell-functions if ECB is
+    not active.
+
+* Added online documentation for the eshell integration. See section
+  "Tips and tricks". (Klaus)
+
+* ECB now has a list of valid compilation buffers within the ECB menu. (Kevin)
+
+* Modified syntax-table for all tree-buffers with all paren, braces and
+  brackets handled as whitespace so for example no paren-matching takes place
+  (Klaus).
+
+* Speedbar is now integrated in ECB and can be used instead of the standard
+  ECB-directories buffer (or instead of all tree-buffers if you like :-). Most
+  of the important basic work has been done by Kevin A. Burton.
+
+  See new option 'ecb-use-speedbar-for-directories' and the node "Integrating
+  speedbar" in the online-help. (Klaus)
+
+  + Version-checking for correct speedbar version (>= 0.14beta1). For lower
+    versions ecb-use-speedbar-for-directories has no effect. (Klaus)
+  + ecb-speedbar and speedbar first loaded direct before drawing the layout
+    with integrated speedbar. (Klaus)
+  + The speedbar-commands speedbar, speedbar-get-focus are adviced during
+    running speedbar within ECB, so they behave in a senseful way. (Klaus)
+
+* Naming and managing of layouts has been changed! Now a layout is not longer
+  identified by an integer but by an arbitrary string! Example: The layout
+  with index 0 in ECB <= 1.80 is now named "left1" in ECB 1.90.
+
+  Therefore the name of the option 'ecb-layout-nr' has changed to
+  'ecb-layout-name'! See the docstring of 'ecb-layout-name' for the names of
+  all buildin layouts.
+
+  In this context also the type of ecb-show-sources-in-directories-buffer has
+  changed so it is now a list of layout-names where the sources should be
+  displayed in the directories window (or 'always/'never). Now every change of
+  the layout also checks the value of ecb-show-sources-in-directories-buffer.
+  
+  This change also introduces three new commands:
+  - ecb-change-layout: Change layouts by selecting a name
+  - ecb-delete-new-layout: Delete an user-created (by 'ecb-create-new-layout')
+    layout.
+  - ecb-show-layout-help: Displays the docstring of a layout which at least
+    for buildin layouts contains a picture of the outline of this layout.
+  All three commands offer TAB-completion for easy selecting a layout name.
+
+  ECB autom. upgrades the following options to theirs new names/types:
+  - ecb-layout-nr: The stored value is transformed to the new name of the
+    related layout and stored in 'ecb-layout-name'
+  - ecb-toggle-layout-sequence: The stored value is transformed to the new
+    type with layout-names instead of layout-numbers.
+  - ecb-major-modes-activate: The stored value is transformed to the new type
+    with layout-names instead of layout-numbers.
+  - ecb-layout-window-sizes: The stored value is transformed to the new type
+    with layout-names instead of layout-numbers.
+  - ecb-show-sources-in-directories-buffer: Reset to the new default value.
+  (Klaus)
+  
+* New or renamed hooks:
+  - ecb-redraw-layout-after-hook (new)
+  - ecb-redraw-layout-before-hook (new)
+  - ecb-hide-ecb-windows-after-hook (new)
+  - ecb-hide-ecb-windows-before-hook (was ecb-hide-ecb-windows-hook)
+  - ecb-show-ecb-windows-after-hook (new)
+  - ecb-show-ecb-windows-before-hook (was ecb-show-ecb-windows-hook)
+  Read the documentation! (Klaus)
+
+* Adding a new layout type "left-right" which allows the ECB-tree-windows to
+  be located at the left and the right side of the ECB-frame. See the new
+  layouts "leftright1", "leftright2" and "leftright3" for examples. Other
+  layouts of this type can be created or programmed very easy with
+  'ecb-create-newlayout' resp. the macro 'ecb-layout-define'. (Klaus)
+
+* Silencing the byte-compiler, i.e. byte-compilation of ECB should now be
+  warning free. If byte-compilation still throws warnings during
+  byte-compilation with 'ecb-byte-compile' (resp. using the Makefile or
+  make.bat) please send this to our mailing list. (Klaus)
+
+* ecb-eshell now recenters after command execution. (burton)
+
+* ecb-eshell now recenters if there are any window resizes.  This is done so
+  that the prompt is always at the bottom of the window. (burton)
+
+* ecb-eshell integration now protects against buffer-list modifications during
+  transparent eshell updates in the compile window.  In the past, if the eshell
+  was running, and you want from buffer "foo", to "bar", and then tries to go
+  back to "foo" the next entry in your buffer list is "*eshell*" so this would
+  break a lot of completion tools like 'switch-to-buffer.  (burton)
+
+* ECB now supports `ecb-enlarged-compilation-window-max-height' which can be
+  used for defining the max. height of the ecb-compile-window if enlarged by
+  `ecb-toggle-enlarged-compilation-window'. (burton)
+
+* Now ECB can be "autoloaded", i.e.
+  + ecb-activate,
+  + ecb-minor-mode,
+  + ecb-byte-compile and
+  + ecb-show-help
+  are autoload-able via '(autoload ...)' (Klaus)
+
+* Now ECB offers a command `ecb-create-new-layout' for interactively creating
+  new layouts "by example". Read the online-help. (Klaus)
+
+* Completely rewritten how to program new layouts. Now there is a new macro
+  `ecb-layout-define' which offers very easy programming of new layouts.
+  (Klaus).
+
+* Now the ECB-tree-buffers offer in their popup-menus a "Grep" and a "Grep
+  recursive" (= grep-find) command where you can perform an easy grep in every
+  directory without buffer-switching before. See also the new options
+  `ecb-grep-function' and `ecb-grep-find-function'. (Klaus)
+
+* Added 5 new hooks for the ECB tree-buffers:
+  + ecb-common-tree-buffer-after-create-hook
+  + ecb-directories-buffer-after-create-hook
+  + ecb-sources-buffer-after-create-hook
+  + ecb-methods-buffer-after-create-hook
+  + ecb-history-buffer-after-create-hook
+  These hooks are called directly after tree-buffer creation so they can be
+  used for example to add personal local keybindings either to all
+  tree-buffers (ecb-common-tree-buffer-after-create-hook) or just to a certain
+  tree-buffer. Please read the documentation. (Klaus)
+
+* Added two general hooks:
+  + ecb-before-activate-hook: Activate ECB only if all added hooks return not
+    nil
+  + ecb-before-deactivate-hook: Deactivate ECB only if all added hooks return
+    not nil
+  (Klaus)
+
+
 Version 1.80:
 -------------
 
-- ECB now available as a regular XEmacs-package (Klaus)
-
-- ECB now requires:
-  + Latest stable release of semantic: Author version 1.4
-  + Latest stable release of eieio: Author version 0.17
+* ECB now requires:
+  + Latest stable release of semantic: Version 1.4
+  + Latest stable release of eieio: Version 0.17
   ECB checks at start-time if the correct versions are available and if not
   ECB offers you to download and install them from within Emacs. After this
   you have only to restart Emacs and you are fine. (Klaus)
 
-- Byte compiling ECB either interactive with `ecb-byte-compile' or with the
+* Byte compiling ECB either interactive with `ecb-byte-compile' or with the
   supplied Makefile now checks also the versions of semantic and eieio.
   (Klaus)
 
-- ECB now displays the section "First steps" of the online-manual after
+* ECB now displays the section "First steps" of the online-manual after
   activating first time. (Klaus)
 
-- Now the adviced versions of `delete-window' and `delete-other-windows' can
+* Now the adviced versions of `delete-window' and `delete-other-windows' can
   also handle the optional WINDOW argument of the original versions correctly
   so the adviced versions now also work correct if called from program (Klaus).
 
-- New adviced window command: `delete-windows-on' now works correct with ECB.
+* New adviced window command: `delete-windows-on' now works correct with ECB.
   See `ecb-advice-window-functions'. (Klaus)
 
-- In the ECB-directories buffer now F4 adds a new source-path instead of F1.
+* In the ECB-directories buffer now F4 adds a new source-path instead of F1.
   That is because F1 is such an important key in many OS and tools (e.g. opens
   help in all windows-programs), so ECB should not hardly "rebind" it. (Klaus)
 
-- Enhancing the option 'ecb-window-sync': Now the synchronisation can take
+* Enhancing the option 'ecb-window-sync': Now the synchronisation can take
   place for all buffers which have a relation to files AND directories, i.e.
   now also for dired-buffers. But per default this is switched off, see the
   doc-string. (Klaus)
 
-- Now the ECB online help is available in the standard Info-format and also in
+* Now the ECB online help is available in the standard Info-format and also in
   HTML-format. With the new option 'ecb-show-help-format' you can choose which
   format is used by the function 'ecb-show-help'. (Klaus)
 
-- New feature and command: ecb-download-ecb. With this function you can
+* New feature and command: ecb-download-ecb. With this function you can
   download and install any arbitrary ECB-version from the ECB-website from
   within Emacs. This is especially usefull for upgrading to the latest
   version. (Klaus)
 
-- New debug mode for ECB which prints some debug informations in the message
+* New debug mode for ECB which prints some debug informations in the message
   buffer for certain critical operations with semantic-overlays/extends.
   New option 'ecb-debug-mode' (also available in the Help-menu of ECB).
   (Klaus)
 
-- Some default keybindings have changed; see `ecb-key-map'. (Klaus)
+* Some default keybindings have changed; see `ecb-key-map'. (Klaus)
 
-- New feature: Possibility to define a sequence of layouts with new option
+* New feature: Possibility to define a sequence of layouts with new option
   `ecb-toggle-layout-sequence' and toggle very fast between them via
   `ecb-toggle-layout'. Read the online-help section "Simulation a speedbar
   without an extra frame"! (Klaus).
 
-- Fixed: Now no empty tooltips are displayed if mouse moves over nodes in the
+* Fixed: Now no empty tooltips are displayed if mouse moves over nodes in the
   tree-buffers of ECB which can be displayed completely in the tree-window.
   (Klaus)
 
-- Two new hooks: ecb-hide-ecb-windows-hook and ecb-show-ecb-windows-hook. Read
+* Two new hooks: ecb-hide-ecb-windows-hook and ecb-show-ecb-windows-hook. Read
   the documentation. (Klaus)
   Suggested by Daniel Hegyi <daniel_hegyi@hotmail.com>
 
-- Fixed a bug: Sometimes there occurs a a "wrong-type-argument"-error (or
+* Fixed a bug: Sometimes there occurs a a "wrong-type-argument"-error (or
   "destroyed extent"-error with XEmacs) under some circumstances. Now ECB
   auto-reparses the buffer and after that ECB is in correct state again.
   (Klaus)
 
-- Two new options: ecb-major-modes-activate and ecb-major-modes-deactivate.
+* Two new options: ecb-major-modes-activate and ecb-major-modes-deactivate.
   Allow (de)activation of ECB on major-mode base. Instead of deactivation also
   just hiding the ECB-windows is possible. Read the docstrings. (Klaus)
   Suggested by Daniel Hegyi <daniel_hegyi@hotmail.com>
 
-- Redefining of the option 'ecb-compile-window-temporally-enlarge': Now you
+* Redefining of the option 'ecb-compile-window-temporally-enlarge': Now you
   can specify that the compile-window is auto. enlarged after selecting it and
   auto. shrinked after leaving it. Read the docstring! (Klaus)
   Suggested by Daniel Hegyi <daniel_hegyi@hotmail.com>
 
-- Much better and more powerful auto. upgrading-mechanism of incompatible or
+* Much better and more powerful auto. upgrading-mechanism of incompatible or
   renamed ECB-options to latest ECB-version. See the option
   ecb-auto-compatibility-check! (Klaus)
 
-- Fixed formatting of "Parent" nodes in token buffer. (Jesper)
+* Fixed formatting of "Parent" nodes in token buffer. (Jesper)
 
-- New option ecb-tree-RET-selects-edit-window: Possibility not to select the
+* New option ecb-tree-RET-selects-edit-window: Possibility not to select the
   edit-window of hitting RET in a tree-buffer; see the doc-string. There is
   also a new function ecb-toggle-RET-selects-edit-window which is bound to
   [C-t] in each tree-buffer. (Kevin A. Burton,  Klaus)
 
-- Fixed a bug in ecb-eshell.  If we are running with current buffer sync, and
+* Fixed a bug in ecb-eshell.  If we are running with current buffer sync, and
   there is garbage on the current line, when we change buffers this garbage will
   be executed which could result in a 'command not found' or even worse, a
   damaging command executed.  We now cleanse the command line prior to directory
   changed. (Kevin A. Burton) 
 
-- Fixed a bug in ecb-speedbar.  The speedbar was doing its own updating outside
+* Fixed a bug in ecb-speedbar.  The speedbar was doing its own updating outside
   of the ECB.  This means that if you were to change buffers in a frame outside
   of the ECB frame, the ECB's Speedbar would be updated to reflect a buffer not
   within the ECB.  We now disable Speedbar's automatic update and have ECB
   handle this.  (Kevin A. Burton) 
 
-- Better grouping of external methods, i.e. methods which are implemented
+* Better grouping of external methods, i.e. methods which are implemented
   outside the class-definition, like in C++, CLOS and EIEIO. Now this is done
   completely by semantic. (Klaus)
 
-- For application programmers using the tree-buffer library:
+* For application programmers using the tree-buffer library:
   + The function tree-buffer-create has a new argument NODE-DATA-EQUAL-FN. See
     the doc-string for a description (Klaus).
   + For each tree-buffer a special user-data-storage (for any arbitrary data)
 Version 1.70:
 -------------
 
-- New option ecb-bucket-token-display. See doc-string for details. (Klaus)
+* New option ecb-bucket-token-display. See doc-string for details. (Klaus)
 
-- Reorganisation of the faces used by ECB. The group 'ecb-face-options'
+* Reorganisation of the faces used by ECB. The group 'ecb-face-options'
   contains now all options which type is 'face (i.e. the defcustom's) and the
   group 'ecb-faces' contains all face-definition (the defface's). In addition
   it is now possible to change easily and fast the general face for ALL
   new faces 'ecb-default-general-face' and 'ecb-default-highlight-face' for
   further details. (Klaus).
 
-- Smarter incr. search in a tree-buffer with the [end]-key: If there are at
+* Smarter incr. search in a tree-buffer with the [end]-key: If there are at
   least two nodes with the same greatest common-prefix than every hit of
   [end] jumps to the next node with this common prefix. (Klaus)
 
-- New feature ecb-auto-compatibility-check: ECB checks on startup if the
+* New feature ecb-auto-compatibility-check: ECB checks on startup if the
   current value of an ECB-option OPT is not compatible with the type of OPT in
   current ECB-release. This is done during activation. If there are
   incompatible options ECB resets them to the default value of current ECB
   have been reset, inkl. their old-value (before the reset) and new-value
   (after the reset). (Klaus)
 
-- New feature ecb-tree-navigation-by-arrow: Smarter navigation in the
+* New feature ecb-tree-navigation-by-arrow: Smarter navigation in the
   tree-windows with left- and right-arrow key (Klaus).
   Thanks for the suggestion and a first implementation to Geert Ribbers
   <geert.ribbers@realworld.nl>!
 
-- New feature 'ecb-type-token-display'. See the doc-string of this new option
+* New feature 'ecb-type-token-display'. See the doc-string of this new option
   for a description. (Klaus)
 
-- Now the option 'ecb-post-process-semantic-tokenlist' has per default an
+* Now the option 'ecb-post-process-semantic-tokenlist' has per default an
   entry for emacs-lisp-mode, so for eieio-code the methods (defmethod) of a
   class are grouped with respect to the class they belong. The new default
   value of this option does this for c++- and eieio-code. (Klaus)
 
-- Now in the ECB-tree-buffers RETURN works like the primary button (already in
+* Now in the ECB-tree-buffers RETURN works like the primary button (already in
   previous versions) and C-RETURN works like the secondary button (new in
   version 1.70). For an explanation of primary and secondary see the option
   ecb-primary-secondary-mouse-buttons. (Klaus)
 
-- New feature: Now the token-display function can be defined separated for
+* New feature: Now the token-display function can be defined separated for
   each major-mode. Furthermore the token-display for C++ has enhanced,
   especially for template-classes (but template displaying is first available
   with semantic > version 14beta13!).
   For this the option ecb-token-display-function has been completely rewritten
   and is now incompatible with the old values before ECB 1.61. (Klaus)
 
-- Fixed a bug with mouse-avoidance-mode (only relevant for GNU Emacs 20.X)
+* Fixed a bug with mouse-avoidance-mode (only relevant for GNU Emacs 20.X)
   Klaus. 
 
-- New feature, ecb-select-edit-window-on-redraw.  Mostly used if you are running
+* New feature, ecb-select-edit-window-on-redraw.  Mostly used if you are running
   with ecb-redraw-layout-quickly and want to make sure you are always in the
   edit window. (Kevin)
 
-- New feature, ecb-auto-activate.  If non-nil we can start the ECB after Emacs
+* New feature, ecb-auto-activate.  If non-nil we can start the ECB after Emacs
   is started.  See `ecb-auto-activate' for more information.  (Kevin)
 
-- New package, ecb-cycle.el.  Supports cycling through all known compilation
+* New package, ecb-cycle.el.  Supports cycling through all known compilation
   buffers. (Kevin)
     + ecb-cycle-switch-to-compilation-buffer - switch to available compilation
       buffers.
     + ecb-cycle-through-compilation-buffers - cycle through all compilation
       buffers.
   
-- Much better performance of the directory and file-browser in ECB, especially
+* Much better performance of the directory and file-browser in ECB, especially
   for directories with a lot of entries (means ~ >1000, dependend on your
   machine and the net-connection in case of network-drives). See also the new
   feature: ecb-cache-directory-contents. (Klaus)
 
-- ecb-eshell now supports customization.  (Kevin)
+* ecb-eshell now supports customization.  (Kevin)
 
-- New feature: ecb-layout-always-operate-in-edit-window. Look at the
+* New feature: ecb-layout-always-operate-in-edit-window. Look at the
   documentation. (Kevin & Klaus)
 
-- Fixed a bug in `ecb-toggle-ecb-windows'.  For starters we weren't setting
+* Fixed a bug in `ecb-toggle-ecb-windows'.  For starters we weren't setting
   `ecb-window-hidden' when we redraw the layout.  This means that the ecb
   windows could be hidden but never shown.
   Other things:
   + ecb-windows-hidden now has documentation
   + we display status messages when we hide windows. (Kevin)
 
-- Fixed bug in `ecb-redraw-layout-quickly'.  If for come reason any of the ECB
+* Fixed bug in `ecb-redraw-layout-quickly'.  If for come reason any of the ECB
   windows are not alive, we do not return with a hard error.  Instead, we use
   the scratch buffer.  (Kevin)
 
-- New function ecb-toggle-enlarged-compilation-window allows users to expand and
+* New function ecb-toggle-enlarged-compilation-window allows users to expand and
   then contract the compilation window with a new key binding C-c . / (Kevin)
 
-- new option ecb-add-path-for-not-matching-files. Look at the documentation
+* new option ecb-add-path-for-not-matching-files. Look at the documentation
   (Klaus).
 
 Version 1.60:
 -------------
 
-- ecb-highlight-token-header-after-jump is now a boolean; which face is used
+* ecb-highlight-token-header-after-jump is now a boolean; which face is used
   for highlighting is defined in ecb-token-header-face. (Klaus)
 
-- New option 'ecb-post-process-semantic-tokenlist': Special postprocessing of
+* New option 'ecb-post-process-semantic-tokenlist': Special postprocessing of
   the semantic tokenlist for certain major-modes. This is usefull for
   c++-mode. Now with the default value of this option all methods in a
   c++-implementation-file (no class/method-declaration but only method
   implementations) are grouped with respect to the class they belong. (Klaus)
 
-- Now also with C++ Sources the method- and variable-protection is displayed
+* Now also with C++ Sources the method- and variable-protection is displayed
   correct in the ECB-method buffer (Klaus).
 
-- Fixed a bug which prevented ECB using the root path "/" on unix-like systems
+* Fixed a bug which prevented ECB using the root path "/" on unix-like systems
   as a source-path. (Klaus)
 
-- If a file via the standard-mechanisms of Emacs (e.g. find-file) is openend,
+* If a file via the standard-mechanisms of Emacs (e.g. find-file) is openend,
   then the auto. window synch (see `ecb-window-sync') has worked only correct
   if the new file is located in any of the paths in `ecb-source-path'. Now ECB
   adds the path of the new file at least temporally via `ecb-add-source-path'
   correct. ECB asks the user if the new path should saved also for future
   sessions. (Klaus)
 
-- Added ecb-redraw-layout-hooks so that code can be executed after we redraw the
+* Added ecb-redraw-layout-hooks so that code can be executed after we redraw the
   ecb layout.
 
-- New hook ecb-current-buffer-sync-hook allows developers to add code to be
+* New hook ecb-current-buffer-sync-hook allows developers to add code to be
   evaluated after the ECB is synchronized with the current buffer.
 
-- Now all faces used by ECB for highlighting and displaying it�s own stuff are
+* Now all faces used by ECB for highlighting and displaying it�s own stuff are
   customizable. See new group 'ecb-faces' (Klaus).
 
-- ECB is now fully prepared for Emacs 21. The new feature
+* ECB is now fully prepared for Emacs 21. The new feature
   `ecb-show-node-info-in-minibuffer' is implemented with the new 'help-echo
   property of Emacs 21, therefore the ugly `track-mouse' mechanism is not
   needed anymore with Emacs 21. (Klaus).
 
-- The options `ecb-show-node-name-in-minibuffer',
+* The options `ecb-show-node-name-in-minibuffer',
   `ecb-show-complete-file-name-in-minibuffer' and
   `ecb-show-file-info-in-minibuffer' are gone and have been replaced by one
   single new option `ecb-show-node-info-in-minibuffer' where you can define
   separately for every tree-buffer when and which node info should be
   displayed in the minibuffer (Klaus).
 
-- ecb-auto-expand-directory-tree now offers two options:
+* ecb-auto-expand-directory-tree now offers two options:
   - best: Expand always the best matching source-path for a file
   - first: Expand always the first matching source-path for a file (Klaus)
 
-- Fixed a bug in auto. expanding directories if a source-path has an alias.
+* Fixed a bug in auto. expanding directories if a source-path has an alias.
   (Klaus)
 
-- If mouse is moved over an alias in the directories buffer then the real path
+* If mouse is moved over an alias in the directories buffer then the real path
   is shown in the echo-area; see also 'ecb-show-node-info-in-minibuffer'
   (Klaus).
 
-- If mouse is moved over an history-entry then the full path is shown in the
+* If mouse is moved over an history-entry then the full path is shown in the
   echo-area so you can distinct better between two entries with the same name
   but with differnt pathes; see also 'ecb-show-node-info-in-minibuffer'
   (Klaus).
 
-- New option for the history: ecb-kill-buffer-clears-history defines if
+* New option for the history: ecb-kill-buffer-clears-history defines if
   `kill-buffer' should also remove the corresponding history entry. There are
   several options (Klaus).
 
 Version 1.52:
 -------------
 
-- Added EIEIO requirement to ECB.
+* Added EIEIO requirement to ECB.
 
 Version 1.51:
 -------------
 
-- Now the names of all ECB buffers begin with a SPC per default. (Klaus)
+* Now the names of all ECB buffers begin with a SPC per default. (Klaus)
 
-- ECB now can handle not only full but also partial buffer reparsing if done
+* ECB now can handle not only full but also partial buffer reparsing if done
   by semantic and other tools (e.g. JDE >= 2.2.9). The method buffer will
   always be uptodate if for a major-mode auto. reparsing after buffer changes
   is enabled (the auto. buffer reparsing itself is not an ECB feature but must
   be supplied by the major-mode, e.g. JDE). (Klaus)
 
-- Incremental node-search in the ECB-buffers now uses the value of
+* Incremental node-search in the ECB-buffers now uses the value of
   `case-fold-search'. (Klaus)
 
-- Complete new customization of the ECB-keybindings. The option
+* Complete new customization of the ECB-keybindings. The option
   `ecb-prefix-key' has been removed. There is one new option `ecb-key-map'
   where you can customize all keysettings of ECB (including a common
   prefixkey). (Klaus)
 
-- ecb-add-source-path and ecb-delete-source-path now ask if saving should be
+* ecb-add-source-path and ecb-delete-source-path now ask if saving should be
   done for future sessions (Klaus).
 
-- Added new navigator functionality. Makes it easy to go to the back and forward
+* Added new navigator functionality. Makes it easy to go to the back and forward
   in navigated tokens and buffers. See ecb-nav-goto-next and 
   ecb-nav-goto-previous. (Jesper)
 
-- Added an option to narrow the buffer to the token that is jumped to. See
+* Added an option to narrow the buffer to the token that is jumped to. See
   ecb-token-jump-narrow. (Jesper)
 
-- Fixed a small bug that placed the window start at the beginning of the token
+* Fixed a small bug that placed the window start at the beginning of the token
   instead of the beginning of the token line. (Jesper)
 
 Version 1.50:
 -------------
 
-- Fixed a minor bug that occured when de-activating ECB under XEmacs. (Jesper)
+* Fixed a minor bug that occured when de-activating ECB under XEmacs. (Jesper)
 
-- ecb-layout-window-sizes variable is now an association list, which makes it
+* ecb-layout-window-sizes variable is now an association list, which makes it
   easier to add and remove layouts. (Jesper)
 
-- Added a new layout (nr. 12). Thanks to Nick Cross
+* Added a new layout (nr. 12). Thanks to Nick Cross
   <nick.cross@prismtechnologies.com> for this layout.
 
-- Each source path can now have an alias that is displayed instead of the path
+* Each source path can now have an alias that is displayed instead of the path
   name in the directories buffer. (Jesper)
 
-- The history items can now use the buffer name instead of the file
+* The history items can now use the buffer name instead of the file
   name. Customizable with ecb-history-item-name. (Jesper)
 
-- When jumping to a token the window can be scrolled so that the token starts 
+* When jumping to a token the window can be scrolled so that the token starts 
   at the top or center of the window. This behaviour is customizable with
   the variable ecb-scroll-window-after-jump. (Jesper)
 
-- Fixed a bug when retrieving parent names for a token. (Jesper)
+* Fixed a bug when retrieving parent names for a token. (Jesper)
 
 + Now the option 'ecb-prefix-key' is customizable so you can define another
   prefix if there are conflicts with other minor-modes or packages (Klaus).
 Version 1.41:
 -------------
 
-- Fixed bug when clicking on token in the methods buffer in XEmacs.
+* Fixed bug when clicking on token in the methods buffer in XEmacs.
 
 Version 1.40:
 -------------
 
-- Tree-incremental-search in the ecb-windows now ignores all non interesting
+* Tree-incremental-search in the ecb-windows now ignores all non interesting
   stuff:
   + any leading spaces
   + expand/collapse-buttons: [+] resp. [-]
   This makes incremental-searching in a tree-buffer much faster and easier.
   (Klaus)
 
-- ECB now uses Semantic DB to find parents of types. (Jesper)
+* ECB now uses Semantic DB to find parents of types. (Jesper)
 
-- Long source paths in the directories buffer are now truncated at the
+* Long source paths in the directories buffer are now truncated at the
   beginning. Customizable with variable ecb-truncate-long-names. (Jesper)
 
-- Tokens can now be sorted by access. (Jesper)
+* Tokens can now be sorted by access. (Jesper)
 
-- Added a function to semantic-clean-token-hooks that just updates the token
+* Added a function to semantic-clean-token-hooks that just updates the token
   changed instead of re-building the entire token tree. (Jesper)
 
-- Implemented a token tree cache that stores recently opened buffers' token
+* Implemented a token tree cache that stores recently opened buffers' token
   trees. This makes the buffer switching much faster and also saves expanded
   nodes and window positions. The cache is unlimited at the moment. (Jesper)
 
-- Added a speedbar-like layout nr. 11. This is very useful (like also layout
+* Added a speedbar-like layout nr. 11. This is very useful (like also layout
   nr. 10) either for users with small screens or users which normally do not
   need/want the ECB-windows but sometimes browsing/selecting
   methods/variables. (Klaus)
 
-- Better extraction of tokens from current buffer. ECB now displays any token
+* Better extraction of tokens from current buffer. ECB now displays any token
   type in any order. (Jesper)
 
-- ECB now uses Semantic to display tokens in the methods buffer. (Jesper)
+* ECB now uses Semantic to display tokens in the methods buffer. (Jesper)
 
-- Much saver ecb-redraw-layout: Now the layout can be restored ALWAYS
+* Much saver ecb-redraw-layout: Now the layout can be restored ALWAYS
   regardless what messy thing has been done before. (Klaus)
 
-- New advice for 'other-window-for-scrolling', so all scroll-functions for the
+* New advice for 'other-window-for-scrolling', so all scroll-functions for the
   "other" window can also scroll the first edit-window if point stays in the
   second one. (Klaus)
 
-- ecb-toggle-ecb-windows now preserves the split, the split-amount, the buffer
+* ecb-toggle-ecb-windows now preserves the split, the split-amount, the buffer
   contents, the window starts and current point. (Klaus)
 
-- Some important changes in the ECB-layout concerning displaying compilation-
+* Some important changes in the ECB-layout concerning displaying compilation-
   and temp-buffers. (Klaus):
 
   + 'ecb-select-compile-window' has been gone.
     (XEmacs) and 'temp-buffer-resize-mode' (GNU Emacs) are now fully supported
     by ECB if no durable compilation-window is shown.
 
-- New function to toggle visibility of the ECB windows. Now it�s possible to
+* New function to toggle visibility of the ECB windows. Now it�s possible to
   hide all ECB windows without deactivating ECB (see 'ecb-toggle-ecb-windows')
   (Klaus).
 
-- ECB is now a global minor mode with it�s own menu "ECB" and it�s own keymap
+* ECB is now a global minor mode with it�s own menu "ECB" and it�s own keymap
   with prefix "C-c .". New function to (de)activate/toggle ECB with
   'ecb-minor-mode'. (Klaus)
 
-- Fixed a bug in highlighting current token in the method-buffer when
+* Fixed a bug in highlighting current token in the method-buffer when
   font-lock-mode is nil for the source-buffer. (Klaus)
 
-- New option for highlighting the method-header in the edit-window after
+* New option for highlighting the method-header in the edit-window after
   clicking onto the method in the method-window (like Speedbar does). (Klaus)
 
-- Function for automatically submitting a problem report to the ECB mailing
+* Function for automatically submitting a problem report to the ECB mailing
   list: ecb-submit-problem-report. (Klaus)
 
-- Now not only for method-highlighting an idle delay can be set but also for
+* Now not only for method-highlighting an idle delay can be set but also for
   synchronizing the ECB windows with current edit window (see option
   ecb-window-sync and ecb-window-sync-delay; default is 0.25 sec delay)
   (Klaus).
 
-- Smarter highlighting of current method (Klaus).
+* Smarter highlighting of current method (Klaus).
 
-- All tree-buffers now have as default-directory the current selected
+* All tree-buffers now have as default-directory the current selected
   directory in the directory buffer. So you can also open files with find-file
   etc. from within the tree-buffers. (Klaus).
 
 Version 1.32:
 -------------
 
-- Nil parent bug fixed. (Jesper)
+* Nil parent bug fixed. (Jesper)
 
-- New advices for find-file and switch-to-buffer (Klaus).
+* New advices for find-file and switch-to-buffer (Klaus).
 
-- Now possible to set an idle delay before the current method is highlighted;
+* Now possible to set an idle delay before the current method is highlighted;
   useful for slow machines but prevents also "jumping backward/forward" during
   scrolling within java-classes if point goes out of method-definition into
   class-definition. Default is an idle time of 0.25 seconds. (Klaus).
 Version 1.31:
 -------------
 
-- Parents (extends and implements) of the classes in the current buffer is now
+* Parents (extends and implements) of the classes in the current buffer is now
   shown in the methods buffer. (Jesper). Possibility to define a regexp which
   parents should not be shown. (Klaus).
 
-- Now displaying the complete node name in minibuffer with the track-mouse
+* Now displaying the complete node name in minibuffer with the track-mouse
   mechanism works also with mouse-avoidance-mode on; the mouse-avoidance will
   be deactivated as long ECB is activated and the node-name display-mechanism
   is on. This refers only to GNU Emacs! (Klaus)
 
-- Fixed a bug in 'ecb-current-buffer-sync' and 'ecb-redraw-layout' (Klaus)
+* Fixed a bug in 'ecb-current-buffer-sync' and 'ecb-redraw-layout' (Klaus)
 
-- Fixed a bug in loading semantic 1.3.3 or semantic 1.4 (Klaus)
+* Fixed a bug in loading semantic 1.3.3 or semantic 1.4 (Klaus)
 
 Version 1.30:
 -------------
 
-- If not all ECB-tree-windows of current layout are visible at redraw-time
+* If not all ECB-tree-windows of current layout are visible at redraw-time
   ('ecb-redraw-layout') then the redraw synchronizes the contents of the
   tree-windows with the source displayed in current edit-window (Klaus).
 
-- Added a section "Tips and Tricks" to the ECB online-help. (Klaus)
+* Added a section "Tips and Tricks" to the ECB online-help. (Klaus)
 
-- Added a new layout Nr. 10 for very small screen resolutions where all
+* Added a new layout Nr. 10 for very small screen resolutions where all
   squarecentimeters are needed for the editing itself. This layout only
   displays a method-window and a edit-window. (Klaus).
 
-- The messages displayed after moving the mouse over a node in a tree-buffer
+* The messages displayed after moving the mouse over a node in a tree-buffer
   do not longer wasting the log, means they will not be logged (Klaus).
 
-- ECB now also works with semantic >= 1.4 (Klaus).
+* ECB now also works with semantic >= 1.4 (Klaus).
 
-- Now the ecb-compile-window-height is also preserved after displaying
+* Now the ecb-compile-window-height is also preserved after displaying
   temp-buffers (e.g. help-buffers after C-h f) - if you want this. See the
   documentation of the option 'ecb-compile-window-temporally-enlarge'. (Klaus)
 
-- Added menu items for modification of the source paths in the directories
+* Added menu items for modification of the source paths in the directories
   buffer. (Jesper)
 
-- Added buttons to directories buffer. (Jesper)
+* Added buttons to directories buffer. (Jesper)
 
-- Mouse over files, methods etc. now work even if follow-mouse isn't
+* Mouse over files, methods etc. now work even if follow-mouse isn't
   activated (Jesper). ECB adds a more intelligent mouse tracking mechanism, so
   not only the mouse-over-node stuff of ECB works now very well and savely but
   also follow-mouse itself works better and saver as without activated ECB.
   (Klaus)
 
-- Popup menus now work in XEmacs. (Jesper)
+* Popup menus now work in XEmacs. (Jesper)
 
-- You can now specify paths with env-vars like $HOME in the option
+* You can now specify paths with env-vars like $HOME in the option
   `ecb-source-path'. (Klaus)
 
-- The user must now confirm if he tries to delete the ECB frame. If he wants
+* The user must now confirm if he tries to delete the ECB frame. If he wants
   to proceed then ECB will be first deactivated before deleting the frame.
   This works for all ways to delete a frame (shortcut, window-manager-button,
   ...). (Klaus)
 
-- ECB now optionally create its own frame when activated. See the new option
+* ECB now optionally create its own frame when activated. See the new option
   'ecb-new-ecb-frame'. (Klaus)
 
-- Intelligent recentering of tree-buffers now completely implemented without
+* Intelligent recentering of tree-buffers now completely implemented without
   the function 'recenter'. This means no flickering and flashing the whole
   frame anymore after each 'recenter'. Now the ECB display is stable like a
   rock :-) (Klaus)
 
-- Mouse over directories now shows directory path. (Jesper)
+* Mouse over directories now shows directory path. (Jesper)
 
-- Methods and variables with point are now highlighted. (Jesper)
+* Methods and variables with point are now highlighted. (Jesper)
 
-- ECB windows are now updated when saving new files and deleting files. (Jesper)
+* ECB windows are now updated when saving new files and deleting files. (Jesper)
 
-- incremental-search in every tree-buffer for easier and faster selecting
+* incremental-search in every tree-buffer for easier and faster selecting
   nodes with the keyboard (see new option `ecb-tree-incremental-search' and
   new function 'tree-buffer-incremental-node-search') for more details.
   (Klaus)
 
-- ecb-redraw-layout now restores both edit window buffers and the edit window
+* ecb-redraw-layout now restores both edit window buffers and the edit window
   start. (Jesper)
 
-- Spelling corrections. Thanks to Colin Marquardt
+* Spelling corrections. Thanks to Colin Marquardt
   <colin.marquardt@usa.alcatel.com> for spotting them.
 
-- Mode line prefixes can now be set individually for each ECB-buffer. There is
+* Mode line prefixes can now be set individually for each ECB-buffer. There is
   a default-prefix for each buffer but the user can also define a custom
   prefix or no prefix at all. (Jesper/Klaus)
 
-- Fixed small bug in directory tree that caused directories to be sorted by
+* Fixed small bug in directory tree that caused directories to be sorted by
   extension. (Jesper)
 
 Version 1.20 (2001-04-28):
 --------------------------
 
-- Now the ECB-buffers are intelligent in displaying nodes (Klaus):
+* Now the ECB-buffers are intelligent in displaying nodes (Klaus):
   + Expandable nodes: (e.g. a directory with it�s subdirectories). An
     ECB-tree-window now tries always to make visisble as much as possible of
     the subnodes of a node if a node is expanded (e.g. by clicking onto it�s
   + Other nodes: A ECB-tree-window is always best filled, means no empty lines
     if there are enough lines to fill the whole window.
 
-- The source file is only parsed if the ECB methods window is visible
+* The source file is only parsed if the ECB methods window is visible
   (Jesper).
 
-- The methods buffer now show fields of EIEIO classes. Only works with
+* The methods buffer now show fields of EIEIO classes. Only works with
   semantic 1.4. Thanks to Eric M. Ludlam <eric@siege-engine.com> for
   this patch.
 
-- Now all adviced functions behave only special in the ECB-frame. In each other
+* Now all adviced functions behave only special in the ECB-frame. In each other
   frame they behave exactly like the not adviced functions. (Klaus)
 
-- Fix "invalid method-buffer"-bug (Klaus, with a lot of help by Eric Ludlam
+* Fix "invalid method-buffer"-bug (Klaus, with a lot of help by Eric Ludlam
   and David Ponce).
 
-- Source files can now be sorted by name, extension or not sorted at all
+* Source files can now be sorted by name, extension or not sorted at all
   (Jesper).
 
-- Now you can precisely define by an exclude and include regexp which files
+* Now you can precisely define by an exclude and include regexp which files
   should be displayed by ECB. (Jesper).
 
-- Jumping to a method/variable from the ECB-method buffer now sets the mark so
+* Jumping to a method/variable from the ECB-method buffer now sets the mark so
   the user can easily jump back (see `ecb-method-jump-sets-mark'). (Klaus)
 
-- Now you can define a primary and a secondary mouse-button for ECB. See the
+* Now you can define a primary and a secondary mouse-button for ECB. See the
   new variable `ecb-primary-secondary-mouse-buttons'.
   Note: The name of the option 'ecb-left-mouse-jump-destination' has been
   changed to `ecb-primary-mouse-jump-destination'!
 
-- Now ECB is really ediff-friendly: During ediff is active the advices of ECB
+* Now ECB is really ediff-friendly: During ediff is active the advices of ECB
   are temporally deactivated! (Klaus)
 
-- Now all tree-buffers (ECB-buffers) are read-only (Klaus)!
+* Now all tree-buffers (ECB-buffers) are read-only (Klaus)!
 
-- Better implementation of advising the functions. Now all adviceable
+* Better implementation of advising the functions. Now all adviceable
   functions are completely independent from each other (Klaus)!
 
-- Mon Apr 2 21:20:34 2001 (burton@relativity.yi.org): merge my modeline
+* Mon Apr 2 21:20:34 2001 (burton@relativity.yi.org): merge my modeline
   additions... this removes the redundant modeline info and shows important
   information.
 
-- Added new option `ecb-advice-window-functions'. Enabling the intelligent
+* Added new option `ecb-advice-window-functions'. Enabling the intelligent
   window functions via customize. No hook hacking necessary anymore!
   Now the intelligent window functions are implemented by advicing (klaus).
 
-- Better online help display (Klaus).
+* Better online help display (Klaus).
 
-- Added new option 'ecb-primary-mouse-jump-destination' (thanks to David Hay
+* Added new option 'ecb-primary-mouse-jump-destination' (thanks to David Hay
   for suggestion <David.Hay@requisite.com>.
 
-- Adviced 'other-window' acts now exactly like the original but always related
+* Adviced 'other-window' acts now exactly like the original but always related
   to 'ecb-other-window-jump-behavior' (klaus)!
 
-- Fixed bug with 'ecb-compile-window-height'. Now ECB has always the correct
+* Fixed bug with 'ecb-compile-window-height'. Now ECB has always the correct
   compile-window height after compilation-output (compile, grep etc.)
 
-- New option 'ecb-compile-window-temporally-enlarge'. Allowing
+* New option 'ecb-compile-window-temporally-enlarge'. Allowing
   Emacs-compilation to enlarge the ECB-compile-window temporally.
 
 Version 1.10 (2001-03-25):
 --------------------------
 
-- Automatic expansion of the directory tree.
+* Automatic expansion of the directory tree.
 
-- Method parsing is now recursive, so that for example inner classes
+* Method parsing is now recursive, so that for example inner classes
   in Java are shown in the methods buffer.
 
-- Variables are now shown in the methods buffer.
+* Variables are now shown in the methods buffer.
 
-- Selected files and directories now use the secondary-selection
+* Selected files and directories now use the secondary-selection
   face. Thanks to Kevin A. Burton <burton@relativity.yi.org> for this
   patch.
 
-- Fixed some issues with XEmacs. Thanks to Colin Marquardt
+* Fixed some issues with XEmacs. Thanks to Colin Marquardt
   <colin.marquardt@usa.alcatel.com> for this.
 
-- Fixed bug with truncating lines in tree-buffer.el.
+* Fixed bug with truncating lines in tree-buffer.el.
 
-- The methods buffer can now be automatically updated when the source
+* The methods buffer can now be automatically updated when the source
   file is saved.
 
-- Help text is available with "ecb-show-help".
+* Help text is available with "ecb-show-help".
 
-- Moving the mouse over a node shows the name in the
+* Moving the mouse over a node shows the name in the
   mini-buffer. Currently this only works when follow-mouse is
   activated.
 
 Version 1.0 (2001-03-17):
 -------------------------
 
-- Changed name from JCB to ECB and prefix from "jde-jcb-" to "ecb-".
+* Changed name from JCB to ECB and prefix from "jde-jcb-" to "ecb-".
 
-- Works with semantic 1.3.1 and higher.
+* Works with semantic 1.3.1 and higher.
 
-- Fixed a couple of bugs when creating and deleting files.
+* Fixed a couple of bugs when creating and deleting files.
 
-- Grouped customization variables.
+* Grouped customization variables.
 
 Contributed by Klaus Berndl <klaus.berndl@sdm.de>:
 
-- A lot of intelligent ECB window-functions (e.g. ecb-delete-window) which
+* A lot of intelligent ECB window-functions (e.g. ecb-delete-window) which
   gives you the feeling as if the edit-window is the only window of the ECB
   frame.
 
-- New layout functionality.
+* New layout functionality.
 
-- The history buffer can optionally be sorted and also cleared.
+* The history buffer can optionally be sorted and also cleared.
 
-- The package expanded symbol can optionally be placed before the package name.
+* The package expanded symbol can optionally be placed before the package name.
 
-- Syntax highlighting of the methods buffer.
+* Syntax highlighting of the methods buffer.
 
-- Show argument names and return type in the methods buffer.
+* Show argument names and return type in the methods buffer.
 
-- History clear function: ecb-clear-history.
+* History clear function: ecb-clear-history.
 
-- Added pop-up menu to the history buffer.
+* Added pop-up menu to the history buffer.
 
-- Fixed edit buffer sync bug.
+* Fixed edit buffer sync bug.
 
 Version 0.04 (2000-11-07):
 --------------------------
 
-- Keyboard navigation in JCB buffers. Use Return to select and Tab to expand.
+* Keyboard navigation in JCB buffers. Use Return to select and Tab to expand.
 
-- Tree view of packages.
+* Tree view of packages.
 
-- Class files can be viewed in the packages buffer.
+* Class files can be viewed in the packages buffer.
 
-- Better handling of mouse events.
+* Better handling of mouse events.
 
-- Automatic update of the packages buffer.
+* Automatic update of the packages buffer.
 
-- Added pop-up menus to the packages and classes buffers. They are activated 
+* Added pop-up menus to the packages and classes buffers. They are activated 
   with mouse button 3 (right button).
 
-- Added method sorting. Thanks to Brian Anderson <brian.anderson@luna.com> 
+* Added method sorting. Thanks to Brian Anderson <brian.anderson@luna.com> 
   for this improvement.
 
 Version 0.03 (2000-07-28):
 --------------------------
 
-- Fixed naming of variables.
+* Fixed naming of variables.
 
-- Fixed license and copyright comments.
+* Fixed license and copyright comments.
 
-- Fixed class file regular expression bug. 
+* Fixed class file regular expression bug. 
   Thanks to Jim Loverde <loverde@str.com> for finding it.
 
-- Added three new layouts.
+* Added three new layouts.
 
-- The JCB buffers can now be (almost) synchronized with the edit window.
+* The JCB buffers can now be (almost) synchronized with the edit window.
 
-- When clicking on a class or method using mouse button 2, it will be loaded
+* When clicking on a class or method using mouse button 2, it will be loaded
   into another window. A new customization variable was added for this.
 
-- Minor changes. Thanks to Jim for his suggestions.
+* Minor changes. Thanks to Jim for his suggestions.
 
-- Removed the "jde-jcb-window-skips-from-methods-buffer" and 
+* Removed the "jde-jcb-window-skips-from-methods-buffer" and 
   "jde-jcb-window-skips-from-history-buffer" customization variables.
 
 Version 0.02 (2000-07-15):
 --------------------------
 
-- Changed prefix from "jcb-" to "jde-jcb-". This will cause JCB customization 
+* Changed prefix from "jcb-" to "jde-jcb-". This will cause JCB customization 
   variables to be saved in JDE project files.
 
-- Lists and parses non-Java file types. Currently the C and Lisp parsers from 
+* Lists and parses non-Java file types. Currently the C and Lisp parsers from 
   semantic-ex.el are used.
 
-- History buffer implemented.
+* History buffer implemented.
 
-- Layout function implement. Thanks to Jim Loverde <loverde@str.com> for 
+* Layout function implement. Thanks to Jim Loverde <loverde@str.com> for 
   helping out with this.
 
-- Packages matching a regular expression can be excluded from the packages 
+* Packages matching a regular expression can be excluded from the packages 
   buffer. Thanks to Mark Gibson <mark@markg.co.uk> for this feature.
 
 Version 0.01 (2000-07-08):
 --------------------------
 
-- Initial version.
+* Initial version.
 
 

File Makefile.upstream

 # This Makefile byte-compiles the ECB lisp files and generates online-help.
 
+# $Id$
+
 # ========================================================================
 # User configurable section
 
 # Define here the correct path to your Emacs or XEmacs binary
 EMACS=emacs
 
-# Set here the load-path of the semantic-version and eieio-version loaded
-# into your Emacs. If you use JDE then add also the path to the lisp
-# directory of JDE. (use always forward-slashes as directory-separator even
+# If semantic and eieio are added to load-path within some elisp-statements
+# in the Emacs initialisation-files (e.g. .emacs or site-start.el) then set
+# here again the load-path of the semantic-version and eieio-version loaded
+# into your Emacs (use always FORWARD-SLASHES as directory-separator even
 # with MS Windows systems). Make sure you compile ECB with the semantic-
-# and eieio-, (and jde-) version you load into Emacs!
-LOADPATH=../semantic ../eieio ../jde/lisp
+# and eieio-version you load into Emacs!
+
+# If you are using XEmacs with already installed xemacs-packages for
+# semantic and eieio or if you are using a file subdirs.el with GNU Emacs
+# which adds semantic and eieio then there is NO need to set the load-path
+# for semantic or eieio.
+SEMANTIC=
+EIEIO=
+
+# You can set here more load-paths to arbitrary packages if you want. But
+# this is really not necessary!
+LOADPATH=
 
 # Two ways to build ECB:
 # - Call "make" to byte-compile the ECB. You can savely ignore the messages.
-# - Or call "make LOADPATH=<your loadpath> EMACS=<path to emacs binary>" if
-#   you want to set a different LOADPATH and or Emacs-binary and you do not
-#   want edit the makefile.
+# - Or call
+#
+#      make EMACS="path/to/emacs"
+#
+#      or
+#
+#      make SEMANTIC="path/to/semantic" EIEIO="path/to/eieio" \
+#           EMACS="path/to/emacs"
+#
+#   if you want to set either different load-pathes or Emacs-binary and
+#   you do not want edit the Makefile. Do not forget quoting the arguments
+#   if they contain spaces!
+#
+# If there are any warning messages during byte-compilation (normally there
+# are not any) you can savely ignore them!
 
 
 # ------------------------------------------------------------------------
 # not available let the related setting X empty! NOTE: For generating the
 # PDF-format you will need an installed TeX and Ghostscript!
 MAKEINFO=/usr/bin/makeinfo
-TEXI2DVI=/D/Programme/Tools/tex/texmf/miktex/bin/texi2dvi
+TEXI2DVI=/C/Programme/texmf/miktex/bin/texi2dvi
 # You need either the dvipdfm-tool
-DVIPDFM=/D/Programme/Tools/tex/texmf/miktex/bin/dvipdfm
+#DVIPDFM=/C/Programme/texmf/miktex/bin/dvipdfm
+DVIPDFM=
 # or the tools dvips and ps2pdf. If dvipdfm is available the Makefile uses
 # this one!
-DVIPS=/D/Programme/Tools/tex/texmf/miktex/bin/dvips
-PS2PDF=/D/home/bin/ps2pdf
+DVIPS=/C/Programme/texmf/miktex/bin/dvips
+PS2PDF=/C/home/bin/ps2pdf
 
-# To generate the online-formats just call "make online-help"
+# To generate the online-formats just call "make online-help" for info- and
+# HTML-format and "make pdf" for PDF-format.
 
 # ------------------------------------------------------------------------
 # Installing the info online-help in the Top-directory of (X)Emacs-info
 
 # Set here the path of the info subdirectory of your (X)Emacs installation
 # which contains the dir file.
-EMACSINFOPATH=/D/Programme/Tools/Editor/emacs-21.2/info
+EMACSINFOPATH=/C/Programme/emacs-21/info
 
 # If you want to install the info-format of the online-help in the
 # Top-directory of the info-directory of (X)Emacs (see above EMACSINFOPATH)
 
 # $Id$
 
+# For the ECB-maintainers: Change the version-number here and not
+# elsewhere!
+ecb_VERSION=1.91.1
+
+
 RM=rm -f
 CP=cp
+MV=mv -f
+MKDIR=mkdir -p
 
-ecb_LISP_EL=tree-buffer.el ecb-util.el ecb-mode-line.el ecb-help.el ecb-layout.el ecb-navigate.el ecb.el ecb-eshell.el ecb-cycle.el ecb-face.el ecb-compilation.el ecb-upgrade.el
+ecb_LISP_EL=tree-buffer.el ecb-util.el ecb-mode-line.el ecb-help.el \
+            ecb-layout.el ecb-layout-defs.el ecb-navigate.el ecb.el \
+            ecb-eshell.el ecb-cycle.el ecb-face.el ecb-compilation.el \
+            ecb-upgrade.el ecb-create-layout.el silentcomp.el \
+            ecb-speedbar.el ecb-examples.el ecb-tod.el
+
 ecb_LISP_ELC=$(ecb_LISP_EL:.el=.elc)
+
+ecb_ETC=HISTORY README RELEASE_NOTES Makefile make.bat
+
 ecb_TEXI=ecb.texi
+
 ecb_INFO=$(ecb_TEXI:.texi=.info)
 ecb_HTML=$(ecb_TEXI:.texi=.html)
+ecb_HTML_DIR=html-help
+ecb_INFO_DIR=info-help
+
 ecb_DVI=$(ecb_TEXI:.texi=.dvi)
 ecb_PS=$(ecb_TEXI:.texi=.ps)
 ecb_PDF=$(ecb_TEXI:.texi=.pdf)
 
+ecb_DISTRIB_FILES=$(ecb_LISP_EL) $(ecb_TEXI) $(ecb_ETC)
+
 ecb: $(ecb_LISP_EL)
 	@echo "Byte-compiling ECB with LOADPATH=${LOADPATH} ..."
 	@$(RM) $(ecb_LISP_ELC) ecb-compile-script
 	@echo "(add-to-list 'load-path nil)" > ecb-compile-script
+	@if test ! -z "${SEMANTIC}" ; then\
+	   echo "(add-to-list 'load-path \"$(SEMANTIC)\")" >> ecb-compile-script; \
+	fi
+	@if test ! -z "${EIEIO}" ; then\
+	   echo "(add-to-list 'load-path \"$(EIEIO)\")" >> ecb-compile-script; \
+	fi
 	@if test ! -z "${LOADPATH}" ; then\
 	   for loadpath in ${LOADPATH}; do \
 	      echo "(add-to-list 'load-path \"$$loadpath\")" >> ecb-compile-script; \
 	   done; \
 	fi
-	@echo "(if (locate-library \"jde\") (require 'jde))" >> ecb-compile-script
 	@echo "(require 'ecb)" >> ecb-compile-script
 	@echo "(setq debug-on-error t)" >> ecb-compile-script
 	$(EMACS) -batch -no-site-file -l ecb-compile-script --eval '(ecb-byte-compile t)'
 
 online-help: $(ecb_TEXI)
 	@if test -x "$(MAKEINFO)" ; then\
-	   $(RM) $(ecb_INFO) $(ecb_HTML); \
+	   $(RM) -R $(ecb_INFO_DIR) $(ecb_HTML_DIR); \
+	   $(MKDIR) $(ecb_INFO_DIR) $(ecb_HTML_DIR); \
 	   echo Generating info-format...; \
-	   $(MAKEINFO) --no-split $<; \
+	   $(MAKEINFO) --fill-column=78 $<; \
+	   $(MV) *.info* $(ecb_INFO_DIR); \
 	   echo Generating html-format...; \
-	   $(MAKEINFO) --no-split --html $<; \
+	   $(MAKEINFO) --html --output=$(ecb_HTML_DIR) $<; \
+	   for file in $(ecb_HTML_DIR)/*.html; do\
+	      $(MV) $$file tmpfile; \
+	      sed "s/index\\.html/$(ecb_HTML)/g" tmpfile > $$file; \
+	      $(RM) tmpfile; \
+	   done; \
+	   $(MV) $(ecb_HTML_DIR)/index.html $(ecb_HTML_DIR)/$(ecb_HTML); \
 	else \
 	   echo No info- and html-format generating because the tool; \
 	   echo - makeinfo in $(MAKEINFO); \
 	   echo is not available!; \
 	fi
+
+pdf: $(ecb_TEXI)
 	@if test -x "$(TEXI2DVI)" -a -x "$(DVIPDFM)"; then\
 	   $(RM) $(ecb_DVI) $(ecb_PDF); \
 	   echo Generating pdf-format with dvipdfm ...; \
 	elif test -x "$(TEXI2DVI)" -a -x "$(DVIPS)" -a -x "$(PS2PDF)" ; then\
 	   $(RM) $(ecb_DVI) $(ecb_PS) $(ecb_PDF); \
 	   echo Generating pdf-format with dvips and ps2pdf ...; \
-	   $(TEXI2DVI) --clean $<; \
+	   $(TEXI2DVI) --quiet --clean $<; \
 	   $(DVIPS) -Pcmz -q $(ecb_DVI) -o $(ecb_PS); \
 	   $(PS2PDF) $(ecb_PS); \
 	   $(RM) $(ecb_DVI) $(ecb_PS); \
 	fi
 
 
-install-help: $(ecb_INFO)
+install-help: $(ecb_INFO_DIR)/$(ecb_INFO)
 	@if test -x "$(INSTALLINFO)" -a -f "$(EMACSINFOPATH)/dir" ; then\
 	   echo Installing the Online-help in $(INSTALLINFO)...; \
-	   $(CP) $< $(EMACSINFOPATH); \
+	   $(CP) $(ecb_INFO_DIR)/*info* $(EMACSINFOPATH); \
 	   $(INSTALLINFO) $< $(EMACSINFOPATH)/dir; \
 	else \
 	   echo Can not install the online-help because either; \
 	   echo is not available!; \
 	fi
 
+
 clean:
 	@$(RM) $(ecb_LISP_ELC) ecb-compile-script
 
+# The targets below are only for maintaining the ECB-package.
+
+$(ecb_INFO_DIR)/$(ecb_INFO): online-help
+
+# updates RELEASE_NOTES, README, HISTORY, ecb.texi and ecb.el to the
+# version-number of $(ecb_VERSION).
+prepversion:
+	@$(MV) RELEASE_NOTES RELEASE_NOTES.tmp
+	@sed "1s/version.*/version $(ecb_VERSION)/" RELEASE_NOTES.tmp > RELEASE_NOTES
+	@$(RM) RELEASE_NOTES.tmp
+	@$(MV) README README.tmp
+	@sed "1s/version.*/version $(ecb_VERSION)/" README.tmp > README
+	@$(RM) README.tmp
+	@$(MV) HISTORY HISTORY.tmp
+	@sed "1s/Version.*/Version $(ecb_VERSION)/" HISTORY.tmp > HISTORY
+	@$(RM) HISTORY.tmp
+	@$(MV) ecb.el ecb.el.tmp
+	@sed "s/^(defconst ecb-version.*/(defconst ecb-version \"$(ecb_VERSION)\"/" ecb.el.tmp > ecb.el
+	@$(RM) ecb.el.tmp
+	@(echo "/@macro ecbver";		\
+	  echo "+";				\
+	  echo "c";				\
+	  echo "$(ecb_VERSION)";		\
+	  echo ".";				\
+	  echo "w";				\
+	  echo "q") | ed -s $(ecb_TEXI) 1> /dev/null
+
+
+# builds the distribution file $(ecb_VERSION).tar.gz
+distrib: $(ecb_INFO_DIR)/$(ecb_INFO) prepversion ecb
+	@$(RM) ecb-$(ecb_VERSION).tar.gz
+	@$(RM) -R ecb-$(ecb_VERSION)
+	@$(MKDIR) ecb-$(ecb_VERSION)
+	@$(CP) $(ecb_DISTRIB_FILES) ecb-$(ecb_VERSION)
+	@$(CP) -r $(ecb_INFO_DIR) ecb-$(ecb_VERSION)
+	@$(CP) -r $(ecb_HTML_DIR) ecb-$(ecb_VERSION)
+	@tar -cvzf ecb-$(ecb_VERSION).tar.gz ecb-$(ecb_VERSION)
+	@$(RM) -R ecb-$(ecb_VERSION)
+
 # End of Makefile
-Readme for the Emacs Code Browser (ECB) v1.80
----------------------------------------------
+Readme for the Emacs Code Browser (ECB) version 1.91.1
+------------------------------------------------------
 
 About
 -----
 
-This package contains a code browser for several languages for Emacs. For
-instructions on how to use the browser read the online-help (see "Usage"
-below). The latest version of this package can be found at:
+This package contains a code browser for several programming-languages for
+(X)Emacs. For instructions on how to use the browser read the online-help (see
+"Usage" below). The latest version of this package can be found at:
 
-http://home.swipnet.se/mayhem/ecb.html
+http://ecb.sourceforge.net
 
 
 Requirements
 ------------
 
 ECB requires the following packages being properly installed:
-- Semantic, author version 1.4 or higher
+- Semantic, author version between 1.4 and 1.4.9
   (http://cedet.sourceforge.net/semantic.shtml)
-- Eieio, author version 0.17 or higher
+- Eieio, author version between 0.17 and 0.17.9
   (http://cedet.sourceforge.net/eieio.shtml).
-- If Java code is edited the ECB works best when the JDE package
+
+- Optional: speedbar, author version 0.14beta1 or higher
+  (http://cedet.sourceforge.net/eieio.shtml)
+  This is only needed if the speedbar-integration of ECB is used
+- Optional: If Java code is edited the ECB works best when the JDE package
   (http://sunsite.auc.dk/jde) is installed.
 
 If you use XEmacs you must have the fsf-compat package installed (contains
 Installation
 ------------
 
-*IMPORTANT*: The following steps 1., 2., 3., 6. and 7. describe installation
+*IMPORTANT*: The following steps 1., 2., 3., 7. and 8. describe installation
 tasks if you got the archive in the format available at the ECB website. If
 you use XEmacs and got ECB as regular XEmacs-package (e.g. downloaded and
-installed by the net-installer of XEmacs) then the steps 1., 2., 3., 6. and 7.
+installed by the net-installer of XEmacs) then the steps 1., 2., 3., 7. and 8.
 are not necessary for you; please start reading at point 4.
 
 
-1. Unpack the ECB archive.
+1. Unpack the ECB archive (probably you have already done this :-)
 
 2. Install the required semantic- and eieio-version.
 
-   Note: ECB maybe requires a newer version of these libraries than shipped
-   with Emacs or XEmacs. You have to install exactly a version ECB requires
-   and also to make sure that the correct version is loaded into (X)Emacs!
+   *Note*: ECB maybe requires a newer version of these libraries than shipped
+   with (X)Emacs. You have to install exactly a version ECB requires and also
+   to make sure that the correct version is loaded into (X)Emacs!
 
-3. Add the new directory to your load-path.
+   But ECB checks auto. during start-time if the correct versions of semantic
+   and eieio are installed and gives you proper feedback.
 
-   You MUST add the ECB-install-directory to the 'load-path' either by
-   changing the 'load-path' variable directly in your .emacs or
-   site-lisp/site-start.el or by working with a file subdirs.el.
+3. Add the new ECB-directory to your `load-path' variable.
 
-   ATTENTION: ECB is NOT properly installed if it's directory is not added to
-   'load-path' and for example just loaded by
+   You *MUST* add the ECB-install-directory to the `load-path' either by
+   changing the `load-path' variable directly in your `.emacs' or
+   `site-lisp/site-start.el' or by working with a file `subdirs.el'.
 
-     (load-file "/path/to/ecb/ecb.el")
+   *ATTENTION*: ECB is NOT properly installed if it's directory is not added
+   to `load-path' and for example just loaded by
+
+      (load-file "/path/to/ecb/ecb.el")
 
    Do not do this!
 
-4. Add to your .emacs or site-start.el file the line:
-   (require 'ecb)
+4. Load ECB by adding code to your `.emacs':
 
-5. Restart Emacs.
+   If you want to load the complete ECB at (X)Emacs-loadtime (Advantage: All
+   ECB-options available after loading (X)Emacs. Disadvantage: Increasing
+   loadtime):
 
-ECB is now ready for use and can be activated by calling 'M-x ecb-activate'.
-Now you can either starting using ECB or you can do these optional
-installation steps:
+      (require 'ecb)
 
-6. Call `ecb-byte-compile'. Byte compiles ECB. You can safely ignore all
-   messages. (You can also bytecompile ECB from the command-line either by
-   using the Makefile or by using the batch-file make.bat. Just read the
-   comments in that file you choose.)
+   If you want to load the ECB first after starting it by `ecb-activate'
+   (Advantage: Fast loading. Disadvantage: ECB- and semantic-options first
+   available after starting ECB):
 
-7. Install the supplied ecb.info
+      (autoload 'ecb-activate "ecb" "Activate ECB" t)
+      (autoload 'ecb-byte-compile "ecb" "Byte-compile ECB" t)
+      (autoload 'ecb-show-help "ecb-help" "Show the online help of ECB" t)
 
-   The ECB distribution contains a file ecb.info which is the online-help of
-   ECB in Info-format. You can install this online help so it's available in
-   the Top-directory of Info. There are two ways to do this:
+5. Restart (X)Emacs.
 
-   * Use install-info (recommended):
-     1. Copy the file ecb.info into the info-directory of Emacs
-     2. Install it with the command install-info (if available on your system)
-        in the dir-file.
+ECB is now ready for use and can be activated by calling `M-x ecb-activate' or
+`ecb-minor-mode'. Now you can either starting using ECB or you can do these
+optional installation steps:
 
-     The supplied Makefile offers a target install-help which does both of
-     these steps. You have just to call "make install-help" with the correct
-     EMACSINFOPATH set (see the comment in Makefile). Here is an
-     example:
+6. Reading the online help with `ecb-show-help'
 
-        make EMACSINFOPATH=/path/to/emacs/info install-help
+   Maybe you are interested to read the online-help of ECB before first start.
 
-    * Manual Installation:
-      Copy the file ecb.info into the info-directory of Emacs and
-      modify the file dir manually.
+7. Calling `ecb-byte-compile'
 
-   But it doesn't matter if you do not execute this step (7.) because the
-   online help of ECB is always available though, see `ecb-show-help'!
+   This byte compiles ECB. You can safely ignore all messages. (You can also
+   bytecompile ECB from the command-line either by using the `Makefile' or by
+   using the batch-file `make.bat'. Just read the comments in that file you
+   choose.)
 
+8. Installing the supplied `ecb.info'
 
+   The ECB distribution contains a subdirectory "info-help" which contains the
+   online-help of ECB in Info-format. You can install this online help so it's
+   available in the Top-directory of Info. There are two ways to do this:
+
+   - Use "install-info" (recommended):
+
+     1. Copy the the files of the subdirectory "info-help" into the
+        info-directory of Emacs
+
+     2. Install the file "info-help/ecb.info" with the command "install-info"
+        (if available on your system) in the `dir'-file.
+
+     The supplied `Makefile' offers a target `install-help' which does both of
+     these steps. You have just to call `make install-help' with the correct
+     EMACSINFOPATH set (see the comment in `Makefile'). Here is an example:
+
+         make EMACSINFOPATH=/path/to/emacs/info install-help
+
+   - Manual Installation:
+
+     Copy the files of the subdirectory "info-help" into the info-directory of
+     Emacs and modify the file `dir' manually.
+
+   But it doesn't matter if you do not execute this step (8.) because the
+   online help of ECB is always available though, see `ecb-show-help'.
+
+   
 Usage
 -----
 

File RELEASE_NOTES

-This file contains some important release-notes for ECB 1.80
+This file contains some important release-notes for ECB version 1.91.1
 
 General:
 --------
 No special notes beyond the contents of README.
 
 
-Upgrading from any previous version:
-------------------------------------
+Upgrading from version 1.90:
+----------------------------
+
+No special notes beyond the contents of README.
+
+
+Upgrading from version 1.80:
+----------------------------
+
+The type or name of the following options has changed:
+
+- ecb-layout-nr: New name is ecb-layout-name
+- ecb-toggle-layout-sequence: New type
+- ecb-major-modes-activate: New type
+- ecb-layout-window-sizes: New type
+- ecb-show-sources-in-directories-buffer: New type
+- ecb-cache-directory-contents: New type
+- ecb-source-file-regexps: New type
+- ecb-show-ecb-windows-hook: New name is ecb-show-ecb-windows-before-hook
+- ecb-hide-ecb-windows-hook: New name is ecb-hide-ecb-windows-before-hook
+
+ECB autom. upgrades the values of these options to theirs new names/types!
+
+
+Upgrading from version < 1.80:
+------------------------------
 
 The type of the following options has changed:
 
 
 ECB has a new feature 'ecb-auto-compatibility-check' which enables a check for
 incompatible or renamed ECB-options at ECB startup. These options are then
-auto. upgraded to the new type or reset to the default-values of current
+autom. upgraded to the new type or reset to the default-values of current
 ECB-version if no upgrade is possible. All upgraded or reset options are
 displayed to the user with their old and new values!
 

File ecb-compilation.el

 
 ;;; Code:
 
-(defgroup ecb-compilation nil
+(eval-when-compile
+  (require 'silentcomp))
+
+(silentcomp-defun comint-check-proc)
+
+(require 'ecb-util)
+
+(defgroup ecb-compilation-content nil
   "Settings for all things displayed in the compile window of ECB."
   :group 'ecb
   :prefix "ecb-compilation-")
 
-(defcustom ecb-compilation-buffer-names (list ecb-eshell-buffer-name
-                                              "*Apropos*"
-                                              "*Help*"
-                                              "*Backtrace*"
-                                              "*shell*"
-                                              "*bsh*"
-                                              "*Messages*")
-  "*Additional buffer names that should be displayed in compilation
-window even if `compilation-buffer-p' says nil."
-  :group 'ecb-compilation
-  :type '(repeat (string :tag "Buffer name")))
+(defcustom ecb-compilation-buffer-names `(("*Calculator*" . nil)
+                                          ("*vc*" . nil)
+                                          ("*vc-diff*" . nil)
+                                          ("*Apropos*" . nil)
+                                          ,(if ecb-running-xemacs
+                                               '("\\*Help.*\\*" . t)
+                                              '("*Help*" . nil))
+                                          ("*Backtrace*" . nil)
+                                          ("*shell*" . nil)
+                                          ("*bsh*" . nil)
+                                          (,(if ecb-running-xemacs
+                                               " *Message-Log*"
+                                             "*Messages*") . nil))
+  "*Additional buffer names that should be displayed in the compilation
+window of ECB even if `compilation-buffer-p' says nil."
+  :group 'ecb-compilation-content
+  :group 'ecb-layout
+  :type '(repeat (cons (string :tag "Buffer name")
+                       (boolean :tag "Handled as regexp"))))
+
+(defvar ecb-compilation-buffer-names-internal nil
+  "This variable is for ECB internal use and can be used by ECB to add
+buffer-names to the set displayed in the compile-window. Type is the same as
+of option `ecb-compilation-buffer-names'")
+
+(defun ecb-compilation-buffer-names ()
+  "Return the set of buffer names which should be displayed in the
+compile-window of ECB."
+  (append ecb-compilation-buffer-names
+          ecb-compilation-buffer-names-internal))
+
+(defun ecb-compilation-registered-buffer-p (name)
+  "Check if name belongs to the set of buffers returned by
+`ecb-compilation-buffer-names'. If yes returns NAME."
+  (catch 'exit
+    (dolist (b (ecb-compilation-buffer-names))
+      (if (null (cdr b))
+          (if (string= name (car b))
+              (throw 'exit name))
+        (save-match-data
+          (if (string-match (car b) name)
+              (throw 'exit name))))
+      nil)))
+
+(defcustom ecb-compilation-major-modes (list 'eshell-mode 'compilation-mode)
+  "*Additional major-mode that should be displayed in the compilation
+window of ECB even if `compilation-buffer-p' says nil."
+  :group 'ecb-compilation-content
+  :group 'ecb-layout
+  :type '(repeat (symbol :tag "major-mode name")))
+
+(defvar ecb-compilation-major-modes-internal nil
+  "This variable is for ECB internal use and can be used by ECB to add
+  major-mode symbols to the set displayed in the compile-window.")
+
+(defun ecb-compilation-major-modes ()
+  "Return all major-mode symbols which should be displayed in the
+compile-window."
+  (append ecb-compilation-major-modes
+          ecb-compilation-major-modes-internal))
 
 (defun ecb-compilation-get-buffers()
   "Get all known compilation buffer names.  See `ecb-compilation-buffer-p'."
 
       (when (ecb-compilation-buffer-p buffer)
 
-        (add-to-list 'buffer-names (cons (buffer-name buffer) index) t)
+        (setq buffer-names
+              (append buffer-names
+                      (list (cons (buffer-name buffer) index))))
         
         (setq index (1+ index))))
 
     buffer-names))
-  
-(defun ecb-compilation-buffer-p(buffer)
+
+;; (ecb-compilation-registered-buffer-p "*Help: insert*")
+
+(defun ecb-compilation-buffer-p(buffer-or-name)
   "Test if the given buffer is a compilation buffer. Note that in this case we
-define 'compilation buffer' as a buffer that should ideally be displayed in
-the `ecb-compile-window'. This means that in some situations this might not be
-the result of a `compile-internal'. A good example would be the *Help* buffer
-or the `ecb-eshell-buffer-name'.
+define 'compilation buffer' as a buffer that should ideally be displayed in the
+`ecb-compile-window'. This means that in some situations this might not be the
+result of a `compile-internal'. A good example would be the *Help* buffer or the
+`ecb-eshell-buffer-name'.
 
 BUFFER can be the name of a buffer or a buffer-objekt.
 
-This function returns true if the name of BUFFER is either contained in
-`ecb-compilation-buffer-names' or if `compilation-buffer-p' returns true."
+This function is non-nil if the name of BUFFER is either contained in the list
+returned by the function `ecb-compilation-buffer-names', or its `major-mode'
+is contained in the list returned by the function
+`ecb-compilation-major-modes', or if `compilation-buffer-p' returns true."
 
-  (let ((buf (cond ((stringp buffer)
-                    (get-buffer buffer))
-                   ((bufferp buffer)
-                    buffer)
-                   (t
-                    nil))))
-    (if buf
-        (or (member (buffer-name buf) ecb-compilation-buffer-names)
-            (compilation-buffer-p buf)))))
+  ;;determine the best valid for the buffer.
+  (let ((buffer (cond ((stringp buffer-or-name)
+                       (get-buffer buffer-or-name))
+                      ((bufferp buffer-or-name)
+                       buffer-or-name)
+                      (t
+                       nil))))
 
-(provide 'ecb-compilation)
+    (when buffer
+
+      ;;test if this is a valid buffer by name.
+      (if (ecb-compilation-registered-buffer-p (buffer-name buffer))
+          t
+        ;;else test if this is a valid buffer by mode
+        (if (save-excursion
+              (set-buffer buffer)
+              (member major-mode (ecb-compilation-major-modes)))
+            t
+          ;;else test if this is a regular compilation buffer
+          (if (compilation-buffer-p buffer)
+              t
+            ;;else check if this is a comint buffer
+            (if (and (fboundp 'comint-check-proc)
+                     (comint-check-proc buffer))
+                t
+              ;;else it isn't a complication buffer
+              nil)))))))
+
+(defun ecb-compilation-update-menu()
+  "Create an install a menu that allows the user to navigate buffers that are
+valid ECB compilation buffers.  See `ecb-compilation-buffer-p' for more
+information about compilation buffers."
+
+  (let((submenu nil)
+       (buffers (ecb-compilation-get-buffers)))
+
+    (dolist(buffer buffers)
+      (setq submenu
+            (append submenu
+                    (list (vector (car buffer)
+                                  `(funcall (if (ecb-compile-window-live-p)
+                                                'switch-to-buffer
+                                              'switch-to-buffer-other-window)
+                                            ,(car buffer))
+                                    :active t)))))
+
+    ;;TODO: Klaus Berndl <klaus.berndl@sdm.de>: Seems not to work with Emacs 20.X
+    (easy-menu-change (list ecb-menu-name)
+                      "Compilation Buffers"
+                      submenu
+                      "Navigate")))
+
+
+(silentcomp-provide 'ecb-compilation)
 
 ;;; ecb-compilation.el ends here

File ecb-cycle.el

 ;; Author: Kevin A. Burton (burton@openprivacy.org)
 ;; Maintainer: Kevin A. Burton (burton@openprivacy.org)
 ;; Location: http://relativity.yi.org
-;; Keywords: 
-;; Version: 1.0.0
+;; Keywords:
+;; Version: 1.1.0
 
 ;; This file is [not yet] part of GNU Emacs.
 
 ;; - If possible, try to put fit the buffer so that the end of buffer is at the
 ;; end of the window... if necessary.
 
+;; What do we do if
+;;
+
 ;;; Code:
 
+(eval-when-compile
+  (require 'silentcomp))
+
 (require 'ecb-compilation)
 (require 'ecb-layout)
 
 
 (defun ecb-cycle-through-compilation-buffers(&optional choose-buffer)
   "Cycle through all compilation buffers currently open and display them
-within the compilation window `ecb-compile-window'. If the currently opened
-buffer within the compilation window is not a compilation buffer, we jump to
-the first compilation buffer. If not we try to loop through all compilation
-buffers. If we hit the end we go back to the beginning.
+within the compilation window `ecb-compile-window' \(if this window doesn't
+exist then an error is displayed). If the currently opened buffer within the
+compilation window is not a compilation buffer, we jump to the first
+compilation buffer. If not we try to loop through all compilation buffers. If
+we hit the end we go back to the beginning.
 
 If CHOOSE-BUFFER is not nil then the user will be prompted for the
 compilation-buffer to swtich to.
 
+Afterwards always the compile-window of ECB is selected.
+
 See also the option `ecb-layout-switch-to-compilation-window'! The difference
 is that this cycling-function offers only compilation-buffers in the sense of
 `ecb-compilation-buffer-p' whereas the adviced version of `switch-to-buffer'
 offers any buffer but switches to `ecb-compile-window' if a compilation-buffer!"
-  
+
   (interactive "P")
 
-  (if choose-buffer
-      (when (ecb-compile-window-live-p 'display-msg)
-        (let ((ecb-layout-switch-to-compilation-window '(switch-to-buffer)))
-          (switch-to-buffer (completing-read "ECB compilation buffer: "
-                                             (ecb-compilation-get-buffers)))))
-    (when (ecb-compile-window-live-p 'display-msg)
-      (let*((compilation-buffers (ecb-compilation-get-buffers))
-            (current-buffer (window-buffer ecb-compile-window))
-            (current-buffer-name (buffer-name current-buffer)))
-      
-        (when (null compilation-buffers)
-          (ecb-error "No compilation buffers"))
-      
-        (if (not (ecb-compilation-buffer-p current-buffer))
-          ;;if the current bufffer is not a compilation buffer, goto the first
-            ;;compilation buffer.
-          
-            (ecb-cycle-set-compilation-buffer 0 compilation-buffers)
-        
-          ;;else... we need to determine what buffer to display.
-        
-          (let(current index)
-          
-            (setq current (assoc current-buffer-name compilation-buffers))
-          
-            (setq index (cdr current))
-          
-            (if (= (1+ index) (length compilation-buffers))
-                ;;go back to the first buffer.
-                (ecb-cycle-set-compilation-buffer 0 compilation-buffers)
-              (ecb-cycle-set-compilation-buffer (1+ index)
-                                                compilation-buffers))))))))
+  (when (ecb-compile-window-live-p 'display-msg)
+    (ecb-with-original-functions
+
+     (select-window ecb-compile-window)
+
+     (if choose-buffer
+         (switch-to-buffer (completing-read "ECB compilation buffer: "
+                                            (ecb-compilation-get-buffers)))
+
+       (let* ((compilation-buffers (ecb-compilation-get-buffers))
+              (current-buffer (window-buffer ecb-compile-window))
+              (current-buffer-name (buffer-name current-buffer))
+              (current nil)
+              (index nil))
+         (when (null compilation-buffers)
+           (ecb-error "No compilation buffers available."))
+
+         (if (not (ecb-compilation-buffer-p current-buffer))
+             ;;if the current bufffer is not a compilation buffer, goto the first
+             ;;compilation buffer.
+
+             (ecb-cycle-set-compilation-buffer 0 compilation-buffers)
+
+           ;;else... we need to determine what buffer to display.
+
+           (setq current (assoc current-buffer-name compilation-buffers))
+
+           (setq index (cdr current))
+
+           (if (= (1+ index) (length compilation-buffers))
+               ;;go back to the first buffer.
+               (ecb-cycle-set-compilation-buffer 0 compilation-buffers)
+             (ecb-cycle-set-compilation-buffer (1+ index)
+                                               compilation-buffers))))))))
 
 (defun ecb-cycle-set-compilation-buffer(index compilation-buffers)
   "Set the buffer in the compilation window."
 
   (when (ecb-compile-window-live-p 'display-msg)
-    (let((buffer-name (car (nth index compilation-buffers)))
-         (ecb-layout-switch-to-compilation-window '(switch-to-buffer)))
+    (let ((buffer-name (car (nth index compilation-buffers)))
+          (ecb-layout-switch-to-compilation-window '(switch-to-buffer)))
       (message "ECB: setting compilation buffer %d/%d - %s"
                (1+ index) (length compilation-buffers) buffer-name)
       (switch-to-buffer buffer-name))))
 
-(provide 'ecb-cycle)
+(silentcomp-provide 'ecb-cycle)
 
 ;;; ecb-cycle.el ends here

File ecb-eshell.el

 ;; Maintainer: Kevin A. Burton (burton@openprivacy.org)
 ;; Location: http://relativity.yi.org
 ;; Keywords: 
-;; Version: 1.0.0
+;; Version: 1.1.0
 
 ;; This file is [not yet] part of GNU Emacs.
 
 
 ;;; History:
 
+;; Tue Jan 14 2003 14:53 PM (klaus.berndl@sdm.de):
+;; Swiched back to the use of visible-window during body of
+;; `ecb-do-if-buffer-visible-in-ecb-frame'.
+
+;; Mon Jan 13 2003 09:33 AM (burton@peace): Fixed a bug with
+;; ecb-eshell-shrink-if-necessary if it wasn't being run from within the
+;; correct buffer. Reworked some code to restore the old behavior prior to
+;; visible-window being used as a side effect from within a macro.
+
+;; Sun Jan 05 2003 04:05 PM (burton@universe): Fixed a bug with the way we
+;; handle the switch-to-buffer after a eshell sync.
+;;
+;;     we need to make sure that that the eshell buffer isn't at the top of the
+;;     buffer history list just because we implicity changed its directory and
+;;     switched to it.  It might not be a good idea in the long term to put it
+;;     all the way at the end of the history list but it is better than leaving
+;;     it at the top.
+
+;; - Mon Dec 30 2002 6:57 PM (klaus.berndl@sdm.de):
+;;   Added ecb-eshell-start. See docstring.
+;; - Son Dec 29 2002 9:43 AM (klaus.berndl@sdm.de):
+;;   Fixes some bugs and cleans up the code:
+;;   + ecb-eshell-save-buffer-history: In macros with a let-clause we must
+;;     generate the local variables with make-symbol!!
+;;   + ecb-eshell-current-buffer-sync:
+;;     - Now only executed if called in ecb-compile-window; see comment in the
+;;       function itself.
+;;     - Normalizing directories before comparing it
+;;   + ecb-eshell-cleanse: removed (end-of-buffer) because this always sets
+;;     the mark. This should not be used in elisp-programs!
+;;   + Added to all functions ecb-eshell-running-p
+;;   + Removed a lot of superfluous save-excursion, save-window-excursion
+;;     etc...
+;;   + Removed ecb-eshell-enlarge-when-starting; eshell is always implicit
+;;     started and selected by `ecb-eshell-goto-eshell' so the option
+;;     `ecb-eshell-enlarge-when-selecting' should be enough.
+;;   + Removed the ecb-eshell-buffer-name.
+;;   + Added new option ecb-eshell-synchronize
+;;   + Moved all add-hook into ecb-eshell-activate
+;;   + Added new function ecb-eshell-deactivate
+;;   + Made ecb-eshell-activate idempotent.
+;;   
 ;; - Mon Feb 04 2002 10:44 PM (burton@openprivacy.org): BUG: I think at certain
 ;; conditions, we might be able to get the eshell window to expand after we
 ;; automatically change directories.  I think this has to be:
 ;; is visible in a window, we always resynch.  If it is not visible then
 ;; ecb-eshell-goto-eshell will synch up when the user goes to the eshell buffer.
 
-;;; TODO:
-;;
-;; - Right now ecb-eshell doesn't work with dired.  Why?  Try to setup a hook
-;; and an ecb-eshell-dired-buffer-sync function that will take care of this.
-;;
-;; - BUG: when we exit the eshell, we enlarge the compilation buffer.... there
-;; is not needed since the buffer is about to exit.
-;;
-;;    - this might be fixed by using an eshell post command hook.
-;;
-;; - RFE: could we possibly find a way to avoid window enlargement if we launch
-;; a background process like 'xterm &'.  This would require determining what the
-;; command is and then making sure it is acceptable.
-;;
-;; - BUG: when ecb-eshell-enlarge-when-selecting is nil we need to recenter.  If
-;; we don't we just end up with the point in the middle of the eshell.
-;;
-;; - BUG: enable just-in-time current-buffer-sync... only execute if the current
-;; buffer's directlry is not equal to the ecb directory.
 
 ;;; Code:
 
+(eval-when-compile
+  (require 'silentcomp))
+
+(require 'ecb-util)
+(require 'ecb-compilation)
+
+(silentcomp-defvar eshell-buffer-name)
+(silentcomp-defun eshell)
+(silentcomp-defun eshell/cd)
+(silentcomp-defun eshell-send-input)
+(silentcomp-defun eshell-bol)
+
 (defgroup ecb-eshell nil
   "Settings for eshell integration within the ECB."
   :group 'ecb
   :prefix "ecb-eshell-")
 
 (defcustom ecb-eshell-enlarge-when-selecting t
-  "*Enlarge the `ecb-eshell-buffer-name' buffer if it has been selected."
-  :group 'ecb-eshell
-  :type 'boolean)
-
-(defcustom ecb-eshell-enlarge-when-starting t
-  "*When starting the eshell, enlarge the buffer if non-nil."
+  "*Enlarge the compile-window if it displays the eshell and
+if it is selected by `ecb-eshell-goto-eshell'."
   :group 'ecb-eshell
   :type 'boolean)
 
 (defcustom ecb-eshell-auto-activate nil
-  "*Startup the eshell when the ECB is activated."
+  "*Startup the eshell when the ECB is activated and display it in the
+compile-window. If current layout does not display a compile-window \(see
+`ecb-compile-window-height') then nothing is done."
   :group 'ecb-eshell
   :type 'boolean)
 
-(defvar ecb-eshell-buffer-name "*eshell*"
-  "Buffer name for the eshell.  We define it here so that we don't need to have
-the eshell loaded for ecb-eshell to function properly.")
+(defcustom ecb-eshell-synchronize t
+  "*Synchronize the eshell with the default-directory of current
+source-buffer. The synchronization is done by `ecb-eshell-current-buffer-sync'
+which can be called interactively but normally it is called autom. by the
+`ecb-current-buffer-sync-hook'."
+  :group 'ecb-eshell
+  :type 'boolean)
+
+(defvar ecb-eshell-pre-command-point nil
+  "Point in the buffer we are at before we executed a command.")
+
+(defvar ecb-eshell-pre-window-enlarged nil
+  "True if we enlarged the window before we executed a command.")
+
+(defun ecb-eshell-start ()
+  "Create an interactive Eshell buffer.
+This function is used instead of the original `eshell' cause of a mysterious
+behavior of XEmacs which always starts eshell in the edit-window even if
+called from the compile-window. This functions ensures that eshell is started
+in that window where this function is called from!"
+  (require 'eshell)
+  (ecb-with-original-functions
+   (display-buffer (get-buffer-create eshell-buffer-name)))
+  (eshell-mode))
 
 (defun ecb-eshell-current-buffer-sync()
-  "Synchronize the eshell with the current buffer.  This is only done if the
-eshell is currently visible."
+  "Synchronize the eshell with the current buffer. This is only done if the
+eshell is currently visible and if either this function is called
+interactively or `ecb-eshell-synchronize' is not nil."
   (interactive)
 
-  ;;only do this if the user is looking at the eshell buffer
+  (when (and (or ecb-eshell-synchronize (interactive-p))
+             (ecb-eshell-running-p))
 
-  (if (ecb-eshell-running-p)      
-      (let((source-buffer-directory nil)
-           (ecb-buffer-directory nil)
-           (window nil))
+    ;;only do this if the user is looking at the eshell buffer; for this we
+    ;;have the macro `ecb-do-if-buffer-visible-in-ecb-frame'.
 
-        ;;make sure we are clean.
-        (ecb-eshell-cleanse)
-        
-        ;;get copies of the current source directory.
-        
-        (setq source-buffer-directory default-directory)
+    (ecb-do-if-buffer-visible-in-ecb-frame 'eshell-buffer-name
+      
+      ;; here we can be sure that the eshell is visible in a window of
+      ;; `ecb-frame'.
 
-        (setq window (get-buffer-window ecb-eshell-buffer-name))