Node:ecb-methods, Next:, Previous:ecb-sources, Up:Customizable options



Group ecb-methods

This group contains settings for the methods-buffer in the ECB:

auto-expand-tag-tree User Option
Expand the methods-tag-tree automatically if node invisible.

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!

auto-update-methods-after-save User Option
Automatically updating the ECB method buffer after saving a source.

exclude-parents-regexp User Option
Regexp which parent classes should not be shown in the methods buffer (see also 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!

expand-methods-switch-off-auto-expand User Option
Switch off auto expanding in the ECB-method buffer. If on then auto expanding is switched off after explicit expanding or collapsing by 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.

font-lock-tags User Option
Adds font-locking (means highlighting) to the ECB-method buffer.

This options takes only effect for semantic-sources - means sources supported by semantic!

highlight-tag-with-point User Option
How to highlight the method or variable under the cursor.
  • 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!

highlight-tag-with-point-delay User Option
Time Emacs must be idle before current tag is highlighted. If nil then there is no delay, means current tag is highlighted immediately. A small value of about 0.25 seconds saves CPU resources and you get even though almost the same effect as if you set no delay. But such a delay prevents also "jumping backward/forward" during scrolling within java-classes if point goes out of method-definition into class-definition. Therefore the default value is a delay of 0.25 seconds.

This options takes only effect for semantic-sources - means sources supported by semantic!

methods-buffer-after-create-hook User Option
Local hook running after the creation of the methods-buffer. Every function of this hook is called once without arguments direct after creating the methods-buffer of ECB and it's local key-map. So for example a function could be added which performs calls of local-set-key to define new keybindings only for the methods-buffer of ECB.

methods-buffer-name User Option
Name of the ECB methods buffer. Because it is not a normal buffer for editing you should enclose the name with stars, e.g. " *ECB Methods*".

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!

methods-menu-sorter User Option
Function which re-sorts the menu-entries of the directories buffer.

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.

methods-menu-user-extension User Option
Static user extensions for the popup-menu of the methods buffer. For further explanations see 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.

methods-menu-user-extension-function User Option
Dynamic user extensions for the popup-menu of the methods buffer. A function which has to return a list in the same format like the option 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.

methods-nodes-collapse-spec User Option
Semantic tag-types collapsed by 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!

methods-nodes-expand-spec User Option
Semantic tag-types expanded by 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!

post-process-semantic-taglist User Option
Define mode-dependent post-processing for the semantic-taglist. This is an alist where the car is a major-mode symbol and the cdr is a list of function-symbols of functions which should be used for post-processing the taglist (returned by 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!

show-only-positioned-tags User Option
Show only nodes in the method-buffer which are "jump-able". If not nil then ECB displays in the method-buffer only nodes which are "jump-able", i.e. after selecting it by clicking or with RET then ECB jumps to the corresponding location in the edit-window. Example: With CLOS or Eieio source-code there can exist some position-less nodes like variable-attributes in a 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!

show-tags User Option
How to show tags in the methods buffer first time after find-file. This variable is a list where each element represents a type of tags:
(<tag type> <display type> <sort method>)

The tags in the methods buffer are displayed in the order as they appear in this list.

<tag type>
A Semantic tag type symbol (function, variable, rule, include etc.) or one of the following:
  • t: All tag types not specified anywhere else in the list.
  • parent: The parents of a type.

<display type>
A symbol which describes how the tags of this type shall be shown:
  • 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>
A symbol describing how to sort the tags of this type:
  • 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!

tag-display-function User Option
Function to use for displaying tags in the methods buffer. This functionality is set on major-mode base, i.e. for every major-mode a different function can be used. The value of this option is a list of cons-cells:
  • The car is either a major-mode symbol or the special symbol 'default which means if no function for a certain major-mode is defined then the cdr of the 'default cons-cell is used.
  • The cdr is the function used for displaying a tag in the related major-mode.

Every function is called with 3 arguments:

  1. The tag
  2. The parent-tag of tag (can be nil)
  3. The value of 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:

  • For each element E of 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.
  • For every cdr in 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:
    • The ECB-version displays for type tags only the type-name and nothing else (exception: In c++-mode a template specifier is appended to the type-name if a template instead a normal class).
    • The ECB-version displays type-tags according to the setting in 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!

tag-jump-sets-mark User Option
Set the mark after jumping to a tag from the ECB-method buffer. If set the user can easily jump back.

tag-visit-post-actions User Option
Actions to perform after visiting a tag from the Method-buffer. With this option actions can be added which will be performed after visiting the start of the tag in the source-buffer.

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:

  • The car is either a major-mode symbol or the special symbol 'default.
  • The cdr is a list of action-functions or nil.

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.

type-tag-display User Option
How to display semantic type-tags in the methods buffer. Normally all tag displaying, colorizing and facing is done by semantic according to the value returned by 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:

  • 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.
  • The cdr is a list of 3-element-lists:
    1. First entry is a semantic type specifier in string-form. Current available type specifiers are for example "class", "interface", "struct", "typedef" and "enum". In addition to these ones there is also a special ECB type specifier "group" which is related to grouping tags (see 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.
    2. Second entry is a flag which indicates if the type-specifier string from (1.) itself should be removed (if there is any) from the display.
    3. Third entry is the face which is used in the ECB-method window to display type-tags with this specifier. ECB has some predefined faces for this (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!

type-tag-expansion User Option
Default expansion of semantic type-tags. Semantic groups type-tags in different type-specifiers. Current available type specifiers are for example "class", "interface", "struct", "typedef", "union" and "enum". In addition to these ones there is also a special ECB type-specifier "group" which is related to grouping tags (see 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:

  • 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.
  • The cdr is either a list of type-specifiers which should be expanded at file-open-time or the symbol 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!