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
** 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
- 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
** 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
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
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
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
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
Then use the new option `ecb-history-make-buckets' to define regexps for
bucketizing all (indirect) buffers according their task-part in the
*** 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
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
*** `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
** 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
**** 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
**** 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
**** 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
*** 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
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
- 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/