[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This chapter describes how to customize ECB for your personal taste. The first section introduces some general aspects (which you should really know!), the second one gives an overview of the most important options and the third one lists all options of ECB (divided into the customize groups).
5.1 General aspects for customizing ECB | ||
5.2 The most important options of ECB | Which option you must know | |
5.3 All customizable options of ECB |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This chapter contains all important informations you should know about
customizing ECB. The first section gives an answer to the question
"setq
or customize
" and the second section describes
what to do when you have to customize ECB for a lot of people.
5.1.1 Setq or customize - what should i use? | Should i use setq or customize? | |
5.1.2 Site-wide customizing of ECB |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The best way to customize all the options of ECB is via the
customize-feature of (X)Emacs, i.e. means calling the commands
customize-option
or customize-group
etc. This is also
the strongly recommended way!
But of course you can also use setq
or some Elisp-code to
change the values of many but not all of the options. The values of
the following options MUST NOT be changed via setq
or
Elisp-code but only with the customize-feature!
ecb-advice-window-functions
ecb-bucket-node-display
ecb-compile-window-height
ecb-compile-window-temporally-enlarge
ecb-compile-window-width
ecb-exclude-parents-regexp
ecb-fix-window-size
ecb-font-lock-tags
ecb-highlight-tag-with-point-delay
ecb-key-map
ecb-layout-name
ecb-layout-window-sizes
ecb-mode-line-data
ecb-mode-line-display-window-number
ecb-mode-line-prefixes
ecb-show-node-info-in-minibuffer
ecb-show-tags
ecb-source-path
ecb-toggle-layout-sequence
ecb-tag-display-function
ecb-tree-RET-selects-edit-window
ecb-type-tag-display
ecb-type-tag-expansion
ecb-use-speedbar-instead-native-tree-buffer
ecb-window-sync-delay
ecb-windows-height
ecb-windows-width
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
If you are the administrator for an Emacs-site, means you are
responsible for the basic customization of a lot of Emacs users, then
you maybe need a way to customize Emacs and ECB without changing
everyones `.emacs'-file and normally you will do this with the
file `site-start.el'. You can customize all options of ECB in a
central `site-start.el' (even the options mentioned above!) but
you MUST NOT do this via setq
but you have to use a
mechanism like the following(23)!
This section describes two methods how to pre-customize ECB site-wide. The elisp-code contained in the following two subsections has to be copied to the file `site-start.el' before it can be used.
But ensure for both methods that you customize the options with the correct lisp format. Read carefully the docstrings of the options you want to customize from within Elisp-code!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The mechanism described here defines all site-wide-settings in a file
`site-lisp.el' but stores the values in the users
custom-file
which is probably `.emacs'!
First two helper functions are needed, namely
customize-option-get-value
and
customize-save-variable-save
whereas the latter one sets the
value for an option via the customize-mechanism (and is therefore
allowed for the setq-forbidden options!) but only if the option has no
saved value until now (i.e. the user has not saved this option for
future sessions until now)
(defun customize-option-get-value (option type) "Return the value of a customizable option OPTION with TYPE, where TYPE can either be 'standard-value \(the default-value of the defcustom) or 'saved-value \(the value stored durable by the user via customize)." (let ((val (car (get option type)))) (cond ((not (listp val)) val) ((equal 'quote (car val)) (car (cdr val))) (t (car val))))) (defun customize-save-variable-save (option value &optional override) "Calls `customize-save-variable' with OPTION and VALUE if OPTION is a custom-type and if OPTION has no saved-value until now. If OVERRIDE is a function or lambda-form then it is called with two arguments: - OLD-SAVED-VAL: The saved value of OPTION - NEW-VALUE: see argument VALUE. OVERRIDE is only called if OPTION has already a saved-value. If OVERIDE returns not nil then `customize-save-variable' is called for OPTION with VALUE even if OPTION has no saved-value until now." (and (get option 'custom-type) (or (not (get option 'saved-value)) (and (functionp override) (funcall override (customize-option-get-value option 'saved-value) value))) (progn (message "Overriding saved value for option %s with %s" option value) (customize-save-variable option value)))) |
With customize-save-variable-save
all ECB-options can be
site-wide pre-customized like follows:
(customize-save-variable-save 'ecb-show-tags '((include collapsed nil) (parent collapsed nil) (type flattened nil) (variable collapsed name) (function flattened name) (rule flattened name) (section flattened nil) (def collapsed name) (t collapsed name))) (customize-save-variable-save 'ecb-font-lock-tags t) ;; add here more options of ECB it you want |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The mechanism above saves the pre-customized values always in the
users custom-file
(probably `.emacs'). If this is not
preferred, then you can use the following mechanism but of course the
offered setq-save
is only allowed for options which are not
setq-forbidden (see section 5.1.1 Setq or customize - what should i use?).
The mechanism below does not change the users custom-file
. This
mechanism is needed especially if ECB should be autoloaded and all
site-wide settings should first loaded when ECB is activated by the
user. This can be achieved for example via(24):
(require 'ecb-autoloads)) (eval-after-load "ecb" '(require 'site-ecb)) |
In such a situation the whole custom-file
of a user is mostly
loaded before ECB is activated and therefore before the
site-wide-settings are loaded. So the users own customizations are
loaded before the site-wide ones.
The setq-save
-mechanism described below prevents the users own
customisations contained in his custom-file
from being
overridden by the site-wide setq-settings. If setq
would be
used for the site-wide settings then in an autoload-situation the
site-wide settings would override the users-settings and this should
not be done!
First two helper-macros are needed:
(defmacro custom-saved-p (option) "Return only not nil if OPTION is a defcustom-option and has a saved value. Option is a variable and is literal \(not evaluated)." `(and (get (quote ,option) 'custom-type) (get (quote ,option) 'saved-value))) (defmacro setq-save (option value) "Sets OPTION to VALUE if and only if OPTION is not already saved by customize. Option is a variable and is literal \(not evaluated)." `(and (not (custom-saved-p ,option)) (set (quote ,option) ,value))) |
With setq-save
all "not-setq-forbidden"-ECB-options can be
site-wide pre-customized like follows:
(setq-save ecb-tree-indent 4) (setq-save ecb-tree-expand-symbol-before t) (setq-save ecb-primary-secondary-mouse-buttons 'mouse-1--mouse-2) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here are the most important options (it is recommended to check at
least the following options before working with ECB). You can
customize them via the customize-group "ecb-most-important" or via
the command ecb-customize-most-important
.
ecb-source-path
ecb-show-help-format
ecb-auto-activate
ecb-major-modes-show-or-hide
ecb-winman-escreen-number
ecb-winman-winring-name
ecb-key-map
ecb-new-ecb-frame
ecb-primary-secondary-mouse-buttons
ecb-mouse-click-destination
ecb-tree-buffer-style
ecb-tree-expand-symbol-before
ecb-tree-indent
ecb-truncate-lines
ecb-source-file-regexps
ecb-show-node-info-in-minibuffer
ecb-layout-name
ecb-compile-window-height
ecb-compile-window-width
ecb-other-window-behavior
ecb-compilation-buffer-names
ecb-tag-display-function
ecb-type-tag-display
ecb-type-tag-expansion
ecb-show-tags
ecb-process-non-semantic-files
But to make ECB working best for you it is also recommended to have a look at 5.3 All customizable options of ECB!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
All customization of ECB is divided into the following "customize groups". You can highly customize all the ECB behavior/layout so just go to these groups and you will see all well documented ECB-options.
Please note: All options in the following subsections are
listed without the prefix "ecb-" (e.g. the option
ecb-layout-name
is listed with name "layout-name"). This has
been done for a better readable option index. See section Option Index.
5.3.1 Group ecb-general | General customizing ECB | |
5.3.2 Group ecb-tree-buffer | Customizing the general tree layout | |
5.3.3 Group ecb-directories | Customizing the ECB-directories-tree | |
5.3.4 Group ecb-sources | Customizing the ECB-sources-tree | |
5.3.5 Group ecb-methods | Customizing the ECB-methods-tree | |
5.3.6 Group ecb-history | Customizing the ECB-history-tree | |
5.3.7 Group ecb-layout | Customizing the ECB-layout | |
5.3.8 Group ecb-compilation | Customizing the compile-window | |
5.3.9 Group ecb-create-layout | Customizing options for creating layouts | |
5.3.10 Group ecb-face-options | Customizing options for faces | |
5.3.11 Group ecb-faces | Customizing the faces | |
5.3.12 Group ecb-download | Customizing how to download ECB | |
5.3.13 Group ecb-help | Customizing the online help of ECB | |
5.3.14 Group ecb-eshell | Customizing the eshell-integration | |
5.3.15 Group ecb-speedbar | Customizing the speedbar-integration | |
5.3.16 Group ecb-non-semantic | Customizing parsing non-semantic sources | |
5.3.17 Group ecb-winman | Customizing window-manager support | |
5.3.18 Group ecb-mode-line | Customizing the tree-buffer-modelines | |
5.3.19 Group ecb-version-control | Customizing the version-control-support |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains general settings for the Emacs code browser:
ecb-activate
. This hooks are run after all the internal setup
process but directly before(!) drawing the layout specified in
ecb-layout
(means before dividing the frame into several
windows).
A senseful using of this hook can be maximizing the Emacs-frame for
example, because this should be done before the layout is drawn
because ECB computes the size of the ECB-windows with the current
frame size! If you need a hook-option for the real end of the
activating process (i.e. after the layout-drawing) look at
ecb-activate-hook
.
IMPORTANT: The difference between this hook and
ecb-redraw-layout-before-hook
is that the latter one is
evaluated always before the layout is redrawn (for example after
calling ecb-redraw-layout
) whereas the former one (this hook)
is only evaluated exactly once during the activation-process of ECB.
So during the activation process there is the following sequence of
hooks:
ecb-activate-before-layout-draw-hook
\(this one)
ecb-redraw-layout-before-hook
ecb-redraw-layout-after-hook
ecb-activate-hook
ecb-activate
. This
hooks are run at the real end of the activating process, means after
the layout has been drawn!. If you need hooks which are run direct
before the layout-drawing look at
ecb-activate-before-layout-draw-hook
.
ecb-frame
.
ecb-activate
.
ecb-upgrade-options
and
ecb-display-upgraded-options
. If this option is off then the
user can perform the check and reset manually with
ecb-upgrade-options
.
See section 7.2 Automatic upgrading of options.
ecb-activate
. These hooks run before any other tasks of
the activating process are performed. If any of these hooks returns
nil then ECB will not be activated!
This can be used to check some conditions and then only start ECB if
all conditions are true. For example a function could be added which
returns only nil if Gnus is running. Then calling ecb-activate
or ecb-minor-mode
will only start ECB if Gnus is not already
running.
ecb-deactivate
. These hooks run before any other tasks of the
deactivating process are performed. If any of these hooks returns nil
then ECB will not be deactivated! See also
ecb-before-activate-hook
.
This option defines how bucket-node should be displayed. The name of the bucket-node is computed by ECB but you can define a prefix, a suffix and a special face for the bucket-node
The default are empty prefix/suffix-strings and
ecb-bucket-node-face
. But an alternative can be for example
'("[" "]" nil) which means no special face and a display like
"[+] [<bucket-name>]".
ecb-cache-directory-contents
and
ecb-cache-directory-contents-not
) for semantic-tags and for
the history-filter.
This caches are completely clean at load-time of the ECB-library!
Default is nil, because is makes sense not to clear these caches at start-time because ECB is often deacticated temporally especially in combination with window-managers like escreen.el. In these situations the internal state of ECB should be preserved for next activation.
ecb-current-buffer-sync
.
See documentation of ecb-current-buffer-sync
for conditions when
synchronization takes place and so in turn these hooks are evaluated.
Precondition for such a hook: Current buffer is the buffer of the current selected edit-window.
Postcondition for such a hook: Point must stay in the same edit-window as before evaluating the hook.
Important note: If ecb-window-sync
is not nil
ecb-current-buffer-sync
is running either every time Emacs is
idle or even after every command (see ecb-window-sync-delay
).
So these hooks can be really called very often! Therefore each
function of this hook should/must check in an efficient way at
beginning if its task have to be really performed and then do them
only if really necessary! Otherwise performance of Emacs could slow
down dramatically!
It is strongly recommended that each function added to this hook uses
the macro ecb-do-if-buffer-visible-in-ecb-frame
at beginning!
See ecb-speedbar-current-buffer-sync
and
ecb-eshell-current-buffer-sync
for examples how to use this
macro!
ecb-deactivate
.
ecb-submit-problem-report
) after getting the
error again!
'(<common-prefix-flag> <keysequence> <function>) where |
<common-prefix-flag>
<keysequence>
<function>:
It is highly recommended to use one of the standard keys C-c or C-x as first key of your common-prefix-key!
You MUST change this option via customize to take effect!
All keysequences must be inserted as a string and must follow the
syntax needed by read-kbd-macro
or kbd
. This means you
can insert the key in the same manner C-h k displays keysequences.
Here is the summary of the syntax:
Text is divided into "words" separated by whitespace. Except for the words described below, the characters of each word go directly as characters of the keysequence. The whitespace that separates words is ignored. Whitespace in the macro must be written explicitly, as in C-c SPC.
^
notation for control characters also works: ^M = C-m.
Because for ECB it is quite obvious if it is active or not when the ECB-windows are visible this text is only display in the modeline if the ECB-windows are hidden.
ecb-primary-secondary-mouse-buttons
) onto a node. There
are two possible choices:
left-top
:
Does the "right" action always in the left/topmost edit-window.
last-point
:
Does the "right" action always in that edit-window which had the point
before.
If the edit-area is not splitted this setting doesn't matter.
A click with the secondary mouse-button (see again
ecb-primary-secondary-mouse-buttons
does the "right" action
always in another edit-window related to the setting in this option:
If there are two edit-windows then the "other" edit-window is used
and for more than 2 edit-windows the "next" edit-window is used
(whereas the next edit-window of the last edit-window is the first
edit-window).
Note: If the tree-buffers are used with the keyboard instead with the mouse then this option takes effect too because RET is interpreted as primary mouse-button and C-RET as secondary mouse-button!
ecb-prescan-directories-for-emptyness
for a description.
ecb-sources-perform-read-only-check
.
ecb-vc-enable-support
.
Here the interval is defined ECB has to be idle before starting with these stealthy tasks. It can be a floating-point value in seconds. The value can also be changed during running ECB.
It is strongly recommended to set this option to not nil
!
always
then the synchronization takes place always a buffer
changes in the edit window, if nil
then never. If a list of
major-modes then only if the major-mode
of the new buffer
belongs NOT to this list.
But in every case the synchronization takes only place if the
current-buffer in the current active edit-window has a relation to
files or directories. Examples for the former one are all
programming-language-modes, Info-mode
too, an example for the
latter one is dired-mode
. For all major-modes related to
non-file/directory-buffers like help-mode
,
customize-mode
and others never an autom. synchronization will
be done!
It's recommended to exclude at least Info-mode
because it makes
no sense to synchronize the ECB-windows after calling the Info help.
Per default also dired-mode
is excluded but it can also making
sense to synchronize the ECB-directories/sources windows with the
current directory in the dired-buffer.
IMPORTANT NOTE: Every time the synchronization is done the hook
ecb-current-buffer-sync-hook
is evaluated.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains general settings related to the tree-buffers of ECB:
local-set-key
to define new keybindings for EVERY tree-buffer.
The following keys must not be rebind in all tree-buffers:
C-t
ecb-mouse-click-destination
.
ecb-mouse-click-destination
.
A click with the primary mouse-button while the SHIFT-key is pressed called the POWER-click and does the following (depending on the ECB-buffer where the POWER-click occurs):
ecb-cache-directory-contents
).
ecb-tag-visit-post-actions
). This works only for semantic
supported sources but not for imenu- or etags-supported ones!
In addition always the whole node-name is displayed in the minibuffer after a POWER-click \(for this see also `ecb-show-node-info-in-minibuffer').
The secondary mouse-button is for opening (jumping to) the file in
another edit-window (see the documentation
ecb-mouse-click-destination
).
The following combinations are possible:
Please note: If the tree-buffers are used with the keyboard instead with the mouse then RET is interpreted as primary mouse-button and C-RET as secondary mouse-button!
If you change this during ECB is activated you must deactivate and activate ECB again to take effect
For every tree-buffer you can define "when" node info should be displayed:
always
:
Node info is displayed by moving with the mouse over a node.
if-too-long
:
Node info is only displayed by moving with the mouse over a node does
not fit into the window-width of the tree-buffer window. In the ECB
directories buffer this means also if a node is shortened or if the
node has an alias (see ecb-source-path
).
shift-click
:
Node info is only displayed after a shift click with the primary mouse
button onto the node.
never
:
Node info is never displayed.
For every tree-buffer you can define what info should be displayed:
name
: Only the full node-name is displayed.
path
: The full-path of the node is displayed.
name
: Only the full node-name is displayed.
file-info
: File infos for this file are displayed.
file-info-full
: Fill infos incl. full path for this file are
displayed.
name
: Only the full node name is displayed.
name+type
: The full name + the type of the node (function, class,
variable) is displayed.
Do NOT set this option directly via setq but use always customize!
ecb-directories-buffer-name
,
ecb-sources-buffer-name
, ecb-methods-buffer-name
or
ecb-history-buffer-name
is contained in this list then hitting
RET in the associated tree-buffer selects as last action the right
edit-window otherwise only the right action is performed (opening a
new source, selecting a method etc.) but point stays in the
tree-buffer.
A special remark for the ecb-directories-buffer-name
: Of course
here the edit-window is only selected if the name of the current
layout is contained in ecb-show-sources-in-directories-buffer
or if the value of ecb-show-sources-in-directories-buffer
is
'always and the hitted node represents a sourcefile (otherwise this
would not make any sense)!
The setting in this option is only the default for each tree-buffer.
With ecb-toggle-RET-selects-edit-window
the behavior of RET can
be changed fast and easy in a tree-buffer without customizing this
option, but of course not for future Emacs sessions!
Image-style (value image
): Very nice and modern - just try it.
For this style the options ecb-tree-indent
and
ecb-tree-expand-symbol-before
have no effect! Note: GNU Emacs
<= 21.3.X for Windows does not support image-display so ECB uses
always 'ascii-guides even when here 'image is set!
Ascii-style with guide-lines (value ascii-guides
):
[-] ECB | [+] code-save `- [-] ecb-images | [-] directories | | [-] height-15 | | | * close.xpm | | | * empty.xpm | | | * leaf.xpm | | `- * open.xpm | | [+] height-17 | | [+] height-19 | `- [+] height-21 | [x] history | [x] methods `- [x] sources |
Ascii-style without guide-lines (value ascii-no-guides
) - this
is the style used by ECB <= 1.96:
[-] ECB [+] code-save [-] ecb-images [-] directories [-] height-15 * close.xpm * empty.xpm * leaf.xpm * open.xpm [+] height-17 [+] height-19 [+] height-21 [x] history [x] methods [x] sources |
With both ascii-styles the tree-layout can be affected with the
options ecb-tree-indent
and
ecb-tree-expand-symbol-before
.
GNU Emacs does not have hor. scroll-bars so especially with the mouse
it is quite impossible to scroll smoothly right and left. The
functions scroll-left
and scroll-right
can be annoying
and are also not bound to mouse-buttons.
If this option is a positive integer S then in all ECB-tree-buffers
the keys M-mouse-1 and M-mouse-3
are bound to scrolling
left rsp. right with scroll-step S - clicking with mouse-1 or
mouse-2 onto the edge of the modeline has the same effect, i.e.
if you click with mouse-1 onto the left (rsp right) edge of the
modeline you will scroll left (rsp. right).
Additionally C-M-mouse-1
and C-M-mouse-3
are bound to
scrolling left rsp. right with scroll-step window-width
- 2.
Default is a scroll-step of 5. If the value is nil
then no keys
for horizontal scrolling are bound.
[-] ECB [+] code-save [-] ecb-images [-] directories |
When located after then the tree looks like:
ECB [-] code-save [+] ecb-images [-] directories [-] |
The after-example above use a value of 2 for ecb-tree-indent
whereas the before-example uses a value of 4.
It is recommended to display the expand-symbol before because otherwise it could be that with a deep nested item-structure with and/or with long item-names (e.g. a deep directory-structure with some long subdirectory-names) the expand-symbol is not visible in the tree-buffer and the tree-buffer has to be horizontal scrolled to expand an item.
tree-buffer-tree-image-names
. The name of an image-file must
be: "ecb-<NAME of TREE-BUFFER-TREE-IMAGE-NAMES>.<ALLOWED
EXTENSIONS>".
The directories of the element 2 - 5 are additional image-directories which are searched first for images needed for the respective tree-buffer. If the image can not be found in this directory then the default-directory (1. element) is searched. If the image can't even found there the related ascii-symbol is used.
All but the first element (the default directory) can be nil.
ECB comes with images in four diffenent heights - so for the most senseful font-heights of a tree-buffer a fitting image-size should be available. The images reside either in the subdirectory "ecb-images" of the ECB-installation or - if ECB is installed as regular XEmacs-package - in the ECB-etc data-directory.
button-press
) or not until releasing the mouse-button (value:
button-release
).
If you change this during ECB is activated you must deactivate and activate ECB again to take effect!
If this option is changed the new value takes first effect after deactivating ECB and then activating it again!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for the directories-buffer in the ECB:
ecb-source-path
if not already contained.
This is done during the auto. windows synchronization which happens if
a file is opened not via the file/directory-browser of ECB. In such a
situation ECB adds the path of the new file auto. to
ecb-source-path
at least temporally for the current Emacs
session. This option defines two things:
ecb-source-path
or the whole directory-part?
For remote-files (e.g. tramp, ange-ftp- or efs-files) the root-part is
the complete host-part + the root-dir at that host (example:
/berndl@ecb.sourceforge.net:/ would be the root-part of
/berndl@ecb.sourceforge.net:/tmp/test.txt).
The value of this option is a cons-cell where the car is a boolean for 1. and the cdr is a boolean for 2.
A value of not nil for the car (1.) is reasonably if a user often
opens files not via the ECB-browser which are not located in any of
the paths of ecb-source-path
because then only one path for
each drive (windows) or the root-path (Unix) is added to the directory
buffer of ECB.
best
: Expand the best-matching source-path
first
: Expand the first matching source-path
nil
: Do not automatically expand the directory tree.
switch-to-buffer
or switch-to-buffer-other-window
and
the directory of these filebuffers is different but only when
auto-synchronizing of the ECB-windows is on (see
ecb-window-sync
). It runs not when switching between buffers
and the associated files reside in the same directory.
Each function added to this hook will be called with two arguments: The directory which was current _before_ the directory-change-trigger and the directory which was now the current (i.e. after the trigger).
Example: If you switch from a filebuffer "~/.emacs" to a filebuffer "/tmp/test.txt" then the functions of this hook will be called with the two arguments "~" and "/tmp".
This can be useful if ecb-source-path
contains directories with
many files and subdirs, especially if these directories are mounted
net-drives ("many" means here something > 500, dependent of the
speed of the net-connection and the machine). Or if it contains
remote-source-paths which means paths in the sense of tramp, ange-ftp
or efs. For these directories actualizing the sources- and/or
directories- buffer of ECB (if displayed in current layout!) can slow
down dramatically so a caching increases speed a lot.
The value of this option is a list where each element is a cons-cell
and looks like:
(<dir-regexp> . <filenumber threshold>) with |
<dir-regexp>:
<filenumber threshold>:
A directory will only be cached if and only if the directory-name
matches at least one rexexp of this option and its content-number
exceeds the related threshold AND the directory-name matches NOT any
regexp of ecb-cache-directory-contents-not
!
The cache entry for a certain directory will be refreshed and
actualized only by using the POWER-click (see
ecb-primary-secondary-mouse-buttons
) in the directories-buffer
of ECB (see section 4.1 Working with the mouse in the ECB-windows).
Default-value: ECB caches the contents of all remote directories regardless of the size and all other directories if more than 50 entries are contained.
Examples:
An entry ("/usr/home/john_smith/bigdir*" . 1000)
means the
contents of every subdirectory of the home-directory of John Smith
will be cached if the directory contains more than 1000 entries and
its name begins with "bigdir".
An entry (".*" . 1000)
caches every directory which has more
than 1000 entries.
An entry ("^/\\([^:/]*@\\)?\\([^@:/]*\\):.*" . 0)
caches
every remote (in the sense of tramp, ange-ftp or efs) directory
regardless of the number of entries."
Please note: If you want your home-dir being cached then you MUST NOT use "~" because ECB tries always to match full path-names!
If a directory-name matches at least one of the regexps of this option
the directory-contents will never being cached. See
ecb-cache-directory-contents
to see when a directory will be
cached.
This option can be useful when normally all directories with a certain amount of content (files and subdirs) should be cached but some special directories not. This can be achieved by:
ecb-cache-directory-contents
to ((".*" . 500)):
Caches all directories with more then 500 entries
ecb-cache-directory-contents-not
to a value which
matches these directories which should not being cached (e.g.
("/usr/home/john_smith") excludes the HOME-directory of John Smith
from being cached).
Please note: If you want your home-dir exclude from being cached then you MUST NOT use "~" because ECB tries always to match full path-names!
local-set-key
to define new keybindings only for the
directories-buffer of ECB.
The following keys must not be rebind in the directories-buffer: F2, F3 and F4
If it is necessary for you you can get emacs-lisp access to the buffer-object of
the ECB-directory-buffer by this name, e.g. by a call of set-buffer
.
Changes for this option at runtime will take affect only after deactivating and then activating ECB again!
If a function then this function is called to re-arrange the
menu-entries of the combined menu-entries of the user-menu-extensions
of ecb-directories-menu-user-extension
and the built-in-menu
ecb-directories-menu
. If nil then no special sorting will be
done and the user-extensions are placed in front of the
built-in-entries.
The function get one argument, a list of menu-entries. For the format
of this argument see ecb-directories-menu-user-extension
. The
function must return a new list in the same format. Of course this
function can not only re-arrange the entries but also delete entries
or add new entries.
ecb-max-submenu-depth
BEFORE first loading ECB!
The function of a menu-command must follow the following guidelines:
Such a function must be defined with the macro
tree-buffer-defpopup-command
! This macro defines a new
popup-command whereas the newly defined command gets one argument
NODE. See the docstring of tree-buffer-defpopup-command
for further details.
Example for the definition of such a menu-function:
(tree-buffer-defpopup-command ecb-my-special-dir-popup-function "Prints the name of the directory of the node under point." (let ((node-data=dir (tree-node-get-data node))) (message ``Dir under node: %s'' node-data=dir))) |
Per default the static user-extensions are added at the beginning of
the built-in menu-entries of ecb-directories-menu
but the whole
menu can be re-arranged with ecb-directories-menu-sorter
.
These menu-extensions are static. A dynamic menu-extension can be
achieved via ecb-directories-menu-user-extension-function
.
ecb-directories-menu-user-extension
. This function is
called when the user opens the popup-menu for the directories buffer.
Per default the dynamic user-extensions are added in front of the
static extensions of ecb-directories-menu-user-extension
but
the whole menu can be re-arranged with
ecb-directories-menu-sorter
.
If a file-buffer is displayed in the current active edit-window then
ECB synchronizes its tree-buffers to this file-buffer - at least if
the option ecb-window-sync
it not nil. So for this situation
ecb-display-default-dir-after-start
takes no effect but this
option is for the case if no file-buffer is displayed in the
edit-window after startup:
If true then ECB selects autom. the current default-directory after activation even if no file-buffer is displayed in the current active edit-window. This is useful if ECB is autom. activated after startup of Emacs and Emacs is started without a file-argument. So the directory from which the startup has performed is auto. selected in the ECB-directories buffer and the ECB-sources buffer displays the contents of this directory.
ecb-stealthy-tasks-delay
) so normally there
should no performance-decrease or additional waiting-time for the
user. There is one exception: For remote directories (in the sense of
tramp, ange-ftp, or efs) this check can descrease performance even if
performed stealthy and interruptable. Therefore this option offers
three possible settings:
t
Switch on this feature
unless-remote
Switch on this feature but not for remote directories. The term
"remote" means here directories which are used via tramp, ange-ftp
or efs. So mounted directories are counted not as remote directories
here even if such a directory is maybe hosted on a remote machine. But
normally only directories in a LAN are mounted so there should be no
performance-problems with such mounted directories.
nil
Switch off this feature completely.
The option ecb-prescan-directories-exclude-regexps
offers are
more fine granularity to exclude certain directories from this
prescan.
Per default ECB discards after 1 minute the cached ping-state of each remote host. But if you are sure that a certain remote host is always accessible (i.e. means in consequence that you are always online when working with ECB and remote-paths) then add an entry to this option with a high valid-interval.
Examples: An entry (".*sourceforge.*" . 3600) ensures that all remote hosts machting the string "sourceforge" will only once pinged during one hour. Or (".*" . 300) would ensure that every remote host would be pinged only once during 5 minutes.
ecb-ping-program
.
ecb-ping-options
.
ecb-prescan-directories-for-emptyness
is not nil.
Lisp-type of tis option: The value must be a list L whereas each element of L is either
This option takes effect in all layouts which contain either a directory window, a sources window or a method window.
This option can have four valid values:
nil
: Do not use speedbar (default)
dir
: Use speedbar instead of the standard directories-buffer
source
: Use speedbar instead of the standard sources-buffer
method
: Use speedbar instead of the standard methods-buffer
Note: For directories and sources a similar effect and usability is
available by setting this option to nil
(or method
) and
setting ecb-show-sources-in-directories-buffer
to not
nil
, because this combination displays also directories and
sources in one window.
ecb-use-speedbar-instead-native-tree-buffer
is for people who
like the speedbar way handling directories and source-files or methods
and want it in conjunction with ECB.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for the sources-buffer in the ECB:
ecb-sources-perform-read-only-check
is not nil.
This is done on directory-base, which means for each directory-regexp the files to display can be specified. If more than one directory-regexp matches the current selected directory then always the first one (and its related file-exclude/include-regexps) is used! If no directory-regexp matches then all files are displayed for the currently selected directory.
Important note: It is recommended that the *LAST* element of this list
should contain an always matching directory-regexp (".*"
)!
So the value of this option is a list of cons-cells where the car is a directory regexp and the cdr is a 2 element list where the first element is a list of exclude regexps and the second element is a list of include regexps. A file is displayed in the source-buffer of ECB iff: The file does not match any of the exclude regexps OR the file matches at least one of the include regexps.
But regardless of the value of this option a file F is never displayed
in the sources-buffer if the directory matches
ecb-sources-exclude-cvsignore
and the directory contains a file
.cvsignore which contains F as an entry!
There are three predefined and useful combinations of an exclude and include regexp:
In addition to these predefined values a custom exclude and include combination can be defined.
Tips for the directory- and file-rexexps: "$^"
matches no
files/directories, ".*"
matches all files/directories.
local-set-key
to define new keybindings only for the
sources-buffer of ECB.
If it is necessary for you you can get emacs-lisp access to the
buffer-object of the ECB-sources-buffer by this name, e.g. by a call
of set-buffer
.
Changes for this option at runtime will take affect only after deactivating and then activating ECB again!
Value is a list of regular expressions or nil. If you want to exclude files listed in a `.cvsignore'-file from being displayed in the ecb-sources-buffer then specify a regexp for such a directory.
If you want to exclude the contents of `.cvsignore'-files for every directory then you should add one regexp ".*" which matches every directory.
If you never want to exclude the contents of `.cvsignore'-files then set this option to nil.
If a function then this function is called to sort the menu-entries of
the combined menu-entries of the user-menu-extensions of
ecb-sources-menu-user-extension
and the built-in-menu
ecb-sources-menu
. If nil then no special sorting will be done
and the user-extensions are placed in front of the built-in-entries.
For the guidelines for such a sorter-function see
ecb-directories-menu-sorter
.
ecb-directories-menu-user-extension
.
The node-argument of a menu-function contains as data the filename of the source for which the popup-menu has been opened.
Per default the static user-extensions are added at the beginning of
the built-in menu-entries of ecb-sources-menu
but the whole
menu can be re-arranged with ecb-sources-menu-sorter
.
ecb-sources-menu-user-extension
. This function is called when
the user opens the popup-menu for the sources buffer.
Per default the dynamic user-extensions are added in front of the
static extensions of ecb-sources-menu-user-extension
but the
whole menu can be re-arranged with ecb-sources-menu-sorter
.
ecb-source-read-only-face
.
Because this check can be take some time if files are used via a
mounted net-drive ECB performs this check stealthy (see
ecb-stealthy-tasks-delay
) so normally there should no
performance-decrease or additional waiting-time for the user. But to
get sure this option offers three choices: t
,
unless-remote
and nil
. See
ecb-prescan-directories-for-emptyness
for an explanation for
these three choices.
The option ecb-read-only-check-exclude-regexps
offers are more
fine granularity to exclude the sources of certain directories from
the read-only state-check.
ecb-sources-sort-method
.
name
:
Sorting by name.
extension
:
Sorting first by extension and then by name.
nil
:
No sorting, means source files are displayed in the sequence returned
by directory-files
(called without sorting).
See also ecb-sources-sort-ignore-case
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for the methods-buffer in the ECB:
This option has only an effect if option ecb-highlight-tag-with-point
is
switched on too. There are three possible choices:
nil
:
No auto. expanding of the method buffer.
expand-spec
:
Auto expand the method-buffer nodes if the node belonging to current
tag under point is invisible because its parent-node is collapsed.
But expanding is only done if the type of the tag under point in the
edit-buffer is contained in ecb-methods-nodes-expand-spec
.
all
:
Like expand-spec but expands all tags regardless of the setting in
ecb-methods-nodes-expand-spec
.
This options takes only effect for semantic-sources - means sources supported by semantic!
ecb-methods-filter
and they are
applied in the same manner - the only difference is they are applied
automatically. Please be aware that symbol-filters (e.g.
protection-symbols like public or private) must not be inserted with
quotes whereas a filter-regexp has to be inserted with surrounding
double-quotes! In addition backslashes in a regexp have to be doubled!
For each file-spec (a major-mode plus a file-regexp which both specify
a file for which filters should be applied) there can be as much
filters as needed - they are layered like with
ecb-methods-filter
too.
Tag-classes which are completely hidden or excluded by the option
ecb-show-tags
will never being displayed in the Methods-buffer
regardless of the filters of this option!
ecb-tree-buffer-style
is set to image
.
ecb-show-parents
). If nil then all parents will be
shown if ecb-show-parents
is not nil.
This options takes only effect for semantic-sources - means sources supported by semantic!
ecb-expand-methods-nodes
.
This is done with ecb-toggle-auto-expand-tag-tree
so after
the switch off the auto expanding feature can again switched on
quickly.
But after explicitly expanding/collapsing the methods-buffer to a
certain level the auto. expanding could undo this when the node
belonging to current tag under point in the current active edit-window
is invisible after ecb-expand-methods-nodes
- then the auto.
expand feature would make this node immediately visible and destroys
the explicitly set expand-level.
This options takes only effect for semantic-sources - means sources supported by semantic!
highlight-scroll
:
Always scroll the method buffer, so the current method of the
edit-window is highlighted in the method-window.
highlight
:
Only highlight the current method of the edit window in the
method window if the method is visible in the method-window.
nil
:
No highlighting is done.
See also ecb-highlight-tag-with-point-delay
.
This options takes only effect for semantic-sources - means sources supported by semantic!
This options takes only effect for semantic-sources - means sources supported by semantic!
local-set-key
to define new keybindings only for the
methods-buffer of ECB.
If it is necessary for you you can get emacs-lisp access to the
buffer-object of the ECB-methods-buffer by this name, e.g. by a call
of set-buffer
.
Changes for this option at runtime will take affect only after deactivating and then activating ECB again!
never
:
This is the default and means that calling ecb-methods-filter
always adds the new filter on top of already existing filters. So you
can combine several filter to one combined like this example: 'Display
only all public methods having the string "test" in its name.' With
this setting the filters can only be cleared by calling
ecb-methods-filter
and then choosing "nothing".
always
:
This means that ecb-methods-filter
always clears a previous
filter before applying the new one.
ask
:
ECB asks if the new filter should replace the existing ones.
If a function then this function is called to sort the menu-entries of
the combined menu-entries of the user-menu-extensions of
ecb-methods-menu-user-extension
and the built-in-menu
ecb-methods-menu
. If nil then no special sorting will be done
and the user-extensions are placed in front of the built-in-entries.
For the guidelines for such a sorter-function see
ecb-directories-menu-sorter
.
ecb-directories-menu-user-extension
.
The node-argument of a menu-function contains as data the semantic-tag of the method/variable/tag for which the popup-menu has been opened.
Per default the static user-extensions are added at the beginning of
the built-in menu-entries of ecb-methods-menu
but the whole
menu can be re-arranged with ecb-methods-menu-sorter
.
ecb-methods-menu-user-extension
. This function is called when
the user opens the popup-menu for the methods buffer. For an example
how such a function can be programmed see
ecb-methods-menu-editwin-entries
.
Per default the dynamic user-extensions are added in front of the
static extensions of ecb-methods-menu-user-extension
but the
whole menu can be re-arranged with ecb-methods-menu-sorter
.
ecb-expand-methods-nodes
.
For valid values of this option see ecb-methods-nodes-expand-spec
!
This options takes only effect for semantic-sources - means sources supported by semantic!
ecb-expand-methods-nodes
.
The value of this option is either the symbol all
(all tags
are expanded regardless of their type) or a list of symbols where each
symbol is a valid semantic tag-type. For a description of semantic
tag types see option ecb-show-tags
.
But this option also defines if bucket-nodes in the ECB-method-buffer
(e.g. "[Variables]") should be expanded. Therefore valid symbols for
this list are also all cars of the variable returned by
ecb--semantic-symbol->name-assoc-list
.
If there is a bucket-name (the node-name stripped of the settings in
ecb-bucket-node-display
) which is not contained as cdr in the
value returned by ecb--semantic-symbol->name-assoc-list
then
the symbol with this bucket-name as name is also a valid symbol for
this list. Example: In ECB there are buckets "[Parents]". The
bucket-name is "Parents" and the valid symbol-name is then
Parents
.
This options takes only effect for semantic-sources - means sources supported by semantic!
ecb-show-tags
the user can define different display-settings
for each of them. If this option is nil then the prototypes and the
real functions are filled in the same bucket and displayed plain and
there is no sorting between prototypes and functions possible. If this
option is switched on then it is senseful that ecb-show-tags
contains for all modes which distinct between prototypes and real
functions/methods two entries for the tag-type 'function - see the
documentation of this option.
ecb--semantic-bovinate-toplevel
) for a buffer in this
major-mode. The first function in the list is called with current
semantic taglist of current buffer and must return a valid taglist
again. All other functions are called with the result-taglist of its
preceding function and have to return a new taglist again.
For oo-programming languages where the methods of a class can be
defined outside the class-definition (e.g. C++, Eieio) the function
ecb-group-function-tags-with-parents
can be used to get a much
better method-display in the methods-window of ECB, because all method
implementations of a class are grouped together.
Another senseful usage is to filter out certain tags, e.g. prototype
tags in c-mode
. For this you can set
ecb-filter-c-prototyp-tags
.
This options takes only effect for semantic-sources - means sources supported by semantic!
defclass
form which are only displayed
if this option is nil. Displaying such nodes can be senseful even if
they can not be jumped.
This options takes only effect for semantic-sources - means sources supported by semantic!
The car is either a major-mode symbol or the special symbol 'default which means if no setting for a certain major-mode is defined then the cdr of the 'default cons-cell is used. This option should always contain a default-setting!
The cdr is a list where each element represents a type of tags:
(<tag type> <display type> <sort method>) |
There can be more than 1 element for a certain <tag type>. This is for
example useful for C++ and C because these languages distinct between
a method-prototype (rsp. function-prototype for C) and the method
(rsp. function for C) itself. The default value of these option
contains two entries for <tag type> is function
whereas the
first one is responsible for the "real" methods (rsp. functions) and
the second one for the prototypes. So if the methods should be
flattened and the prototypes collapsed the show-tags-list for C++ and
C must contain two entries for <tag type> function
, the first
one defined as flattened
and the second one defined as
collapsed
.
The tags in the methods buffer are displayed in the order as they appear in this list.
<tag type>
t
: All tag types not specified anywhere else in the list.
parent
: The parents of a type.
<display type>
expanded
: The tags are shown in an expanded node.
collapsed
: The tags are shown in a collapsed node.
flattened
: The tags are added to the parent node.
hidden
: The tags are not shown.
<sort method>
name
:
Sort by the tag name.
access
:
Sort by tag access (public, protected, private) and then by name.
nil
:
Don't sort tags. They appear in the same order as in the source
buffer.
This options takes only effect for semantic-sources - means sources supported by semantic!
Every function is called with 3 arguments:
ecb-font-lock-tags
.
Every function must return the display of the tag as string, colorized if the third argument is not nil.
The following functions are predefined:
ecb--semantic-format-function-alist
exists a function with name "ecb--<(cdr E)>". These functions are
just aliase to the builtin format-functions of semantic. See the
docstring of these functions to see what they do. Example:
(semantic-name-nonterminal . semantic-format-tag-name) is an element
of ecb--semantic-format-function-alist
. Therefore the
alias-function for this element is named
ecb--semantic-format-tag-name
.
ecb--semantic-format-function-alist
with name
"semantic-XYZ" a function with name "ecb-XYC" is predefined. The
differences between the semantic- and the ECB-version are:
ecb-type-tag-display
. This is useful for better recognizing
different classes, structs etc. in the ECB-method window.
For all tags which are not types the display of the ECB-version is
identical to the semantic version. Example: For
ecb--semantic-format-tag-name
(one of the builtin semantic
formatters) the pendant is ecb-format-tag-name
.
This functionality also allows the user to display tags as UML. To
enable this functionality set the function for a major-mode \(e.g.
jde-mode
) to
ecb--semantic-format-tag-uml-concise-prototype
,
ecb--semantic-format-tag-uml-prototype
, or
ecb--semantic-format-tag-uml-abbreviate
the ECB-versions of
these functions.
If the value is nil
, i.e. neither a function for a major-mode
is defined nor the special 'default, then
ecb--semantic-format-tag-prototype
is used for displaying the
tags.
This options takes only effect for semantic-sources - means sources supported by semantic!
This functionality is set on a major-mode
base, i.e. for every
major-mode
a different setting can be used. The value of this
option is a list of cons-cells:
major-mode
symbol or the special symbol
'default.
ECB first performs all actions defined for the special symbol 'default
(if any) and then all actions defined for current major-mode
(if any).
ECB offers some predefined senseful action-functions. Currently there
are: ecb-tag-visit-highlight-tag-header
ecb-tag-visit-smart-tag-start
ecb-tag-visit-recenter
ecb-tag-visit-recenter-top
ecb-tag-visit-goto-doc-start
ecb-tag-visit-narrow-tag
See the documentation of these
function for details what they do.
But you can add any arbitrary function if the following conditions are fulfilled: The function gets the semantic tag as argument, returns the (new) point after finishing its job and the function must not put the point outside the tag-boundaries of the tag-argument.
ecb--semantic-format-face-alist
and the semantic
display-function (e.g. one from
ecb--semantic-format-tag-functions
). But sometimes a finer
distinction in displaying the different type specifiers of type-tags
can be useful. For a description when this option is evaluated look at
ecb-tag-display-function
!
This functionality is set on a major-mode base, i.e. for every major-mode a different setting can be used. The value of this option is a list of cons-cells:
ecb-post-process-semantic-taglist
and
ecb-group-function-tags-with-parents
). Any arbitrary
specifier can be set here but if it is not "group" or not known by
semantic it will be useless.
ecb-type-tag-class-face
,
ecb-type-tag-interface-face
, ecb-type-tag-struct-face
,
ecb-type-tag-typedef-face
, ecb-type-tag-union-face
,
ecb-type-tag-enum-face
and ecb-type-tag-group-face
) but
any arbitrary face can be set here. This face is merged with the faces
semantic already uses to display a tag,
i.e. the result is a display where all face-attributes of the ECB-face
take effect plus all face-attributes of the semantic-faces which are not
set in the ECB-face (with XEmacs this merge doesn't work so here the
ECB-face replaces the semantic-faces; this may be fixed in future
versions).
The default value is nil means there is no special ECB-displaying of type-tags in addition to the displaying and colorizing semantic does. But a value like the following could be a useful setting:
((default ("class" t ecb-type-tag-class-face) ("group" nil ecb-type-tag-group-face)) (c-mode ("struct" nil ecb-type-tag-struct-face) ("typedef" nil ecb-type-tag-typedef-face))) |
This means that in c-mode
only "struct"s and "typedef"s are
displayed with special faces (the specifiers itself are not removed)
and in all other modes "class"s and grouping-tags (see
ecb-tag-display-function
,
ecb-group-function-tags-with-parents
) have special faces and
the "class" specifier-string is removed from the display.
This options takes only effect for semantic-sources - means sources supported by semantic!
ecb-post-process-semantic-taglist
).
This option defines which type-specifiers should be expanded at file-open-time. Any arbitrary specifier can be set here but if it is not "group" or not known by semantic it will be useless.
This functionality is set on a major-mode base, i.e. for every major-mode a different setting can be used. The value of this option is a list of cons-cells:
default
which means if no setting for a certain major-mode is
defined then the cdr of the default
cons-cell is used.
all-specifiers
(then a type-tag
is always expanded regardless of its type-specifier).
This options takes only effect for semantic-sources - means sources supported by semantic!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for the history-buffer in the ECB:
local-set-key
to define new keybindings only for the
history-buffer of ECB.
If it is necessary for you you can get emacs-lisp access to the
buffer-object of the ECB-history-buffer by this name, e.g. by a call
of set-buffer
.
Changes for this option at runtime will take affect only after deactivating and then activating ECB again!
If a function then this function is called to sort the menu-entries of
the combined menu-entries of the user-menu-extensions of
ecb-history-menu-user-extension
and the built-in-menu
ecb-history-menu
. If nil then no special sorting will be done
and the user-extensions are placed in front of the built-in-entries.
For the guidelines for such a sorter-function see
ecb-directories-menu-sorter
.
ecb-directories-menu-user-extension
.
The node-argument of a menu-function contains as data the filename of the source for which the popup-menu has been opened.
Per default the static user-extensions are added at the beginning of
the built-in menu-entries of ecb-history-menu
but the whole
menu can be re-arranged with ecb-history-menu-sorter
.
ecb-history-menu-user-extension
. This function is called when
the user opens the popup-menu for the history buffer.
Per default the dynamic user-extensions are added in front of the
static extensions of ecb-history-menu-user-extension
but the
whole menu can be re-arranged with ecb-history-menu-sorter
.
ecb-history-sort-method
.
name
:
Sorting by name (default).
extension
:
Sorting first by extension and then by name.
nil
:
No sorting, means the most recently used buffers are on the top of the
history and the seldom used buffers at the bottom.
See also ecb-history-sort-ignore-case
.
kill-buffer
should also clear the history. There are
three options:
auto
:
Removes automatically the corresponding history-entry after the buffer
has been killed.
ask
:
Asks, if the history-entry should be removed after the kill.
nil
:
kill-buffer
does not affect the history (this is the default).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for the screen-layout of the ECB:
ecb-new-ecb-frame
is not nil (otherwise this hook is not
evaluated).
other-window
For this one see also the option ecb-other-window-behavior
!
delete-window
delete-other-windows
delete-windows-on
split-window-horizontally
split-window-vertically
split-window
If this advice is enabled then split-window-vertically
and
split-window-horizontally
are autom. enabled too!
switch-to-buffer
switch-to-buffer-other-window
display-buffer
Especially if ecb-compile-window-height
is not nil it is
strongly recommended not to disable this advice!
other-window-for-scrolling
If this advice is enabled then the behavior of the following functions
depends on ecb-other-window-behavior
:
scroll-other-window
scroll-other-window-down
beginning-of-buffer-other-window
end-of-buffer-other-window
balance-windows
:
Only the edit-windows are balanced
For working most conveniently with ECB it is the best to advice all these functions, because then all the standard shortcuts of these functions are also usable with ECB without doing anything else. Also other packages can interact best with ECB if these functions are all adviced. If these adviced functions are called in another frame than the ECB-frame they behave all exactly like the not adviced versions!
But please read also the following:
Normally all packages should work correct with ECB and itīs adviced functions but if there occur problems with a package cause of some of these adviced functions ECB offers the following fall-back solution:
ecb-advice-window-functions
all the
adviced-functions which make problems with other packages.
ecb-activate-hook
the standard-shortcut of
<adv-func> to "ecb-<adv-func>" and rebind it in
ecb-deactivate-hook
to <adv-func>.
Here is an example: Suppose you must deactivating the advice for
switch-to-buffer-other-window
. Then you deactivate this
function with this option and you can use
ecb-switch-to-buffer-other-window
instead. Bind the shortcut
you normally use for switch-to-buffer-other-window
to
ecb-switch-to-buffer-other-window
(use ecb-activate-hook
for this) and rebind it to the original function in the
ecb-deactivate-hook
.
ecb-advice-window-functions
) can not do its job. So for example
if the user tries to split the compile-window or an ecb-tree-window or
if one tries to switch to another buffer in one of the
ecb-tree-windows. For details see the documentation of each of the
adviced functions to get info when an error is signaled.
If this option is nil then no error is signaled but the called adviced function does simply nothing.
Default is nil but it can also be useful to signal errors - so you see when call a function in a situation which is not supported by this function.
For a detailed description of the valid values see description of
window-size-fixed
which is newly introduced in GNU Emacs 21 and
is only available there. Therefore this option takes only effect with
GNU Emacs 21.
Note1: Manually resizing the ECB-windows via enlarge-window
,
shrink-window
, mouse-drag-vertical-line
and
mouse-drag-mode-line
is still possible even if the window-sizes
are fixed for frame-resizing!
Note2: The description of window-size-fixed
in the
Elisp-info-manual is more detailed than the description offered by
C-h v!
Note3: With current Emacs 21.2.X there seems to be no distinction
between width
, height
and t
. Therefore this
option takes no effect (means all ecb-windows have always unfixed
sizes) if ecb-compile-window-height
is not nil
.
Per default no window-size fixing has been done.
ecb-toggle-ecb-windows
or
ecb-hide-ecb-windows
.
IMPORTANT: Hiding the ECB-windows is internally done by calling
ecb-redraw-layout
and therefore also the hooks
ecb-redraw-layout-before-hook
and
ecb-redraw-layout-after-hook
are evaluated. The hook-sequence
is analogous to that described in
ecb-show-ecb-windows-after-hook
.
ecb-toggle-ecb-windows
or
ecb-hide-ecb-windows
. This means that at runtime of this hook
all the ECB-tree-windows of current layout are visible.
IMPORTANT: Hiding the ECB-windows is internally done by calling
ecb-redraw-layout
and therefore also the hooks
ecb-redraw-layout-before-hook
and
ecb-redraw-layout-after-hook
are evaluated. The hook-sequence
is analogous to that described in
ecb-show-ecb-windows-before-hook
.
display-buffer
ignores display-buffer-function
.
This means, that the adviced version of display-buffer
(see
ecb-advice-window-functions
) ignores the value of
display-buffer-function
when called for the ecb-frame
.
If this variable should not be ignored then the function of
display-buffer-function
is completely responsible which window
is used for the buffer to display - no smart ECB-logic will help to
deal best with the ECB-window-layout! You can define if and when
display-buffer-function
should be ignored:
ecb-compile-window-height
is not nil
display-buffer
always uses the
value of display-buffer-function
if the value is a function.
special-display-function
, special-display-buffer-names
and special-display-regexps
are ignored
ecb-compile-window-height
is not nil - this is the default
value.
special-display-function
,
special-display-buffer-names
and
special-display-regexps
.
ecb-advice-window-functions
), we will select first an
edit-window according to the value of
ecb-mouse-click-destination
. This is useful if you have any
functions that use such functions and you don't want them to fail with
an error complaining that the current buffer can not be split, or
something similar.
Because this may not be desirable in all situations and for all
adviced functions this can be enabled separately for every advicable
function (see also ecb-advice-window-functions
). If the symbol
of an adviced function is contained in the value of this option, then
a edit-window is first selected otherwise either an error is
reported or some other special reaction (depends on
ecb-advice-window-functions-signal-error
); see the
documentation of the adviced functions for this.
For other-window
, other-window-for-scrolling
and
switch-to-buffer-other-window
this makes no sense, therefore
you can not enable this for them.
Per default this is enabled for switch-to-buffer
and
display-buffer
.
ecb-layout-debug-mode
to not nil
ecb-submit-problem-report
.
ecb-layout-debug-mode
back to nil if you do not want
further debugging output in the *Messages* buffer
ecb-layout-function-9
.
Currently available layouts:
Regardless of the settings you define here: If you have destroyed or
changed the ECB-screen-layout by any action you can always go back to
this layout with ecb-redraw-layout
ecb-store-window-sizes
. Next time the layout is redrawn the
values stored in this option will be used.
If ecb-store-window-sizes
is used then the windows sizes are
stored per default as fractions of current frame-width and -height of
the ecb-frame, so the stored values will "work" for other frame
sizes too. But if you call ecb-store-window-sizes
with a
prefix-argument then the fixed values of current width and height are
stored!
If this option is set "by hand" (i.e. not by
ecb-store-window-sizes
) then the following is important:
other-window
(the not-adviced version!) would walk!
other-window
or
other-window-for-scrolling
is adviced by ECB, see
ecb-advice-window-functions
. The following settings are
possible:
all
:
ECB will cycle through all windows of the ECB-frame or scroll simply
the next window in the ECB-frame, means it behaves like the original
other-window
rsp. the original
other-window-for-scrolling
.
only-edit
:
ECB will only cycle through the edit-windows of ECB or only scroll
another edit-window. If the selected window is not an edit-window then
it behaves like with value all
.
edit-and-compile
:
Like only-edit
plus the compile window if any. If the selected
window is neither an edit-window nor the compile-window then it
behaves like with value all
.
smart
:
With this setting ECB tries to choose the
other-window
-destination or the "other window" to scroll in a
smart and intuitive way: If point is in one of the edit-windows and if
the edit-area is splitted then always the "next" edit-window is
choosen (whereas the next edit-window of the last edit-window is the
first edit-window)- if the edit-area is unsplitted then the
compile-window is used if there is one. In the context of an
other-window
-call the ARG of other-window
will be
taken into account.
If one of the special ecb-windows is selected then always the "next"
ecb-window is choosen (whereas the next ecb-window of the last
ecb-window is the first ecb-window). In the context of an
other-window
-call the ARG of other-window
will be
taken into account. If there is only one ecb-window then ECB considers
also the edit-windows
If the compile-window is selected then always the last edit-window
which had the point will be used unless other-window
has been
called with a prefix-argument unequal 1.
If there is an active minibuffer:
Regardless of the allowed values above ECB handles the situation of an
active minibuffer during a call to other-window
or
scroll-other-window
like follows:
If the minibuffer-window is selected then ECB always chooses the
window minibuffer-scroll-window
points to (when this variable
is set, otherwise the compile-window or the last selected edit-window
is choosen) when the called command is called to choose the 1. next
window (always true for scrolling another window or true when
other-window
called without prefix-arg or with prefix-arg equal
1). Otherwise the window ARG steps away is choosen (in case of
other-window
).
If there is an active minibuffer but the minibuffer-window is not
selected then other-window
and scroll-other-window
behave like the original version.
In addition to the allowed values above the value of this option can also be a function:
A function:
This function gets seven arguments:
ecb-frame
ecb-where-is-point
- see the
documentation of this function for details.
other-window
.
The function has to return a window-object which is then used as
"other window" for the command other-window
or for scrolling
another window (e.g. with scroll-other-window
). Such a function
has to handle properly all situation for itself.
ecb-get-other-window-smart
is an example for such a function.
ecb-toggle-ecb-windows
or ecb-show-ecb-windows
. This
means that at runtime of this hook the ECB-windows are already
visible.
ecb-redraw-layout
.
ecb-redraw-layout
.
ecb-redraw-layout
.
ecb-toggle-ecb-windows
or ecb-show-ecb-windows
. This
means that at runtime of this hook the ECB-windows are already
visible.
IMPORTANT: Showing the hidden ECB-windows is internally done by
calling ecb-redraw-layout
and therefore also the hooks
ecb-redraw-layout-before-hook
and
ecb-redraw-layout-after-hook
are evaluated. So there is the
following sequence of hooks during the process of showing the hidden
ECB-windows:
ecb-show-ecb-windows-before-hook
ecb-redraw-layout-before-hook
ecb-redraw-layout-after-hook
ecb-show-ecb-windows-after-hook
ecb-toggle-ecb-windows
or ecb-show-ecb-windows
. This
means that at runtime of this hook the ECB-windows are still hidden.
IMPORTANT: Showing the hidden ECB-windows is internally done by
calling ecb-redraw-layout
and therefore also the hooks
ecb-redraw-layout-before-hook
and
ecb-redraw-layout-after-hook
are evaluated. So there is the
following sequence of hooks during the process of showing the hidden
ECB-windows:
ecb-show-ecb-windows-before-hook
ecb-redraw-layout-before-hook
ecb-redraw-layout-after-hook
ecb-show-ecb-windows-after-hook
nil
:
Do not split the edit-area of ECB after activation, i.e. there will be
only one edit-window after starting ECB.
horizontal
:
Split the edit-area in 2 edit-windows side by side.
vertical
:
Split the edit-area in 2 edit-windows, one above the other.
before-activation
:
Split the edit-area as before the ECB-start, i.e. the edit-area will
have after start a window-layout as the whole frame had before the
start of ECB.
before-deactivation
:
Split the edit-area into a window-layout ECB had in its edit-area
direct before the ECB-deactivation. This value preserves the full
state between activations of ECB, i.e. the visibility of the
ECB-windows, the visibility of a compile-window and also the full
split-state of the edit-area. But this can only be done if important
layout-options have not been changed in the meanwhile. These are the
options ecb-layout-name
, ecb-compile-window-height
,
ecb-compile-window-width
, ecb-windows-width
and
ecb-windows-height
.
Default value is before-deactivation
.
Some remarks to the value before-activation
: If this value has
been set then ECB needs three permanent adivces even when ECB is
deactivated: split-window
, delete-window
and
delete-other-windows
. But these advices do not change any
behavior of these functions but only storing in an internal
ECB-variable the facts that a window has been splitted or deleted. In
addition to this these advices are 100% error-save, means the
functionality of the original functions will be performed in every(!)
case even if within the advice an error occurs (but normally there can
no errors occur in these advices because they are very simple).
Conclusion: If you want really all ECB-advices being disabled after
deactivating ECB then you have to set this option to other values then
before-activation
. But setting this variable to this value is
really completely save.
ecb-toggle-layout
.
Every element of this list has to be a valid layout-name i.e. either
one of the predefined layouts or one of the user-defined layouts.
You can add here as many layouts as you want but to use this option
most effective you should not add more than 2 or 3 layouts so every
layout can be accessed very fast by toggling with
ecb-toggle-layout
. It is also senseful to add layouts which
have the same principal outline, i.e. all their tree-buffers are on
the same side of the frame and the tree-buffer-"column" (or
-"row") has identical size for the layouts.
Recommended values are for example:
See also option ecb-show-sources-in-directories-buffer
.
This option makes only sense if the value is a list with more than 1 element!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for the compile window of ECB:
compilation-buffer-p
says nil for this buffer.
It is not recommended to add the eshell-buffer-names to this list because ECB already handles the eshell-integration as best as possible (see section 8.10 Optimal using of eshell in ECB).
See also the options ecb-compilation-major-modes
and
ecb-compilation-predicates
.
compilation-buffer-p
says nil for
such a buffer.
It is not recommended to add eshell-mode
to this list because
ECB already handles the eshell-integration as best as possible
(see section 8.10 Optimal using of eshell in ECB).
compilation-buffer-p
says nil) and therefore be displayed in
the compile-window of ECB (if there is any).
In combination with the values of ecb-compilation-buffer-names
and ecb-compilation-major-modes
ECB decides when a buffer is
displayed in the compile-window.
Default value is the function comint-check-proc
which returns
not nil when the buffer is related to a living process.
ecb-redraw-layout
then the compilation window (if
any) has the height you set here. If the number is less than 1.0 the
height is a fraction of the frame height.
If you do not set a durable compilation window then doing a compilation or displaying temp-buffers (e.g. *Help*-buffers) splits temporally the edit window vertically if the edit window is not splitted already or uses another edit window temporally for compilation output if the edit window is already splitted. This is the recommended value for this option because this is the standard-behavior of Emacs.
Beware: If you set a durable compilation window then ECB displays all
buffers for which ecb-compilation-buffer-p
returns not nil in
that durable compilation window. If a buffer which should being
displayed there is not displayed there then try to modify the options
ecb-compilation-buffer-names
,
ecb-compilation-major-modes
or
ecb-compilation-predicates
(in this sequence).
See also the options ecb-compile-window-temporally-enlarge
and
ecb-enlarged-compilation-window-max-height
and also the command
ecb-toggle-compile-window-height
!
ECB offers the functionality of such a durable compile-window
regardless if the special ECB-windows are visible or not (see the
command ecb-toggle-ecb-windows
).
Regardless of the settings you define here: If you have destroyed or
changed the ECB-screen-layout by any action you can always go back to
this layout with ecb-redraw-layout
ecb-compile-window-height
by displaying
temp-buffers (e.g. *Help* etc.) or after running compilations or
greps. But interactively it is always allowed to shrink it to every
height!
If nil then ECB does nothing to prevent being shrunken below the value
of ecb-compile-window-height
.
Default is t.
ecb-compile-window-height
is
not nil!
The following values are possible:
after-display
:
After displaying a "compilation-buffer" (in the sense of
ecb-compilation-buffer-p
!) in the compile-window of ECB. For
the max. height of the enlarged compile-window see the option
ecb-enlarged-compilation-window-max-height
.
after-selection
:
Selecting the ecb-compile-window
auto. enlarges it and
de-selecting (means leaving ecb-compile-window
) auto. shrinks
it. Enlarging and shrinking the ecb-compile-window
is done with
ecb-toggle-compile-window-height
. See also the
documentation of this function!
both
:
The combination of 'after-display and 'after-selection.
nil
:
ECB fixes always the height of the ecb-compile-window
at the
value of ecb-compile-window-height
.
To restore the ECB-layout after such a buffer-enlarge just call
ecb-toggle-compile-window-height
or
ecb-redraw-layout
.
Possible values are frame
and edit-window
.
With frame
the compile-window looks like:
------------------------------------------------------- | | | | Directories | | | | | |--------------| edit-window(s) | | | | | Methods | | | | | ------------------------------------------------------- | | | Compilation | | | ------------------------------------------------------- |
With edit-window
the compile-window looks like:
------------------------------------------------------- | | | | Directories | | | | | |--------------| edit-window(s) | | | | | Methods | | | | | | |--------------------------------------- | | | | | Compilation | | | | ------------------------------------------------------- |
ecb-compile-window-height
is
not nil!
ecb-toggle-layout
) and wants to preserve the hidden-state of
the compile-window.
ecb-toggle-compile-window-height
. The following values are
allowed:
best
:
ECB fits the height of the compile-window exactly to the size of its
current contents but never shrinks below the value of
ecb-compile-window-height
or enlarges over the half of the
frame-height of the ECB-frame. The values of the options
compilation-window-height
and temp-buffer-max-height
are
taken into account dependent of the current major-mode
of the
buffer in the compile-window: If compilation-mode
then
compilation-window-height
is used otherwise
temp-buffer-max-height
.
half
:
1/2 the frame-height of the ECB-frame
Any number:
Max height in lines. If the number is less than 1.0 the height is a fraction of the frame height (e.g. 0.33 results in a max-height of 1/3 the frame-height).
scroll-other-window
scrolls always the compile-window. For all
details about the scroll-behavior of scroll-other-window
see
the advice documentation of other-window-for-scrolling
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for creating new ECB-layouts:
ecb-create-new-layout
are
stored.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for all faces used in ECB:
ecb-default-general-face
is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
ecb-default-general-face
.
Changes take first effect after finishing and reactivating ECB!
ecb-default-highlight-face
is used then the
display of all ECB-tree-buffers can be changed by modifying only the
face ecb-default-highlight-face
.
Changes take first effect after finishing and reactivating ECB!
ecb-default-highlight-face
is used then the
display of all ECB-tree-buffers can be changed by modifying only the
face ecb-default-highlight-face
.
Changes take first effect after finishing and reactivating ECB!
ecb-default-general-face
is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
ecb-default-general-face
.
Changes take first effect after finishing and reactivating ECB!
ecb-default-highlight-face
is used
then the display of all ECB-tree-buffers can be changed by modifying
only the face ecb-default-highlight-face
.
Changes take first effect after finishing and reactivating ECB!
Changes take first effect after finishing and reactivating ECB!
ecb-default-general-face
is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
ecb-default-general-face
.
Changes take first effect after finishing and reactivating ECB!
ecb-default-highlight-face
is used then the display of
all ECB-tree-buffers can be changed by modifying only the face
ecb-default-highlight-face
.
Changes take first effect after finishing and reactivating ECB!
ecb-default-general-face
is used then the display of all
ECB-tree-buffers can be changed by modifying only the face
ecb-default-general-face
.
Changes take first effect after finishing and reactivating ECB!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains all faces used in ECB:
ecb-bucket-node-face:
ecb-bucket-node-display
.
ecb-default-general-face:
In GNU Emacs 21.X all faces (even the face
ecb-default-highlight-face
) used in the ECB tree-buffers inherit
from this face. Therefore the default attributes like font etc. of a
face used in a tree-buffer can be very easily changed with face
ecb-default-general-face
.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature but the
options ecb-directories-general-face
,
ecb-sources-general-face
, ecb-methods-general-face
and
ecb-history-general-face
offer the choice to use the face
ecb-default-general-face
so also with XEmacs and GNU Emacs 20.X
the basic face-settings can be easily changed just by customizing the
face ecb-default-general-face
!
ecb-default-highlight-face:
In GNU Emacs 21.X all highlighting faces in the ECB tree-buffers
inherit from this face. Therefore the default attributes like font
etc. of a face used in a tree-buffer for highlighting the current
tag can be very easily changed with face
ecb-default-highlight-face
.
With XEmacs and GNU Emacs 20.X there is no inheritance-feature but the
options ecb-directory-face
, ecb-source-face
,
ecb-method-face
and ecb-history-face
offer the choice to
use the face ecb-default-highlight-face
so also with XEmacs and
GNU Emacs 20.X the basic face-settings can be easily changed just by
customizing the face ecb-default-highlight-face
!
ecb-directories-general-face:
ecb-directory-face:
ecb-directory-not-accessible-face
ecb-history-face:
ecb-history-general-face:
ecb-method-face:
ecb-methods-general-face:
ecb-method-non-semantic-face:
ecb-mode-line-data-face
ecb-mode-line-data
.
ecb-mode-line-prefix-face
ecb-mode-line-prefixes
.
ecb-source-face:
ecb-source-in-directories-buffer-face:
ecb-sources-general-face:
ecb-source-read-only-face
ecb-tag-header-face:
ecb-tree-guide-line-face:
ecb-tree-buffer-style
for a explanation of guide-lines.
ecb-type-tag-class-face:
ecb-type-tag-display
.
ecb-type-tag-enum-face:
ecb-type-tag-display
.
ecb-type-tag-group-face:
ecb-type-tag-display
.
ecb-type-tag-interface-face:
ecb-type-tag-display
.
ecb-type-tag-struct-face:
ecb-type-tag-display
.
ecb-type-tag-typedef-face:
ecb-type-tag-display
.
ecb-type-tag-union-face:
ecb-type-tag-display
.
ecb-mode-line-win-nr-face
ecb-mode-line-display-window-number
.
Just call customize-face <face-name>
to customize these faces
for your personal taste. Or customize the related option in the group
5.3.10 Group ecb-face-options.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for downloading and installing a new ECB from within ECB:
only-after-success
:
Archive is only deleted after successful installation
but not if a failure occurs during the installation process.
always
:
Archive is also deleted if an error occurs.
nil
:
Archive will never be deleted.
ECB installs a downloaded package in this directory, i.e. the downloaded archive X.tar.gz will be extracted in this directory so afterwards this directory contains a new subdirectory X which contains the downloaded package.
This directory must be write-able!
If you want to upgrade to a newer ECB-version via
ecb-download-ecb
or if you must upgrade to newer semantic-
eieio- and/or speedbar-versions (because ECB requires these newer
versions) then this option specifies which version-types are allowed.
ECB checks on the download-sites of ECB/semantic/eieio/speedbar which
versions are currently available and then downloads always the latest
version matching the specified type:
So, 2 means stable, 1 means stable and betas, 0 means stable, betas and alphas and -1 means ask the user for a version.
Per default stable and beta-versions are allowed (value 1).
But all versions must match the restrictions of the specified min- and max-versions of the required packages. For this see the file README!
ecb-download-ecb
will try to download this archive.
Note: Normally this URL should never change but who knows...
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for the ECB online help:
ecb-help-html-subdir
of
the installation directory of ECB. If it is installed as
XEmacs-package (e.g. via the package manager of XEmacs) then this is
probably either the directory "../../html/" or
"../../etc/ecb/html/" (both relative to the Elisp directory of ECB).
The path can either be an absolute path or a path relative to the directory where the Elisp files of ECB are.
Normally there should be no need to change this option!
ecb-help-info-subdir
of
the installation directory of ECB. If it is installed as
XEmacs-package (e.g. via the package manager of XEmacs) then this is
probably the directory "../../info/" (relative to the Elisp directory
of ECB).
The path can either be an absolute path or a path relative to the directory where the Elisp files of ECB are.
Normally there should be no need to change this option!
ecb-show-help
shows its online help. Allowed values
are 'info (for the Info format) and 'html (for HTML format). If the
value is 'html then browse-url-browser-function
says which
browser is used.
Note: If you got ECB as a standard XEmacs-package maybe the HTML-online-documentation is not included.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for eshell integration within the ECB:
ecb-compile-window-height
) then nothing is done.
eshell
. This
takes only effect if the command eshell
is called!
ecb-eshell-fit-window-to-output
which is
added to eshell-post-command-hook
ie. which is running autom.
after each eshell-command.
ecb-eshell-current-buffer-sync
which can be called
interactively but normally it is called autom. by the
ecb-current-buffer-sync-hook
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for parsing and displaying non-semantic files:
This option is only relevant for sources which are supported and
parsed by etags (see ecb-process-non-semantic-files
). Because
etags is an external tool a source-buffer can only be reparsed if the
buffer is saved to disk. So the command
ecb-rebuild-methods-buffer
checks for sources which are not
supported by semantic or imenu if either this option is t or if the
major-mode of the source-buffer is contained in this list: In both
cases ECB saves the current source-buffer before it re-runs etags for
reparsing the source. If nil or if the major-mode is not contained
then no automatic saving will be done!
For all source supported by semantic or by imenu this option takes no effect.
ecb-non-semantic-parsing-function
). If a file-type can not be
parsed by semantic, imenu or etags than this simply results in an
empty method-buffer for this file. But nevertheless you will get a
message "Sorry, no support for a file of that extension" which comes
from the speedbar-library and can not switched off. Therefore if a
major-mode
is known as not parse-able by semantic, imenu or etags
it can be added to this option and then it will be excluded from being
tried to parsed.
major-mode
is contained in this option then all tags for this
modes will be initially expanded - otherwise not.
speedbar-insert-generic-list
. speedbar has
already included two functions speedbar-fetch-dynamic-imenu
and
speedbar-fetch-dynamic-etags
which can be used for parsing
buffers with imenu rsp. etags.
This option takes only effect if ecb-process-non-semantic-files
is not nil: Then ECB checks for non-semantic buffers if current
major-mode
is contained in this option and if yes, then the
specified parsing function is called; if not then the cars of the
elements of speedbar-dynamic-tags-function-list
are called in
that sequence they are listed in this variable. See option
speedbar-dynamic-tags-function-list
for further details.
In most cases imenu-parsing is preferable over etags-parsing because imenu operates on Emacs-buffers and needs no external tool and therefore parsing works also if current contents of a buffer are not saved to disk. But maybe sometimes etags may return better parsing results
IMPORTANT: if imenu-parsing should be used then the option
speedbar-use-imenu-flag
must be set to not nil!
ecb-non-semantic-parsing-function
.
ecb-rebuild-methods-buffer-for-non-semantic
. This function is
always called by the command ecb-rebuild-methods-buffer
for not
semantic supported source-types.
Every function of this hook gets one argument: The complete filename
of the current source-buffer in the edit-window. The Method-buffer is
only rebuild by ecb-rebuild-methods-buffer-for-non-semantic
if
either the hook contains no function (the default) or if no function
of this hook returns nil! See run-hook-with-args-until-failure
for description how these function are processed.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for supporting several window-managers:
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for the modelines of the ECB-tree-buffers:
ecb-mode-line-prefixes
- its completely the same.
The cdr is the data for ths modeline and can either be the symbol
sel-dir
or sel-source
whereas the former one displays
the current selected directory as modeline-data and the latter one the
current selected source-file (without path).
In addition to these two predefined values for every special
ECB-buffer a plain string (which is displayed) or a function can be
specified which gets three args (name of the buffer, current selected
directory and current selected source-file) and must return a string
which will be displayed in the modeline (or nil if no data should be
displayed). Such a function can add the text-property help-echo
to the result-string. Then this help-string will be displayed when the
user moves the mouse over this section of the modeline.
If a special ECB-buffer should not display special data in its modeline then this buffer-name should either not being added to this option or added with "No data" (= nil as cdr).
The whole modeline of the special ECB-buffer consists of the prefix of
ecb-mode-line-prefixes
and the data of
ecb-mode-line-data
- eventually prepended by the window-number,
see ecb-mode-line-display-window-number
.
ecb-mode-line-data
. For XEmacs the face should inherit from the
face modeline
(see set-face-parent
)!
other-window
or next-window
would walk
through the frame.
This can be used to jump to windows by number with commands like:
(defun my-switch-to-window-number (number) ``Switch to the nth window'' (interactive ``P'') (if (integerp number) (select-window (nth number (window-list))))) |
Currently this feature is only available for GNU Emacs 21.X, because neither GNU Emacs < 21 nor XEmacs can evaluate dynamically forms in the mode-line.
ecb-mode-line-data
) then
also the string ": " is appended.
Everey element of this list is a cons-cell where the car is used to define a buffer-name and the cdr to define the modeline-prefix for that buffer.
The buffer-name can either be defined as plain string or with a symbol
which contains the buffer-name as value. The latter one is recommended
to define a prefix for one of the builtin ECB-tree-buffers because
then simply the related option-symbol can be used. To add a prefix for
the builtin directories tree-buffer just set the symbol
ecb-directories-buffer-name
as car.
The cdr is the prefix for a buffer and can either be a string which
used as it is or a function-symbol which is called with three argument
(the buffer-name, the current selected directory and the current
selected source-file) and must return either nil (for no prefix) or a
string which is then used a prefix. Such a function can add the
text-property help-echo
to the result-string. Then this
help-string will be displayed when the user moves the mouse over this
section of the modeline.
If a special ECB-buffer should not have a prefix in its modeline then this buffer-name should either not being added to this option or added with "No prefix" (= nil as cdr).
ecb-mode-line-prefixes
. For XEmacs the face should inherit from
the face modeline
(see set-face-parent
)!
ecb-mode-line-display-window-number
. For XEmacs the face should
inherit from the face modeline
(see set-face-parent
)!
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This group contains settings for the version-control-support of ECB:
ecb-vc-enable-support
is not nil.
ecb-show-sources-in-directories-buffer
is on for current
layout), the sources-buffer and the history-buffer all file-items are
displayed with an appropriate icon in front of the item-name to
indicate the VC-state of this item. If off then no
version-control-state checking is done.
Because this check can be take some time if files are managed by a not
local Version-control-server ECB performs this check stealthy (see
ecb-stealthy-tasks-delay
) so normally there should no
performance-decrease or additional waiting-time for the user. But to
get sure this option offers three choices: t
,
unless-remote
and nil
. See the option
ecb-prescan-directories-for-emptyness
for an explanation for
these three choices.
The option ecb-vc-directory-exclude-regexps
offers are more
fine granularity to exclude the sources of certain directories from
the VC-state-check.
See ecb-vc-supported-backends
and ecb-vc-state-mapping
how to customize the VC-support itself.
up-to-date
edited
needs-patch
needs-merge
added
unlocked-changes
ignored
unknown
All state-values a check-vc-state-function of
ecb-vc-supported-backends
can return must have a mapping to one
of the ECB-state-values listed above. If for a certain
backend-VC-state no mapping can be found then per default 'edited is
assumed!
The default value of this option maps already the possible returned
state-values of vc-state
and vc-recompute-state
(both
GNU Emacs) and vc-cvs-status
(Xemacs) to the
ECB-VC-state-values.
Identify-backend-function: It gets a full directory-name as argument - always without ending slash (rsp. backslash for native Windows-XEmacs) - and has to return a unique symbol for the VC-backend which manages that directory (e.g. 'CVS for the CVS-system or 'RCS for the RCS-system) or nil if the file is not managed by a version-control-system.
Check-vc-state-function: It gets a full filename (ie. incl. the
complete directory-part) and has to return a symbol which indicates
the VC-state of that file. The possible returned values of such a
check-vc-state-function have to be mapped with
ecb-vc-state-mapping
to the allowed ECB-VC-state values.
ECB runs for a certain DIRECTORY all identify-backend-functions in that order they are listed in this option. For the first which returns a value unequal nil the associated check-state-function is used to retrieve the VC-state of all sourcefiles in that DIRECTORY.
There is no need for the identify-backend-function or the check-vc-state-function to cache any state because ECB automatically caches internally all necessary informations for directories and files for best possible performance.
To prepend ECB from checking the VC-state for any file set
ecb-vc-enable-support
to nil.
Default value for GNU Emacs: Support for CVS, RCS, SCCS and Subversion
(for the later one the most recent version of the VC-package incl. the
vc-svn library is needed) is added per default. To identify the
VC-backend the functions ecb-vc-managed-by-CVS
,
ecb-vc-managed-by-RCS
rsp. ecb-vc-managed-by-SCCS
rsp.
ecb-vc-managed-by-SVN
are used. For all three backends the
function ecb-vc-state
of the VC-package is used.
Default value for XEmacs: XEmacs contains only a quite outdated
VC-package, especially there is no backend-independent
check-vc-state-function available (like vc-state
for GNU
Emacs). Only for CVS a check-vc-state-function is available:
vc-cvs-status
. Therefore ECB adds per default only support for
CVS and uses ecb-vc-managed-by-CVS
rsp. vc-cvs-status
.
Example for GNU Emacs: If vc-recompute-state
(to get real
state-values not only heuristic ones) should be used to check the
state for CVS-managed files and vc-state
for all other backends
then an element (ecb-vc-dir-managed-by-CVS . vc-recompute-state)
should be added at the beginning of this option.
vc-cvs-stay-local
. So this option takes only
effect if vc-cvs-stay-local
is not avaiable. In this case ECB
treats directories which are managed by CVS but have a remote
repository as if the directory would be not managed by CVS (so the
files are not checked for their VC-state). This si done to avoid
blocking XEmacs when running full cvs-commands (e.g. "cvs status")
over the net.
Note: When ECB can find the option vc-cvs-stay-local
then this
option will automatically take no effect regardless which
Emacs-version is used.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |