72
72
This is the user manual for ECB version @ecbver{}.
75
ECB stands for ``Emacs Code Browser'' and is a source-code-browser for
76
(X)Emacs. It is a global minor-mode which offers a
77
language-independent and complete IDE (Integrated Development
78
Environment) within one Emacs-frame. It displays a couple of windows
79
that can be used to browse directories, files and file-contents like
80
methods and variables. It supports source-code parsing for
81
semantic-supported languages like Java, C, C++, Elisp and Scheme as
82
well as for source-types supported ``only'' by imenu or etags (e.g.
83
perl, TeX, LaTeX etc.). In addition it offers (optional) a durable
84
``compile-window'' at the bottom of the frame which is used to display
85
all help-, grep-, compile- and etc.-output. The rest of the frame is
86
called the ``edit-area'' which can be divided in several (no limit)
87
edit-windows which are used for editing of sources. Deleting some of
88
the edit-windows does neither destroy the compile-window nor the
75
ECB stands for "Emacs Code Browser". While (X)Emacs already has good
76
@strong{editing} support for many modes, its @strong{browsing} support
77
is somewhat lacking. That's where ECB comes in: it displays a number
78
of informational windows that allow for easy source code navigation
81
The informational windows can contain:
84
@item A directory tree,
85
@item a list of source files in the current directory,
86
@item a list of functions/classes/methods/... in the current file,
87
(ECB uses the Semantic Bovinator, or Imenu, or etags, for getting this
88
list so all languages supported by any of these tools are
89
automatically supported by ECB too)
90
@item a history of recently visited files,
91
@item the Speedbar and
92
@item output from compilation (the "*compilation*" window) and other
93
modes like help, grep etc. or whatever a user defines to be displayed
97
As an added bonus, ECB makes sure to keep these informational windows
98
visible, even when you use @kbd{C-x 1} and similar commands.
100
It goes without saying that you can configure the layout, ie which
101
informational windows should be displayed where. ECB comes with a
102
number of ready-made window layouts to choose from.
2122
2168
all node-types are expanded/collapsed, i.e. the two options above
2123
2169
takes no effect for these files.
2125
@subsubsection Automatic expanding the ECB-methods-buffer
2171
@subsubsection Automatic expansion ot tags after buffer-parsing
2173
With the option @code{ecb-show-tags} you tell ECB how to display tags
2174
of a certain tag-class (@pxref{Customizing the display}). Among other
2175
things you can tell ECB that a certain tag-class should be combined
2176
under an expanded or collapsed bucket-node. But such a setting defines
2177
the expansion-state of such a bucket-node only direct afterwards the
2178
buffer has been (re)parsed, which can occur after opening a file,
2179
after autom. reparsing the buffer via semantic or after manually
2180
rebuilding the methods-buffer of ECB.
2182
The tag-class @code{type} (classes, interfaces, enumerations etc.) is
2183
divided into several subtypes by semantic. The subtypes are stings
2184
which names exactly if the tag with tag-class @code{type} is a class,
2185
an interface, an enumeration, a typedef etc. With the option
2186
@code{ecb-type-tag-expansion} you can tell ECB if these type-tags
2187
should be autom. expanded after (reparsing) a buffer (see above) or if
2188
they should be displayed collapsed - so all its members (methods,
2189
variables etc.) are hidden.
2191
@subsubsection Automatic expanding the ECB-methods-buffer for current tag
2127
2193
If the option @code{ecb-highlight-tag-with-point} is switched on, then
2128
then always that node in the method-buffer is highlighted which
2129
belongs to the current semantic-tag under point in the current active
2194
always that node in the method-buffer is highlighted which belongs to
2195
the current semantic-tag under point in the current active
2130
2196
edit-window. But if this node is invisible (probably because its
2131
2197
parent node is collapsed) then no node is highlighted if the auto.
2132
2198
expanding feature is switched off.
2143
2209
The autom. expanding feature is only available for semantic-sources!
2211
Previous versions of ECB have always fully expanded the whole tree in
2212
the Methods-buffer if the current tag in the source-buffer was not
2213
visible in the current tree - e.g. because the variables-bucket was
2214
collapsed or the containing type of a tag (e.g. the class of a method)
2215
was collapsed. So in most cases much more was expanded as needed to
2216
make the current tag visible.
2218
The mechanism of ECB 2.22 and higher only expands the needed parts of
2219
the tree-buffer to make the related node visible: First we try to
2220
highlight the current tag with current expansion-state of the
2221
Methods-buffer. If the node is not visible so the tag can not be
2222
highlighted then we go upstairs the ladder of type-tags the current
2223
tag belongs to (e.g. we expand successive the nodes of the whole
2224
class-hierachy of the current method-tag until the related node
2225
becomes visible). If there is no containing type for the current tag
2226
then the node of the tag is probably contained in a toplevel-bucket
2227
which is currently collapsed; in this case we expand only this
2228
bucket-node and try highlighting again. Only if this has still no
2229
success then we expand the full tree-buffer and try to highlight the
2232
There is another option
2233
@code{ecb-auto-expand-tag-tree-collapse-other}: If this option is set
2234
then auto. expanding the tag-tree collapses all not related nodes.
2235
This means that all nodes which have no relevance for the currently
2236
highlighted node will be collapsed, because they are not necessary to
2237
make the highlighted node visible. This feature is switched off by
2238
default because if always collapses the complete Methods-tree before
2239
the following highlighting of the node for the current tag expands the
2240
needed parts of the tree-buffer.
2145
2243
@node Customizing the display, Rebuilding the Methods, Expanding, The Methods buffer
2146
2244
@subsection Customizing the display of the Methods-buffer
2167
2265
@item ecb-show-tags
2168
Which semantic-tags (e.g. types, methods, variables etc.) should be
2169
displayed and should they be collapsed, flattened or expanded. Sorting
2266
With the option @code{ecb-show-tags} you specify how ECB should
2267
display the tags returned by the semantic parser. Semantic divides its
2268
tags in several so called @dfn{tag classes}. A tag-class is always a
2269
symbol and can be for example @code{type} (tags which represent a
2270
class@footnote{Do not confuse the term ``class'' in the context of a
2271
tag, which means the class of the tag and which is a semantic-term and
2272
a ``class'' in the context of an object oriented language like Java or
2273
C++! Normally the surrounding context sould be sufficient to
2274
understand which type of ``class'' is meant whenever the term
2275
``class'' is used in this manual.}, a interface, an enumeration etc.),
2276
@code{function} (tags which represent function or methods),
2277
@code{variable} (variables and attributes), @code{include}
2278
(import-statements) etc. There is no predefined superset of allowed
2279
tag-class-symbols because each language-parser can define its own
2280
tag-classes. But to get an overview of the most common tag-classes see
2281
the default value of the option @code{ecb-show-tags}.
2283
With the option @code{ecb-show-tags} you can now specify how ECB
2284
should display tags of a certain tag-class in a certain major-mode.
2285
You can tell ECB that all tags of a tag-class @code{X} should be
2286
displayed in an expanded bucket and all tags of a tag-class @code{Y}
2287
should be displayed in a collapsed bucket and all tags of a tag-class
2288
@code{Z} should be displayed flattened (means not contained in a
2289
expandable/collapsable bucket-node). These settings can be made
2290
separately for each major-mode but you can also define a
2291
default-display which takes effect when for a major-mode no special
2292
setting can be found in @code{ecb-show-tags}.
2294
For every tag-class you can tell ECB how the tags should be sorted.
2172
2296
@item ecb-font-lock-tags
2173
2297
@itemx ecb-type-tag-display
2233
2357
source-buffer because otherwise etags would not operate with the
2234
2358
latest contents!
2236
@node The ECB-layout, Hiding the ECB windows, The Methods buffer, Usage of ECB
2360
@node Filtering the tree-buffers, The ECB-layout, The Methods buffer, Usage of ECB
2361
@section Applying filters to the special ECB-tree-buffers
2364
To get a fast and good overlook of the contents of a tree-buffer ECB
2365
offers a filter-mechanism for the Directories-, Sources-, the History-
2366
and the Methods-buffer.
2369
* Filtering Directories:: Applying filters to the Directories-buffer
2370
* Filtering Sources:: Applying filters to the Sources--buffer
2371
* Filtering History:: Applying filters to the History-buffer
2372
* Filtering Methods:: Applying filters to the Methods-buffer
2375
@node Filtering Directories, Filtering Sources, Filtering the tree-buffers, Filtering the tree-buffers
2376
@subsection Applying filters to the Directories-buffer
2378
With the option @code{ecb-excluded-directories-regexps} certain
2379
directories can be excluded from being displayed in the
2380
directories-browser of ECB. This can be done by defining regular
2381
expressions. If the name of a directory matches at least one of the
2382
regexps of this option the directory is not displayed in the
2383
directories-tree-buffer.
2385
The option @code{ecb-sources-exclude-cvsignore} allows to exclude
2386
source-files from the sources-tree-buffer if their name is listed in a
2387
so called @file{.cvsignore}-file. This option is a list of regular
2388
expressions and if a directory-name matches at least one of these
2389
regexps then all files listed in the @file{.cvsignore}-file of this
2390
directory are not displayed in the sources-tree-buffer.
2392
@node Filtering Sources, Filtering History, Filtering Directories, Filtering the tree-buffers
2393
@subsection Applying filters to the Sources-buffer
2395
@subsubsection Interactive Sources-filters
2397
The command @code{ecb-sources-filter} allows to filter these
2398
tree-buffer either by a regular expression or by an extension (e.g.
2399
java, cc, el for java-, c++- rsp elisp-sources). This functionality is
2400
also available via the popup-menu of the Sources-tree-buffer.
2402
The currently applied filter is indicated in the modeline of the
2403
related tree-buffer. Applying a new filter replaces an eventually
2404
already applied filter.
2406
@subsubsection Default Sources-filters
2408
The option @code{ecb-source-file-regexps} allow to specify which
2409
source-files should be displayed and which not. This is done on a
2410
directory-basis, ie. for each directory-regexp the files to display
2411
can be specified. See the documentation of this option for all
2414
In addition to this option you should also know the option
2415
@code{ecb-sources-exclude-cvsignore} (@pxref{Filtering Directories}).
2417
@node Filtering History, Filtering Methods, Filtering Sources, Filtering the tree-buffers
2418
@subsection Applying filters to the History-buffer
2420
@subsubsection Interactive History-filters
2422
The command @code{ecb-history-filter} allows to filter these
2423
tree-buffer either by a regular expression or by an extension (e.g.
2424
java, cc, el for java-, c++- rsp elisp-sources). This functionality is
2425
also available via the popup-menu of the History-tree-buffer.
2427
The currently applied filter is indicated in the modeline of the
2428
related tree-buffer. Applying a new filter replaces an eventually
2429
already applied filter.
2431
@subsubsection Default History-filters
2433
The option @code{ecb-history-exclude-file-regexps} allows to exclude
2434
source-files from being historized (ie. displayed in the
2435
History-buffer). Despite the fact that the History-buffer already
2436
excludes all non-file-buffers there can be still buffers which name
2437
you do not wat to be displayed in the history. These are file-buffer
2438
like @file{TAGS} or @file{semantic.cache} which store
2439
meta-informations used by Emacs and its tools (etags, semantic etc.).
2440
These files can be excluded via
2441
@code{ecb-history-exclude-file-regexps}.
2443
@node Filtering Methods, , Filtering History, Filtering the tree-buffers
2444
@subsection Applying filters to the Methods-buffer
2446
The commands @code{ecb-methods-filter},
2447
@code{ecb-methods-filter-regexp},
2448
@code{ecb-methods-filter-protection},
2449
@code{ecb-methods-filter-tagclass},
2450
@code{ecb-methods-filter-function},
2451
@code{ecb-methods-filter-delete-last},
2452
@code{ecb-methods-filter-nofilter} allows to filter the tags/nodes of
2453
the Methods-buffer by several criterias. As for the Sources- and the
2454
History-buffer the same functionality is also available via the
2455
popup-menu of the Methods-buffer.
2457
@subsubsection Possible filter-criterias
2460
@item Filter by protection:
2461
Just insert the protection you want the Methods-buffer being filtered:
2462
private, protected or public! For sources not supported by semantic
2463
the protection filter will not be offered because these informations
2464
are not available for such sources.
2466
@item Filter by regexp:
2467
Insert the filter as regular expression.
2469
@item Filter by tag-class:
2470
You can filter by tag-classes. The popup-menu contains mode-dependend
2471
tag-filter entries and the command @code{ecb-methods-filter} offers
2472
only the tag-classes of the current mode. This means for sources not
2473
supported by semantic the tag-class filter will not be offered. And
2474
for semantic-supported sources exactly these tag-classes are offered
2475
the semantic-parser for the current major-mode offers. For example
2476
texi-sources can only be filtered by the tag-classes ``Definitions''
2477
and ``Sections'' and java-sources can be filtered by ``Methods'',
2478
``Variables'', ``Classes'' etc. In general the semantic-variable
2479
@code{semantic-symbol->name-assoc-list} is used to get the right
2482
@item Filter by a filter-function:
2483
Such a function gets two arguments: a tag and the source-buffer of
2484
this tag. If the tag should be displayed (i.e. not being filtered out)
2485
then the function has to return not nil otherwise nil.
2487
@item No special filter:
2488
This means to display all tags specified with the option
2489
@code{ecb-show-tokens}. If currently some of the above filters are
2490
applied they will be all removed.
2492
@item Delete the last added:
2493
This removes only the topmost filter-layer, means that filter added
2497
Be aware that the tag-list specified by the option
2498
@code{ecb-show-tags} is the basis of all filters, i.e. tags which are
2499
excluded by that option will never be shown regardless of the filter
2502
All tags which match the applied filter(s) will be displayed in the
2503
Methods-buffer. Such a filter is only applied to the current
2504
source-buffer, i.e. each source-buffer can have its own tag-filters.
2506
These tag-filters can also applied to sources which are not supported
2507
by the semantic-parser but ``only'' by imenu or etags. But because for
2508
these sources not all information are avaiable the protection- and
2509
tag-class filter are not offered with such ``non-semantic''-sources.
2510
See @ref{Non-semantic sources} for further details about working with
2511
source-files not supported by the semantic-parser.
2514
@subsubsection Inverse Filters
2516
But if @code{ecb-methods-filter} is called with a prefix-argument then
2517
an inverse filter is applied to the Methods-buffer, i.e. all tags
2518
which do @strong{NOT} match the choosen filter will be displayed in
2521
@subsubsection Layered filters
2523
Per default the choosen filter will be applied on top of already
2524
existing filters. This means that filters applied before are combined
2525
with the new filter. This behavior can changed via the option
2526
@code{ecb-methods-filter-replace-existing}.
2528
@subsubsection Display of currently applied filters
2530
The current active filter will be displayed in the modeline of the
2531
Methods-buffer [regexp, prot (= protection), tag-class, function (=
2532
filter-function)]. If an inverse filter has been applied then this is
2533
signalized by a preceding caret ^. If currently more than 1 filter is
2534
applied then always the top-most filter is displayed in the modeline
2535
but the fact of more than 1 filter is visualized by the number of the
2536
filters - included in parens. You can see all currently applied
2537
filters by moving the mouse over the filter-string in modeline of the
2538
Methods-buffer: They will displayed as help-echo.
2540
@subsubsection Default filters for certain files.
2542
The new option @code{ecb-default-tag-filter} allow to define default
2543
tag-filters for certain files which are applied automatically after
2544
loading such a file into a buffer. The possible filters are the same
2545
as offered by the command @code{ecb-methods-filter} and they are
2546
applied in the same manner - the only difference is they are applied
2547
automatically. The files can be specified on a combined major-mode-
2548
and filename-regexp-basis.
2550
Usage-example: This can be used to display in outline-mode files (e.g.
2551
@file{NEWS}) only the level-1-headings by defining a filter regexp
2554
@node The ECB-layout, Hiding the ECB windows, Filtering the tree-buffers, Usage of ECB
2237
2555
@section Changing, customizing, redrawing and creating layouts
3644
3971
within the ECB-frame.
3974
@deffn Command methods-filter
3975
Apply a filter to the Methods-buffer to reduce the number of entries.
3976
So you get a better overlooking. There are six choices:
3979
@item Filter by protection:
3980
Just insert the protection you want the Methods-buffer being filtered:
3981
private, protected or public!
3983
@item Filter by regexp:
3984
Insert the filter as regular expression.
3986
@item Filter by tag-class:
3987
You can filter by the tag-classes of current major-mode. The available
3988
tag-classes come from the variable
3989
@code{semantic--symbol->name-assoc-list}. The are normally methods,
3992
@item Filter by current type:
3993
In languages which have types like Java or C++ this filter displays
3994
only the current type and all its members (e.g. attributes and
3995
methods). If ECB can not identify the current type in the
3996
source-buffer or in the methods-window then nothing will be done.
3998
@item Filter by a filter-function:
3999
Such a function gets two arguments: a tag and the source-buffer of
4000
this tag. If the tag should be displayed (i.e. not being filtered out)
4001
then the function has to return not nil otherwise nil.
4003
@item No special filter:
4004
This means to display all tags specified with the option
4005
@code{ecb-show-tokens}. If currently some of the above filters are
4006
applied they will be all removed.
4008
@item Delete the last added:
4009
This removes only the topmost filter-layer, means that filter added
4013
The protection-, current-type- and the tag-class-filter are only
4014
available for semantic-supported sources.
4016
Be aware that the tag-list specified by the option
4017
@code{ecb-show-tags} is the basis of all filters, i.e. tags which are
4018
excluded by that option will never be shown regardless of the filter
4021
All tags which match the applied filter(s) will be displayed in the
4024
If called with a prefix-argument or when optional arg INVERSE is not
4025
nil then an inverse filter is applied to the Methods-buffer, i.e. all
4026
tags which do NOT match the choosen filter will be displayed in the
4029
Per default the choosen filter will be applied on top of already
4030
existing filters. This means that filters applied before are combined
4031
with the new filter. This behavior can changed via the option
4032
@code{ecb-methods-filter-replace-existing}. But regardless of the
4033
setting in @code{ecb-methods-filter-replace-existing} applying one of
4034
the not-inverse filters protection, tag-class or current-type always
4035
replaces exactly already existing filters of that type. On the other
4036
hand applying more than one inverse tag-class- or protection-filter
4039
Such a filter is only applied to the current source-buffer, i.e. each
4040
source-buffer can have its own tag-filters.
4042
The current active filter will be displayed in the modeline of the
4043
Methods-buffer [regexp, prot (= protection), tag-class, function (=
4044
filter-function)]. If an inverse filter has been applied then this is
4045
signalized by a preceding caret ^. If currently more than 1 filter is
4046
applied then always the top-most filter is displayed in the modeline
4047
but the fact of more than 1 filter is visualized by the number of the
4048
filters - included in parens. You can see all currently applied
4049
filters by moving the mouse over the filter-string in modeline of the
4050
Methods-buffer: They will displayed as help-echo.
4052
See the option @code{ecb-default-tag-filter} if you search for
4053
automatically applied default-tag-filters.
4056
@deffn Command methods-filter-current-type
4057
Display in the Methods-buffer only the current type and its members.
4058
For further details see @code{ecb-methods-filter}.
4062
@deffn Command methods-filter-delete-last
4063
Remove the most recent filter from the Methods-buffer. For further details see
4064
@code{ecb-methods-filter}.
4067
@deffn Command methods-filter-function &optional inverse
4068
Filter the methods-buffer by a function. If INVERSE is not nil (called
4069
with a prefix arg) then an inverse filter is applied. For further details see
4070
@code{ecb-methods-filter}.
4073
@deffn Command methods-filter-nofilter
4074
Remove any filter from the Methods-buffer. For further details see
4075
@code{ecb-methods-filter}.
4078
@deffn Command methods-filter-protection &optional inverse
4079
Filter the methods-buffer by protection. If INVERSE is not nil (called
4080
with a prefix arg) then an inverse filter is applied. For further details see
4081
@code{ecb-methods-filter}.
4084
@deffn Command methods-filter-regexp &optional inverse
4085
Filter the methods-buffer by a regexp. If INVERSE is not nil (called
4086
with a prefix arg) then an inverse filter is applied. For further details see
4087
@code{ecb-methods-filter}.
4090
@deffn Command methods-filter-tagclass &optional inverse
4091
Filter the methods-buffer by tag-class. If INVERSE is not nil (called
4092
with a prefix arg) then an inverse filter is applied. For further details see
4093
@code{ecb-methods-filter}.
3647
4096
@deffn Command minor-mode &optional arg
3648
4097
Toggle ECB minor mode. With prefix argument @var{ARG}, turn on if
3649
4098
positive, otherwise off. Return non-@code{nil} if the minor mode is
5457
5960
supported by semantic!
5963
@defopt auto-expand-tag-tree-collapse-other
5964
Auto. expanding the tag-tree collapses all not related nodes. There
5965
are several choices:
5968
@item Only if on tag:
5969
This means collapsing all nodes which have no relevance for the
5970
currently highlighted node will be collapsed, because they are not
5971
necessary to make the highlighted node visible. But do this only if
5972
point stays onto a tag in the selected edit-window.
5975
Same as before but collapse also when point doesn't stays on a tag
5976
(e.g. between two defuns in elisp) in the selected edit-window. This
5977
means in such a situation a full collapsing of the methods-buffer.
5980
Do not automatically collapse the methods-buffer.
5461
5985
@defopt auto-update-methods-after-save
5462
5986
Automatically updating the ECB method buffer after saving a source.
5989
@defopt default-tag-filter
5990
Default tag-filters for certain files. This option allow to define
5991
default tag-filters for certain files which are applied automatically
5992
after loading such a file into a buffer. The possible filters are the
5993
same as offered by the command @code{ecb-methods-filter} and they are
5994
applied in the same manner - the only difference is they are applied
5995
automatically. Please be aware that symbol-filters (e.g.
5996
protection-symbols like public or private) must not be inserted with
5997
quotes whereas a filter-regexp has to be inserted with surrounding
5998
double-quotes! In addition backslashes in a regexp have to be doubled!
6000
For each file-spec (a major-mode plus a file-regexp which both specify
6001
a file for which filters should be applied) there can be as much
6002
filters as needed - they are layered like with
6003
@code{ecb-methods-filter} too.
6005
Tag-classes which are completely hidden or excluded by the option
6006
@code{ecb-show-tags} will never being displayed in the Methods-buffer
6007
regardless of the filters of this option!
6010
@defopt display-image-icons-for-semantic-tags
6011
Display nice and pretty icons for semantic-tags in the Methods-buffer.
6012
This option takes only effect if Emacs can display images and if
6013
@code{ecb-tree-buffer-style} is set to @code{image}.
5465
6016
@defopt exclude-parents-regexp
5466
Regexp which parent classes should not be shown in the methods buffer
6017
Regexps which parent classes should not be shown in the methods buffer
5467
6018
(see also @code{ecb-show-parents}). If nil then all parents will be
5468
6019
shown if @code{ecb-show-parents} is not nil.
8743
9417
handle-symbols can be customized with the option
8744
9418
@code{ecb-tree-guide-line-face} (default is the equal-named face).
8746
@node Tree-buffers with images, ,Ascii-based styles, Tree-buffer styles
9420
@node Tree-buffers with images, Images for Methods-buffer, Ascii-based styles, Tree-buffer styles
8747
9421
@subsection Which images are used for the tree
8749
9423
Depending on the value of @code{ecb-tree-buffer-style} and the
8750
9424
image-support of (X)Emacs, the tree-buffer try to use images instead
8751
of strings to draw a nice-looking tree. If images can and should be
8752
used then the option @code{ecb-tree-image-icons-directories} tells ECB
8753
where to search for suitable image-icons for each of the nine
8754
image-names (see above). An image is used for displaying a control
8755
with name ``XXX'' if one of the directories of
8756
@code{ecb-tree-image-icons-directories} contains an image-file with
8757
basename ``ecb-XXX'' and an extension which is supported by (X)Emacs.
8758
Currently supported extensions are ``.xpm'', ``.png'', ``.gif'',
8759
``.jpeg'', .''jpg'' and ``.xbm''.
9425
of strings to draw a nice-looking tree.
9427
If images can and should be used then the option
9428
@code{ecb-tree-image-icons-directories} tells ECB where to search for
9429
suitable image-icons for each of the nine image-names (see above). An
9430
image is used for displaying a control with name ``XXX'' if one of the
9431
directories of @code{ecb-tree-image-icons-directories} contains an
9432
image-file with basename ``ecb-XXX'' and an extension which is
9433
supported by (X)Emacs. Currently supported extensions are ``.xpm'',
9434
``.png'', ``.gif'', ``.jpeg'', .''jpg'' and ``.xbm''.
8761
9436
Example: To display the control with name ``open'' with a suitable
8762
9437
image then one of the directories of
9902
10590
other packages and how to solve them - in most cases ECB already
9903
10591
contains a suitable workaround.
9905
But in front of this ``know-conflicts-and-solutions-list'' a general
9906
recipe is given what you can do when you have detected a conflict
9907
between ECB and a package not listed in the know-conflicts-section.
9909
@subsection What to do for unknown conflicts with other packages
9911
As of version 2.20 the layout-engine of ECB is so flexible that
9912
normally there should be no conflicts with other packages unless these
9913
packages have their own complete window-layout-management (e.g. Gnus,
9914
BBDB, Xrefactory). But these packages can and should be handled very
9915
well with the window-manager-support of ECB (@pxref{Window-managers
9918
So if you detect an unknown (i.e. not listed in the conflicts-list in
9919
the next subsection) conflict with a small package and some of its
9920
commands and you have installed an ECB-version < 2.20 the first task
9921
you have to do is to upgrade to a version >= 2.20!
9923
If this doesn't solve the problem a very probable reason for the
9924
conflict is that the command fails if called from another window than
9925
an edit-window of the ecb-frame. So please check if the problem
9926
disappears if you call the failing command from an edit-window of ECB.
9927
If this is true then you you can add the following code to your
9928
.emacs (and of course replace the XXX with the failing command):
9932
(defadvice XXX (before ecb activate)
9933
"Ensures `XXX' works well when called from another window
9934
as an edit-window. Does nothing if called in another frame
9935
as the `ecb-frame'."
9936
(when (equal (selected-frame) ecb-frame)
9937
(unless (ecb-point-in-edit-window)
9938
(ecb-select-edit-window))))
9942
This before-advice runs before the command XXX and ensures that the
9943
XXX is called from within an edit-window if the current selected
9944
window is not an edit-window. It does nothing if called for another
9945
frame as the ecb-frame.
9947
If such an advice solves the problem then please send a not with the
9948
solution to the ECB-mailing-list or direct to the ECB-maintainer so
9949
the solution can be integrated in the next ECB-release
9951
If calling from an edit-window fails too then please file a complete
9952
bug-report to the ECB-mailing-list (@pxref{Submitting problem
9953
report}). This report should contain a detailed description which
9954
command of which package fails under which circumstances!
9956
@subsection Known conflicts and proper solutions/work-arounds
9958
Here is a list of known conflicts of ECB with other packages and
9959
helpful solutions/hints/workarounds:
10593
That is followed by a general recipe what you can do when you have
10594
detected a conflict between ECB and a package is not listed in the
10595
know-conflicts-section.
10597
@subsection Proved workarounds or recommendations for other packages
10599
Here is a list of packages which are proved to work properly with ECB
10600
and if not (i.e. there are conflicts) then helpful
10601
solutions/hints/workarounds are offered:
9961
10603
@subsubsection Package avoid.el
10204
10878
then use different escreens or window-configurations for ECB and
10205
10879
Xrefactory-browsing - @ref{Window-managers and ECB}).
10881
@subsection What to do for unknown conflicts with other packages
10883
As of version 2.20 the layout-engine of ECB is so flexible that
10884
normally there should be no conflicts with other packages unless these
10885
packages have their own complete window-layout-management (e.g. Gnus,
10886
BBDB, Xrefactory). But these packages can and should be handled very
10887
well with the window-manager-support of ECB (@pxref{Window-managers
10890
So if you detect an unknown (i.e. not listed in the conflicts-list in
10891
the next subsection) conflict with a small package and some of its
10892
commands and you have installed an ECB-version < 2.20 the first task
10893
you have to do is to upgrade to a version >= 2.20!
10895
If this doesn't solve the problem a very probable reason for the
10896
conflict is that the command fails if called from another window than
10897
an edit-window of the ecb-frame. So please check if the problem
10898
disappears if you call the failing command from an edit-window of ECB.
10899
If this is true then you you can add the following code to your
10900
.emacs (and of course replace the XXX with the failing command):
10904
(defadvice XXX (before ecb activate)
10905
"Ensures `XXX' works well when called from another window
10906
as an edit-window. Does nothing if called in another frame
10907
as the `ecb-frame'."
10908
(when (equal (selected-frame) ecb-frame)
10909
(unless (ecb-point-in-edit-window)
10910
(ecb-select-edit-window))))
10914
This before-advice runs before the command XXX and ensures that the
10915
XXX is called from within an edit-window if the current selected
10916
window is not an edit-window. It does nothing if called for another
10917
frame as the ecb-frame.
10919
If such an advice solves the problem then please send a not with the
10920
solution to the ECB-mailing-list or direct to the ECB-maintainer so
10921
the solution can be integrated in the next ECB-release
10923
If calling from an edit-window fails too then please file a complete
10924
bug-report to the ECB-mailing-list (@pxref{Submitting problem
10925
report}). This report should contain a detailed description which
10926
command of which package fails under which circumstances!
10207
10929
@node Bugs, , Conflicts, Conflicts and bugs
10208
10930
@section Known bugs