Hi,

after a almost 4 years "tea-break" ;-) since the last release there comes a new ECB: 2.40 is released.

Go to http://ecb.sourceforge.net and get it.

What's new in the new release:
------------------------------

* Changes for ECB version 2.40

** ECB now requires full CEDET-suite being installed (at least version 1.0pre6)

   This means the support for the single packages semantic 1.4.X, eieio 0.X
   and speedbar 0.X is completely switched off.

   As a consequence ECB is no longer runnable as XEmacs-package via the
   package-manager of XEmacs. This is because CEDET is not available as
   XEmacs-package. Therefore ECB can also not be run as XEmacs-package. If
   CEDET will later become a XEmacs-package then probably ECB will come back
   as XEmacs-package. But in the meanwhile you have to install ECB "by hand".

   In general the current CEDET is much more powerful than older
   semantic-versions and ECB uses this power, especially the power of the
   semantic-analyzer.

** Completely reworked synchronizing mechanism of the ECB-windows

   Now there are separate options for synchronizing:

   - The basic ECB-windows (directories, sources, methods, history):
     `ecb-basic-buffer-sync', `ecb-basic-buffer-sync-delay' and
     `ecb-basic-buffer-sync-hook'.
   - The analyser-window (s.a.): `ecb-analyse-buffer-sync',
     `ecb-analyse-buffer-sync-delay' and `ecb-analyse-buffer-sync-hook'
   - The symboldef-window: `ecb-symboldef-buffer-sync',
     `ecb-symboldef-buffer-sync-delay' and `ecb-symboldef-buffer-sync-hook'
   - The integrated speedbar (if used): `ecb-speedbar-buffer-sync',
     `ecb-speedbar-buffer-sync-delay' and `ecb-speedbar-buffer-sync-hook'
   - The integrated eshell-support (if used): `ecb-eshell-buffer-sync',
     `ecb-eshell-buffer-sync-delay' and `ecb-eshell-buffer-sync-hook'

   But all options for synchronizing not the basic ECB-windows offer an
   additional choice 'basic: Then ECB uses the setting of the related option
   for the basic ECB-windows! Example: If you set `ecb-eshell-buffer-sync' to
   'basic then the value of `ecb-basic-buffer-sync' is used. If you set
   `ecb-eshell-buffer-sync-delay' to 'basic then the value of
   `ecb-basic-buffer-sync-delay' is used.

   This enhancement allows much more control for the synchronizing of certain
   windows.
    
** Better compatibility with CEDET >= 1.0pre6 and semantic >= 2.0pre6

*** The ECB-analyse-window now works very well with current semantic analyzer
    There is an own synchronize-option-set for the analyse-window:
    `ecb-analyse-buffer-sync', `ecb-analyse-buffer-sync-delay' and
    `ecb-analyse-buffer-sync-hook'. See the docstrings. The advantage is, that
    now the synchronizing of the analyse-window can be customized separately
    from the other ECB-windows. THis is important because for the
    analyse-window a higher delay (or even disabled auto.synchronizing)
    increases usability a lot. See the info-manual.
   
*** Fix compatibility about some changes of semantic concerning adopting
    external member-functions (as in C++ or eieio).

*** ECB now works very well with semantic-idle-scheduler-mode (s.a.)

** More user-responsible buffer-parsing based on the idle-mechanism of semantic

   Force a reparse of the semantic-source if the idle-scheduler is off.
   Generally ECB calls semantic to get the list of tags for current
   source-file of current edit-window. Per default ECB does never
   automatically force a reparse of the source-file - this is only done on
   demand by calling `ecb-rebuild-methods-buffer'. So per default the
   idle-scheduler of semantic is responsible for reparsing the source-file and
   when this is necessary (see `semantic-idle-scheduler-mode' for further
   details). This is the most user-resonsible and therefore the recommended
   approach.

   So it's strongly recommended to enable `semantic-idle-scheduler-mode'
   because then reparsing is always done during idle-time of Emacs and is also
   interruptable.

   But if this idle-scheduler is switched off then ECB offers now two
   possibilities (via `ecb-force-reparse-when-semantic-idle-scheduler-off'):
  
   - Not forcing itself a reparse when tags are needed by ECB: then a user
     declines knowingly Emacs/semantic-driven parsing of code when he/she
     switches off the idle-mode of semantic. This is the default behavior of
     ECB and the default value of this option. But this has also the
     consequence that the methods-buffer is only filed on demand via
     `ecb-rebuild-methods-buffer' (bound to \[C-c . r])!

     This means also in consequence that the methods-buffer is not
     automatically filled when a source-file is opened but first on demand
     after calling the command `ecb-rebuild-methods-buffer'!
    
   - Forcing a reparse when tags are needed: Then ECB forces semantic to parse
     the source-file when ECB needs tags to display. For this behavior this
     option has to be set to not nil.

   The term "forcing a reparse by semantic" is a simplification: ECB uses then
   the function `semantic-fetch-tags' which can decide that the cached tags
   are up-to-date so no real reparsing is necessary - but it can also run a
   full reparse and this reparse is not being done when Emacs is idle but
   immediatelly and not interruptable (as with the idle-scheduler of
   semantic), which can be quite annoying with big source-files.

** Complete reworked history-buffer

*** The history is able to deal with indirect-buffer entries.
    See new option `ecb-history-stick-indirect-buffers-to-basebuffer'.

*** The history can now be bucketized, see new `ecb-history-make-buckets'.
    This option allows to define several criterias for building buckets in the
    history-buffer all the history entries are sorted in (e.g. by major-mode,
    directory, file-extension or regular expressions).

    You can change the bucketizing type on the fly via the popup-menu of the
    history-window.

    The regular expressions bucketizing allows in combination with the
    indirect-buffer ability to work with something like "virtual folders"
    (well, "virtual folders" light).

    For example, there is a large project with a huge number of files, and
    there are various tasks in this project. So it could be convenient to
    group buffers according to various tasks. It could be fulfiled through
    using indirect buffers, for example like this

       task_1-aaa.pl
       task_1-bbb.c
       task_1-ccc.sh
       ...
       task_N-xxx.java
       task_N-ccc.sh

    This means create indirect buffers with a name-part which can be used for
    grouping together buffers with same name-part (here e.g. task_1- ...
    task_N-). In the example above you would create two indirect buffers for
    the filebuffer ccc.sh, one named task_1-ccc.sh, the other named
    task_N-ccc.sh).

    Then use the new option `ecb-history-make-buckets' to define regexps for
    bucketizing all (indirect) buffers according their task-part in the
    buffer-name.

*** There are now new faces for the history entries.
    See new options `ecb-history-bucket-node-face',
    `ecb-history-dead-buffer-face' and `ecb-history-indirect-buffer-face' and
    equaly named new faces.

** Sticky parent-node for all special ECB-windows of type tree-buffer

   Only for GNU Emacs: in the header-line of a tree-buffer always the
   current-parent node of the first visible node is displayed (if there is a
   parent node). This sticky node is exactly in the same manner clickable as
   all other nodes. There is a new option `ecb-tree-make-parent-node-sticky'
   which enabales/disables this new feature (default is enabled).

** Much saver advice-backbone for all advices needed by ECB

   This is not a user-visible change but enhances the stability of ECB by
   using now a new advice-backbone which guarantes that all ecb-advices are
   enabled rsp. disabled correctly depending on the surrounding context.
   Introducing four new macros `defecb-advice-set', `defecb-advice',
   `ecb-with-original-adviced-function-set' and `ecb-with-ecb-advice'.

** Changes in the version control support of ECB

*** ECB now also offers version control support only if the current vc-package is
    installed which offers support for modern vc-backends like subversion, git
    and monotone.
    Because vc-package lacks having a version number which can be checked ECB
    uses the following check if the right vc-package is installed:
    (locate-library "vc-svn") must return not nil.
  
*** New support for Git and Monotone as version-control systems
    If Git rsp. Monotone are supported by VC (means vc-git.el rsp. vc-mtn.el
    are distributed with Emacs) then ECB supports now both of them out of the
    box.

*** `ecb-vc-supported-backends' offers now also a accurate recompute-state function
    This is by offering `ecb-vc-recompute-state' as an alias to the function
    `vc-recompute-state' as state-check function for this option.

*** CVS-support is now fully compatible with Emacs 22 and 23

** New options rsp. commands

*** New command `ecb-goto-window-edit-by-smart-selection'

*** New command `ecb-goto-window-ecb-by-smart-selection'

*** New option `ecb-ignore-pop-up-frames'
    The new option is for customizing the behavior of ECB concerning
    `pop-up-frames'. It allows three value: Always, only when a permanent
    compile-window is used and never. This makes ECB fully compatible with the
    option `pop-up-frames'.

** Much better compatibility with current Emacs-versions

*** Full compatibility with Gnu Emacs 22

**** `balance-windows' now works with Emacs 22 too
     Cause of the completely new implemantation based on `window-tree' ECB
     uses a new machanism for enabling balance-windows to work properly with
     active ECB, so only the edit-windows are balanced but all ecb-windows
     remain on their sizes.

**** view-mode works also when a permanent compile-window is active
     This is especially important for displaying help and completions.

**** `master-mode' now works with Emacs 22

**** Grepping from ECB now uses per default `lgrep' rsp. `rgrep'.

***** The option `ecb-grep-function' defaults to `lgrep' if available
      If not it tries `igrep' or 'grep'.

***** `ecb-grep-find-function' has been renamed to `ecb-grep-recursive-function'
      It defaults to `rgrep' if available. If not it tries `igrep-find' or
      `grep-find'. The old value is automatically upgraded to the new option
      name.

**** Fixed problems with `ecb-fix-window-size' and active compile-windows
     With Emacs >= 22 the bugs of Emacs 21.3.X concerning `window-size-fixed'
     are fixed by the Emacs-team so now ECB supports this feature also with
     active compile-window.

**** Fixed small lack in the `switch-to-buffer-other-window'-advice.
     In Emacs 22 this command ignores the settings in `same-window-*'. Now ECB
     adopts this behavior also for its adviced version so the command works
     in a smart manner optimized for ECB.

*** Much better compatibility with forthcoming Gnu Emacs 23

**** Removed an annoying behavior which has set the mark hundred of times even
     when the user just moves the cursor.
   
     This comes from a change within Emacs 23 and the function `goto-line'
     which sets the mark in Emacs 23. This is not necessary when not used as
     command but as internal utility. Now ECB uses its own goto-line-function
     which does not set the mark --> No unnecessary mark settings with Emacs
     23.

**** The adviced `display-buffer' is now fully compatible with Emacs 23
     This means simply that you can work with ECB and Emacs 23 as you expect.

     Especially for displaying temporary buffers (like completion, help,
     compilation etc.) this means: Gnu Emacs 23 has a much smarter
     window-manager for displaying temporary buffers (like help-buffers) and
     "compile"-buffers. Therefore ECB uses completely the logic of Emacs 23
     and does exactly what Emacs 23 would do without activated ECB: This means
     mainly that the split-behavior depends on the settings of the options
     `split-width-threshold' and `split-height-threshold'.
     
     So if you are wondering why displaying temporary-buffers (like help,
     compile, grep, completion etc.) shows different behavior compared to
     deactivated ECB, then you probably have to adjust the values of the
     options `split-width-threshold' and `split-height-threshold' so they
     matches the sizes of the edit-area of ECB (at least nearly).

**** Fixing some incompatibilities with Emacs 23 concerning using temp. buffers

     The fit-window-to-buffer version of Emacs 23 can destroy windows and is
     therefore not useable within ECB - now ECB has its own - stolen and
     adapted from Emacs 22.
 
     In addition to this the internal help-window-manager of Emacs 23 (a.o.
     responsible for displaying *Help*-buffers) chooses sometimes dedicated
     windows (which is a problem because ECB uses dedicated windows for its
     own special ECB-windows) whereas Emacs 22 doesn't do this. Now ECB works
     smoothly with Emacs 23 help-system. Same for view-mode.

**** ediff-support of ECB is now also fully compatible with Emacs 23

     Emacs 23 uses dedicated windows: Now ECB can deal with frame-layouts where
     some windows are neither an ecb-, edit- nor a compile-window. Therefore
     now also single-frame mode (see `ediff-windows-setup-function') of ediff
     wirks smoothly with ECB.

**** All this together makes the new layout-engine of ECB much more robust so ECB
     works smoothly with forthcoming Emacs 23.
   
*** Better compatibility with XEmacs 21.4 and XEmacs 21.5

    Compatibility has been increased but is still not perfect. There is a need
    for much more tests with XEmacs. This can not been done by the
    ECB-maintainer because it costs too much effort. Any help from
    XEmacs-gurus using ECB for their daily work is very appreciated.

** ECB is able to work with indirect buffers if the base-buffer is filebased

   Now you can work with indirect-buffers as well as with normal file-buffers,
   i.e. indirect buffers are shown in the history´, their contents are
   displayed in the methods-buffer, the ECB-analyse-buffer works with them,
   autom. synchronizing the ECB-tree-buffers works for them etc...

** Deprecated, disabled and deactivated features:
   
*** The commands `ecb-download-ecb' and `ecb-download-semantic' are deactivated
    These features are not supported anymore. It costs two much effort to keep
    the needed links and mechanism to the sourceforge-download-area up to date.
    Please download the needed release-archives and extract and install as
    described in the shipped README rsp. INSTALL-files.

** Fixed Bugs

*** Fixed a bug which displayed empty tag-names in the methods-buffer when font-lock
    is not loaded.

*** Fixed a bug in the ping-functionality
    Now `ecb-ping-options' has a new default value which should operate well
    on most os.

*** Fixed a bug which prevented `ecb-rebuild-methods-buffer' from working
    correctly

*** Fixed a bug in the internals of the methods-filter which prevented
    all commands `ecb-methods-filter-*' from working correctly.

*** Fixed context-menu for VC-operations in the sources- and history-window
    Now all vc-commands are called interactively by ECB.

*** Fixed a bug with the ECB-navigation feature (C-c . p and C-c . n)
    Now the commands `ecb-nav-goto-next' and `ecb-nav-goto-previous' work
    saver and also for indirect buffers.

*** Fixed small bugs with synchronizing current tag with highlighted tag
    in the methods buffer. This was when the buffer was reparsed with
    `semantic-idle-scheduler-mode' or after saving the buffer.

*** Fixed a bug in `ecb-create-new-layout' which has displayed wrong modelines
    in the layout-creation frame.
   
*** Fixed a bug in `ecb-submit-problem-report' which prevented it from working


How to get it:
--------------

Go to the homepage at http://ecb.sourceforge.net and download it from
there.



General description of ECB:
---------------------------

ECB stands for "Emacs Code Browser".  While Emacs already has good
*editing* support for many modes, its *browsing* support is somewhat
lacking. That's where ECB comes in: it displays a number of informational
windows that allow for easy source code navigation and overview.

The informational windows can contain:

  - A directory tree,
  - a list of source files in the current directory (with full support and
     display of the VC-state),
  - a list of functions/classes/methods/... in the current file, (ECB uses the
    Semantic Bovinator, or Imenu, or etags, for getting this list so all
    languages supported by any of these tools are automatically supported by
    ECB too)
  - a history of recently visited files (groupable by several criterias),
  - the Speedbar and
  - output from compilation (the "*compilation*" window) and other modes like
    help, grep etc. or whatever a user defines to be displayed in this window.

As an added bonus, ECB makes sure to keep these informational windows visible,
even when you use C-x 1 and similar commands.

It goes without saying that you can configure the layout, ie which
informational windows should be displayed where. ECB comes with a number of
ready-made window layouts to choose from.

Here is an ascii-screenshot of what ECB offers you:

------------------------------------------------------------------
|              |                                                 |
| Directories  |                                                 |
|              |                                                 |
|--------------|                                                 |
|              |                                                 |
| Sources      |                                                 |
|              |                                                 |
|--------------|                   Edit-area                     |
|              |    (can be splitted in several edit-windows)    |
| Methods/Vars |                                                 |
|              |                                                 |
|--------------|                                                 |
|              |                                                 |
| History      |                                                 |
|              |                                                 |
------------------------------------------------------------------
|                                                                |
|                 Compilation-window (optional)                  |
|                                                                |
------------------------------------------------------------------

For more details go to http://ecb.sourceforge.net/


Enjoy,
Klaus