This is ecb.info, produced by makeinfo version 4.2 from ecb.texi. INFO-DIR-SECTION GNU Emacs Lisp START-INFO-DIR-ENTRY * ECB: (ecb). Emacs Code Browser END-INFO-DIR-ENTRY  File: ecb.info, Node: Back/forward navigation, Next: ECB-window synchronizing, Prev: Maximizing the ECB windows, Up: Usage of ECB Back- and forward navigation like a browser =========================================== With ECB you can "browse" in your source-files like with a web-browser. This means ECB stores the current buffer- and window-position relative to the current tag(1) in the edit-window after - selecting a tag in the ECB-methods buffer or - selecting a source-file in the ECB-sources/history-buffer. ECB offers two commands `ecb-nav-goto-next' (`C-c . n') and `ecb-nav-goto-previous' (`C-c . p') to go forward and backward within this navigation history-list. These commands are also available via the menu "ECB -> Navigate". Aside normal "location-browsing" this is useful for example in a scenario where the buffer is narrowed to a tag (see `ecb-tag-visit-post-actions'): 1. You edit a function 2. Goto another function above the current in the same file 3. Add a few lines 4. Call ecb-nav-goto-previous Now you will edit at the same place in the function. ---------- Footnotes ---------- (1) e.g. a method, a variable or any other semantic tag  File: ecb.info, Node: ECB-window synchronizing, Next: Stealthy background tasks, Prev: Back/forward navigation, Up: Usage of ECB Synchronization of the ECB-windows ================================== Per default ECB synchronizes automatically the contents of the ECB-windows/tree-buffers with the current active edit-window (rsp. the current buffer of the edit window): * ECB-directories: This windows is synchronized to display the directory where the source-file which is displayed in the current active edit-window is located. If the source-path (i.e. an element of the option `ecb-source-path') containing this directory is not expanded it will be auto. expanded according to the value of the option `ecb-auto-expand-directory-tree' (*note ecb-directories::). * ECB-sources: The ECB-sources-buffer contains after synchronizing all the sources of the directory of the "current" source-file displayed in the edit-window. The entry of the "current" source-file is highlighted. * ECB-methods: Contains after synchronizing all the tags of the buffer in the current selected edit-window, i.e. all methods, variables etc... depending on the major-mode. * ECB-history: Highlights the entry of the buffer displayed in the current active edit-window if this buffer is a source-file. This feature can be customized with the option `ecb-window-sync': If active then the synchronization takes place whenever a buffer changes in an edit window or if another edit-window with another buffer will be selected, if deactivated then never. But you can also set this option to a list of major-modes and then the sync. will only be done if the major-mode of the current buffer does NOT belong to this list. But in every case the synchronization only takes place if the major-mode of the current-buffer in the current selected edit-window has a relation to files or directories. Examples for the former one are all programming-language-modes like `c++-mode' or `java-mode', `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 a synchronization will never 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 of the dired-buffer in the edit-window. If you often need to toggle between autom. synchronization on and off then customizing the option `ecb-window-sync' is inefficient and therefore ECB offers the command `ecb-toggle-window-sync'. *Please note*: With the command `ecb-window-sync' you can do a manual synchronization if the automatic one is switched off or if you just want to do this!  File: ecb.info, Node: Stealthy background tasks, Next: Interactive ECB commands, Prev: ECB-window synchronizing, Up: Usage of ECB Stealthy background-tasks of ECB ================================ ECB performs some tasks stealthily in the background and also interruptable by the user because these tasks can be time-consuming and could otherwise block ECB. Currently the following tasks are performed stealthily and in the background by ECB: Prescann directories for emptyness Prescann directories and display them as empty or not-empty in the directories-buffer. See the documentation of the option `ecb-prescan-directories-for-emptyness' for a description. File is read only Check if sourcefile-items of the directories- or sources-buffer are read-only or not. See documentation of the option `ecb-sources-perform-read-only-check'. Version-control-state Checks the version-control-state of files in directories which are managed by a VC-backend. See the option `ecb-vc-enable-support'. All of these tasks (e.g. checking if a directory is empty or not) perform a certain action for all directories or sources displayed in the current visible tree-buffers of ECB. Normally there should be no annoying delay for the user because each of these tasks will be only performed when Emacs is idle and will be interrupted immediatelly when a user hits a key or clicks the mouse but especially for remote-directories one single action (e.g. checking if a certain directory is empty or checking the VC-state of a sourcefile in such a remote directory) can be very time-consuming and such a single action is not interruptable (an interrupt can only occur between the single-actions for two directories or sources) For a further discussion how to deal best with remote directories see *Note Remote directories::.! ECB offers for all stealthy tasks three steps of activation: * `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. In combination with the option `ecb-stealthy-tasks-delay' these three choices already allow adapting the stealthy tasks to most needs. But to offer finest granularity for which directories a certain stealthy task should be switched on and for which not ECB offers for every stealthy task an additional option which allows a finer adjustment: * Prescanning directories for emptyness: `ecb-prescan-directories-exclude-regexps'. * Checking the read-only-state of a sourcefile: `ecb-read-only-check-exclude-regexps' * Checking the VC-state of sourcefiles: `ecb-vc-directory-exclude-regexps' These options take only effect when the related task is not completely switched off. If this is the case they allow excluding certain directories (or the sources of directories) from being processed by a certain stealthy task.  File: ecb.info, Node: Interactive ECB commands, Prev: Stealthy background tasks, Up: Usage of ECB Interactive ECB commands ======================== ECB offers a lot of interactive commands. Some of these commands prompt the user in the minibuffer if called with a prefix argument. Example: If `ecb-clear-history' is called with a prefix argument then you will be prompted in the minibuffer with: Clear from history: [all, not-existing-buffers, existing-buffers] You can choose one of the options enclosed in brackets with TAB-completion; hitting RET direct after the prompt chooses auto. the first offered option (in the example above "all"). *Please note*: The following interactive commands of ECB are listed without the prefix "ecb-" (e.g. the command `ecb-activate' is listed with name "activate"). This has been done for a better readable command index. *Note Command Index::. - Command: activate Activates ECB and creates the special buffers for the choosen layout. For the layout see `ecb-layout-name'. This function always raises the ECB-frame if called from another frame. This is the same as calling `ecb-minor-mode' with a positive argument. - Command: add-all-buffers-to-history Add all current file-buffers to the history-buffer of ECB. Dependend on the value of `ecb-history-sort-method' afterwards the history is sorted either by name or by extension. If `ecb-history-sort-method' is nil the most recently used buffers are on the top of the history and the seldom used buffers at the bottom. - Command: analyse-buffer-sync Synchronize the analyse buffer with the current buffer and point. This means in fact display the current analysis for current point. - Command: change-layout &optional preselect-type Select a layout-name from all current available layouts (TAB-completion is offered) and change the layout to the selected layout-name. If optional argument PRESELECT-TYPE is not nil then you can preselect a layout-type \(TAB-completion is offered too) and then you will be asked only for layouts of that preselected type. Note: This function works by changing the option `ecb-layout-name' but only for current Emacs-session. - Command: clear-history Clears the history-buffer. - Command: customize Open a customize-buffer for all customize-groups of ECB. - Command: customize-most-important Open a customize-buffer for the most important options of ECB. - Command: create-new-layout Start process for interactively creating a new ECB-layout (*note Creating a new ECB-layout::). - Command: cycle-maximized-ecb-buffers Cycles through all ecb-buffers of current layout by maximizing exactly one of the ecb-windows after every cycle-step. - Command: cycle-through-compilation-buffers &optional choose-buffer Cycle through all compilation buffers currently open and display them within the compilation window `ecb-compile-window'. If the currently opened buffer within the compilation window is not a compilation buffer, we jump to the first compilation buffer. If not we try to loop through all compilation buffers. If we hit the end we go back to the beginning. If CHOOSE-BUFFER is not `nil' then the user will be prompted for the compilation-buffer to switch to. - Command: deactivate Deactivates the ECB and kills all ECB buffers and windows. - Command: delete-new-layout Select a layout-name for a layout created by `ecb-create-new-layout' and delete this layout. This means the layout-definition is removed from the file `ecb-create-layout-file' and the layout-function and associated aliases are unbound. - Command: display-news-for-upgrade &optional FULL-NEWS Display the most important NEWS after an ECB-upgrade. If you call this function but no ECB-upgrade has been performed before starting ECB then nothing is display unless FULL-NEWS is not nil. If FULL-NEWS is not nil then the NEWS-file is displayed in another window. - Command: display-upgraded-options Display a information-buffer which options have been upgraded or reset. Offers two buttons where the user can decide if the upgraded options should also being saved by ECB for future settings or if the buffer should be killed. If saving is possible this command display where the options would be saved. It is that file Emacs uses to save customize-settings. This file is "computed" from the settings in `custom-file' and `user-init-file' (see the documentation of these variables). ECB automatically makes a backup-file of that file which will be modified by storing the upgraded rsp. renamed ECB-options. This backup file gets a unique name by adding a suffix ".before_ecb_" to the name of the modified file. If such a file already exists ECB adds a unique number to the end of the filename to make the filename unique. This is a safety mechanism if something fails during storing the upgraded options, so you never lose the contents of your customization-file! - Command: download-ecb Download ECB from the ECB-website and install it. For this the option `ecb-download-url' must be set correct, whereas the default value of this option should always be correct. If `ecb-download-package-version-type' is set to -1 (means asking for a version) then you will be ask in the minibuffer for the version to download. Otherwise ECB downloads autom. the latest version available for the type specified in `ecb-download-package-version-type'. If no newer version than the current one is available no download will be done. For details about downloading and what requirements must be satisfied see function `ecb-package-download' and option `ecb-download-package-version-type'! After successful downloading the new ECB will be installed in a subdirectory of `ecb-download-install-parent-dir'. After adding this subdirectory to `load-path' and restarting Emacs the new ECB version can be activated by `ecb-activate'. If current running ECB is installed as regular XEmacs-package and not with the archive available at the ECB website then this function asks for proceeding! - Command: download-semantic Download semantic from the semantic-website and install it. For this the variable `ecb-cedet-url' must be set correct, whereas the default value of this variable should always be correct. If `ecb-download-package-version-type' is set to -1 (means asking for a version) then you will be ask in the minibuffer for the version to download. Otherwise ECB downloads autom. the latest version available for the type specified in `ecb-download-package-version-type'. If no newer version than the current one is available no download will be done. For details about downloading and what requirements must be satisfied see function `ecb-package-download' and option `ecb-download-package-version-type'! After successful downloading the new semantic will be installed in a subdirectory of `ecb-download-install-parent-dir'. After adding this new subdirectory to `load-path' and restarting Emacs the new semantic version is loaded and is used after next start of ECB. If current running semantic is installed as regular XEmacs-package and not with the archive available at the semantic website then this function asks for proceeding! - Command: expand-methods-nodes &optional force-all Set the expand level of the nodes in the ECB-methods-buffer. This command asks in the minibuffer for an indentation level LEVEL. With this LEVEL you can precisely specify which level of nodes should be expanded. LEVEL means the indentation-level of the nodes. A LEVEL value X means that all nodes with an indentation-level <= X are expanded and all other are collapsed. A negative LEVEL value means all visible nodes are collapsed. Nodes which are not indented have indentation-level 0! Which node-types are expanded (rsp. collapsed) by this command depends on the options `ecb-methods-nodes-expand-spec' and `ecb-methods-nodes-collapse-spec'! With optional argument FORCE-ALL all tags will be expanded/collapsed regardless of the values of these options. Examples: - LEVEL = 0 expands only nodes which have no indentation itself. - LEVEL = 2 expands nodes which are either not indented or indented indented once or twice - LEVEL ~ 10 should normally expand all nodes expect there are nodes which are indented deeper than 10. Note 1: This command switches off auto. expanding of the method-buffer if `ecb-expand-methods-switch-off-auto-expand' is not nil. But it can be switched on again quickly with `ecb-toggle-auto-expand-tag-tree' or `[C-c . a]'. Note 2: All this is only valid for file-types parsed by semantic. For other file types which are parsed by imenu or etags (see `ecb-process-non-semantic-files') FORCE-ALL is always true! - Command: dump-semantic-toplevel Dump the current semantic-tags in special buffer and display them. - Command: eshell-current-buffer-sync Synchronize the eshell with the directory of current source-buffer. This is only done if the eshell is currently visible in the compile-window of ECB and if either this function is called interactively or `ecb-eshell-synchronize' is not nil. - Command: eshell-recenter Recenter the eshell window so that the prompt is at the buffer-end. - Command: expand-directory-nodes Set the expand level of the nodes in the ECB-directories-buffer. For argument LEVEL see `ecb-expand-methods-nodes'. Be aware that for deep structured paths and a lot of source-paths this command can last a long time - depending on machine- and disk-performance. - Command: goto-window-analyse Make the ECB-analyse window the current window. - Command: goto-window-compilation Goto the ecb compilation window `ecb-compile-window'. - Command: goto-window-directories Make the ECB-directories window the current window. If `ecb-use-speedbar-instead-native-tree-buffer' is `dir' then goto to the speedbar-window. - Command: goto-window-edit1 Make the (first) edit-window window the current window. - Command: goto-window-edit2 Make the second edit-window (if available) window the current window. - Command: goto-window-edit-last Make the last selected edit-window window the current window. This is the same as if `ecb-mouse-click-destination' is set to `last-point'. - Command: goto-window-history Make the ECB-history window the current window. - Command: goto-window-methods Make the ECB-methods window the current window. If `ecb-use-speedbar-instead-native-tree-buffer' is `method' then goto to the speedbar-window. - Command: goto-window-sources Make the ECB-sources window the current window. If `ecb-use-speedbar-instead-native-tree-buffer' is `source' then goto to the speedbar-window. - Command: history-filter Apply a filter to the history-buffer to reduce the number of entries. So you get a better overlooking. There are three choices: - Filter by extension: Just insert the extension you want the History-buffer being filtered. Insert the extension without leading dot! - Filter by regexp: Insert the filter as regular expression. - No filter: This means to display an entry for all currently living file-buffers. - Command: jde-display-class-at-point Display in the ECB-methods-buffer the contents (methods, attributes etc...) of the class which contains the definition of the "thing" under point (this can be a variable-name, class-name, method-name, attribute-name). This function needs the same requirements to work as the method-completion feature of JDEE (see `jde-complete')!. The source-file is searched first in `jde-sourcepath', then in `jde-global-classpath', then in $CLASSPATH, then in current-directory. Works only for classes where the source-code (i.e. the *.java-file) is available. - Command: maximize-window-analyse Maximize the ECB-analyse-window. I.e. delete all other ECB-windows, so only one ECB-window and the edit-window(s) are visible (and maybe a compile-window). Works also if the ECB-analyse-window is not visible in current layout. - Command: maximize-window-directories Maximize the ECB-directories-window, i.e. delete all other ECB-windows, so only one ECB-window and the edit-window(s) are visible (and maybe a compile-window). Works also if the ECB-directories-window is not visible in current layout. - Command: maximize-window-sources Maximize the ECB-sources-window, i.e. delete all other ECB-windows, so only one ECB-window and the edit-window(s) are visible (and maybe a compile-window). Works also if the ECB-sources-window is not visible in current layout. - Command: maximize-window-methods Maximize the ECB-methods-window, i.e. delete all other ECB-windows, so only one ECB-window and the edit-window(s) are visible (and maybe a compile-window). Works also if the ECB-methods-window is not visible in current layout. - Command: maximize-window-history Maximize the ECB-history-window, i.e. delete all other ECB-windows, so only one ECB-window and the edit-window(s) are visible (and maybe a compile-window). Works also if the ECB-history-window is not visible in current layout. - Command: maximize-window-speedbar Maximize the ECB-speedbar-window, i.e. delete all other ECB-windows, so only one ECB-window and the edit-window(s) are visible (and maybe a compile-window). Does nothing if the speedbar-window is not visible within the ECB-frame. - Command: methods-filter Apply a filter to the Methods-buffer to reduce the number of entries. So you get a better overlooking. There are six choices: * Filter by protection: Just insert the protection you want the Methods-buffer being filtered: private, protected or public! * Filter by regexp: Insert the filter as regular expression. * Filter by tag-class: You can filter by the tag-classes of current major-mode. The available tag-classes come from the variable `semantic--symbol->name-assoc-list'. The are normally methods, variables etc. * Filter by current type: In languages which have types like Java or C++ this filter displays only the current type and all its members (e.g. attributes and methods). If ECB can not identify the current type in the source-buffer or in the methods-window then nothing will be done. * Filter by a filter-function: Such a function gets two arguments: a tag and the source-buffer of this tag. If the tag should be displayed (i.e. not being filtered out) then the function has to return not nil otherwise nil. * No special filter: This means to display all tags specified with the option `ecb-show-tokens'. If currently some of the above filters are applied they will be all removed. * Delete the last added: This removes only the topmost filter-layer, means that filter added last. The protection-, current-type- and the tag-class-filter are only available for semantic-supported sources. Be aware that the tag-list specified by the option `ecb-show-tags' is the basis of all filters, i.e. tags which are excluded by that option will never be shown regardless of the filter type here! All tags which match the applied filter(s) will be displayed in the Methods-buffer. If called with a prefix-argument or when optional arg INVERSE is not nil then an inverse filter is applied to the Methods-buffer, i.e. all tags which do NOT match the choosen filter will be displayed in the Methods-buffer! Per default the choosen filter will be applied on top of already existing filters. This means that filters applied before are combined with the new filter. This behavior can changed via the option `ecb-methods-filter-replace-existing'. But regardless of the setting in `ecb-methods-filter-replace-existing' applying one of the not-inverse filters protection, tag-class or current-type always replaces exactly already existing filters of that type. On the other hand applying more than one inverse tag-class- or protection-filter can make sense. Such a filter is only applied to the current source-buffer, i.e. each source-buffer can have its own tag-filters. The current active filter will be displayed in the modeline of the Methods-buffer [regexp, prot (= protection), tag-class, function (= filter-function)]. If an inverse filter has been applied then this is signalized by a preceding caret ^. If currently more than 1 filter is applied then always the top-most filter is displayed in the modeline but the fact of more than 1 filter is visualized by the number of the filters - included in parens. You can see all currently applied filters by moving the mouse over the filter-string in modeline of the Methods-buffer: They will displayed as help-echo. See the option `ecb-default-tag-filter' if you search for automatically applied default-tag-filters. - Command: methods-filter-current-type Display in the Methods-buffer only the current type and its members. For further details see `ecb-methods-filter'. - Command: methods-filter-delete-last Remove the most recent filter from the Methods-buffer. For further details see `ecb-methods-filter'. - Command: methods-filter-function &optional inverse Filter the methods-buffer by a function. If INVERSE is not nil (called with a prefix arg) then an inverse filter is applied. For further details see `ecb-methods-filter'. - Command: methods-filter-nofilter Remove any filter from the Methods-buffer. For further details see `ecb-methods-filter'. - Command: methods-filter-protection &optional inverse Filter the methods-buffer by protection. If INVERSE is not nil (called with a prefix arg) then an inverse filter is applied. For further details see `ecb-methods-filter'. - Command: methods-filter-regexp &optional inverse Filter the methods-buffer by a regexp. If INVERSE is not nil (called with a prefix arg) then an inverse filter is applied. For further details see `ecb-methods-filter'. - Command: methods-filter-tagclass &optional inverse Filter the methods-buffer by tag-class. If INVERSE is not nil (called with a prefix arg) then an inverse filter is applied. For further details see `ecb-methods-filter'. - Command: minor-mode &optional arg Toggle ECB minor mode. With prefix argument ARG, turn on if positive, otherwise off. Return non-`nil' if the minor mode is enabled. - Command: nav-goto-previous Go backward in the navigation history-list, see *Note Back/forward navigation::. - Command: nav-goto-next Go forward in the navigation history-list, see *Note Back/forward navigation::. - Command: rebuild-methods-buffer Updates the methods buffer with the current buffer after deleting the complete previous parser-information, means no semantic-cache is used! Point must stay in an edit-window otherwise nothing is done. This method is merely needed for semantic parsed buffers if semantic parses not the whole buffer because it reaches a not parse-able code or for buffers not supported by semantic but by imenu or etags. Examples when a call to this function can be necessary: * If an Elisp-file is parsed which contains in the middle a defun X where the closing ) is missing then semantic parses only until this defun X is reached and you will get an incomplete ECB-method buffer. In such a case you must complete the defun X and then call this function to completely reparse the Elisp-file and rebuild the ECB method buffer! * For not semantic supported buffers which can be parsed by imenu or etags (see `ecb-process-non-semantic-files') because for these buffers there is no built-in auto-rebuild mechanism. For these buffers this command calls `ecb-rebuild-methods-buffer-for-non-semantic'. For non-semantic-sources supported by etags the option `ecb-auto-save-before-etags-methods-rebuild' is checked before rescanning the source-buffer and rebuilding the methods-buffer. If point is in one of the ecb-windows or in the compile-window then this command rebuids the methods-buffer with the contents of the source-buffer the last selected edit-window. - Command: redraw-layout &optional ARG Redraw the ECB screen. Do not call this command from elisp-program but only interactively! Called without a prefix-argument the state of the ECB-frame-layout will preserved. This means: - The state of compile-window (hidden or visible) will be preserved but if visible then the height will be as specified in `ecb-compile-window-height'. - The state of the ECB-windows will be preserved (hidden or visible) but if visible then the sizes will be as specified in the layout (and with the options `ecb-windows-width' and `ecb-windows-height') or as stored with `ecb-store-window-sizes'. If called with ONE prefix-argument (`[C-u]') then the layout will be drawn with all ECB-windows and also with a visible compile-window (when `ecb-compile-window-height' is not nil). The splitting-state of the edit-area will be preserved. If called with TWO prefix-arguments (i.e. hitting `[C-u]' twice: (`[C-u]' `[C-u]') then an emergency-redraw will be performed. This means the same as if called with one prefix-argument (s.a.) but the splitting-state of the edit-area will NOT be preserved but all edit-windows besides the current one will be deleted. Use this only if there are some anomalies after standard redraws! If the variable `ecb-redraw-layout-quickly' is not nil then the redraw is done by the `ecb-redraw-layout-quickly' function, otherwise by `ecb-redraw-layout-full'. Please not: It's strongly recommended to use the quick redraw only if you have really slow machines where a full redraw takes several seconds because the quick redraw is not really safe and has some annoying drawbacks! On normal machines the full redraw should be done in << 1s so there should be no need for the quick version! - Command: restore-default-window-sizes Resets the sizes of the ECB windows to their default values. - Command: restore-window-sizes Sets the sizes of the ECB windows to their stored values. See option `ecb-layout-window-sizes' and command `ecb-store-window-sizes'. - Command: select-ecb-frame Selects the `ecb-frame' if ECB is activated - otherwise reports an error. - Command: show-help &optional format Shows the online help of ECB either in Info or in HTML format depending on the value of `ecb-show-help-format'. If called with prefix argument, i.e. if FORMAT is not nil then the user is prompted to choose the format of the help (Info or HTML). If an error about not finding the needed help-file occurs please take a look at the options `ecb-help-info-start-file' and `ecb-help-html-start-file'! Note: If you got ECB as a standard XEmacs-package maybe the HTML-online-documentation is not included. - Command: show-layout-help Select a name of a layout and shows the documentation of the associated layout-function. At least for the built-in layouts the documentation contains a picture of the outline of the chosen layout. - Command: show-tip-of-the-day Show tip of the day if `ecb-tip-of-the-day' is not nil or if called interactively. - Command: sources-filter Apply a filter to the sources-buffer to reduce the number of entries. So you get a better overlooking. There are three choices: - Filter by extension: Just insert the extension you want the Sources-buffer being filtered. Insert the extension without leading dot! - Filter by regexp: Insert the filter as regular expression. - No filter: This means to display an entry for every file in the current selected directory (all except these filter already filtered out by `ecb-source-file-regexps' and `ecb-sources-exclude-cvsignore'). Such a filter is only applied to the current selected directory, i.e. each directory has its own filtered sources-buffer. - Command: store-window-sizes &optional FIX Stores the sizes of the ECB windows for the current layout. The size of the ECB windows will be set to their stored values when `ecb-redraw-layout' or `ecb-restore-window-sizes' is called. To reset the window sizes to their default values call `ecb-restore-default-window-sizes'. Please read also the documentation of `ecb-layout-window-sizes'! 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. If a permanent compile-window is visible then ECB will tell you that window-sizes should be stored with hidden compile-window and ask you if you want proceed; if you proceed then the window-heights will be stored as fractions of current (frame-height minus current visible compile-window-height) so you should ensure that the current compile-window has its standard-height as specified in `ecb-compile-window-height'!. If FIX is not nil (means called with a prefix argument) then always the fixed values of current width and height are stored! - Command: submit-problem-report Submit a problem report for the ECB to the ECB mailing-list. This command generates in the edit-window a problem-report which contains already the current values of all ECB options, the current backtrace-buffer if there is any and the current message-buffer. You will be asked for a problem-report subject and then you must insert a description of the problem. Please describe the problem as detailed as possible! - Command: toggle-auto-expand-tag-tree &optional arg Toggle auto expanding of the ECB-methods-buffer. With prefix argument ARG, make switch on if positive, otherwise switch off. If the effect is that auto-expanding is switched off then the current value of `ecb-auto-expand-tag-tree' is saved so it can be used for the next switch on by this command. - Command: toggle-compile-window &optional arg Toggle the visibility of the compile-window of ECB. With prefix argument ARG, make visible if positive, otherwise invisible. The height of the compile-window is always the current value of `ecb-compile-window-height'! If called and `ecb-compile-window-height' is nil then ECB asks for the height of the compile-window, sets this height as new value of `ecb-compile-window-height' and displays the compile-window (so if you have called this command by mistake and you do not want a compile-window you have to quit with ). - Command: toggle-compile-window-height &optional arg Toggle whether the `ecb-compile-window' is enlarged or not. If ARG > 0 then shrink or enlarge the the compile-window according to the value of `ecb-enlarged-compilation-window-max-height'. But never shrink below the value of `ecb-compile-window-height'. If ARG <= 0 then shrink `ecb-compile-window' to `ecb-compile-window-height' and if ARG is nil then toggle the enlarge-state. - Command: toggle-ecb-windows &optional arg Toggle visibility of the ECB-windows. With prefix argument ARG, make visible if positive, otherwise invisible. This has nothing to do with (de)activating ECB but only affects the visibility of the ECB windows. ECB minor mode remains active! - Command: toggle-layout &optional last-one Toggles between the layouts defined in `ecb-toggle-layout-sequence' (See also option `ecb-show-sources-in-directories-buffer'). Note: This function works by changing the options `ecb-layout-name' but only for current Emacs-session. If optional argument LAST-ONE is not nil (e.g. called with a prefix-arg) then always the last selected layout was choosen regardless of the setting in `ecb-toggle-layout-sequence'. The last selected layout is always that layout which was current direct before the most recent layout-switch. So now a user can switch to another layout via `ecb-change-layout' and always come back to his previous layout via `[C-u]' `ecb-toggle-layout'. - Command: toggle-scroll-other-window-scrolls-compile &optional ARG Toggle the state of `ecb-scroll-other-window-scrolls-compile-window'. With prefix argument ARG, set it to `t', otherwise to `nil'. For all details about the scroll-behavior of `scroll-other-window' see the advice documentation of `other-window-for-scrolling'. - Command: toggle-window-sync &optional arg Toggle auto synchronizing of the ECB-windows. With prefix argument ARG, switch on if positive, otherwise switch off. If the effect is that auto-synchronizing is switched off then the current value of the option `ecb-window-sync' is saved so it can be used for the next switch on by this command. See also the option `ecb-window-sync'. - Command: update-directories-buffer Updates the ECB directories buffer. - Command: upgrade-options Check for all ECB-options if their current value is compatible to the defined type. If not upgrade it to the new type or reset it to the default-value of current ECB. Try also to upgrade renamed options. Displays all upgraded or reset options with their old (before the upgrade/reset) and new values. - Command: window-sync Synchronizes all special ECB-buffers with current buffer. Depending on the contents of current buffer this command performs different synchronizing tasks but only if ECB is active and point stays in an edit-window. * If current buffer is a file-buffer then all special ECB-tree-buffers are synchronized with current buffer. * If current buffer is a dired-buffer then the directory- and the sources-tree-buffer are synchronized if visible In addition to this the hooks in `ecb-current-buffer-sync-hook' run. Most of these functions are also available via the menu "ECB" and also via the ECB key-map with prefix `C-c .' (see `ecb-minor-mode' for a complete list of the keybindings).  File: ecb.info, Node: Customizing, Next: Submitting problem report, Prev: Usage of ECB, Up: Top Customizing ECB *************** 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). * Menu: * General aspects:: General aspects for customizing ECB * Most important options:: Which option you must know * Customizable options:: All customizable options of ECB  File: ecb.info, Node: General aspects, Next: Most important options, Prev: Customizing, Up: Customizing General aspects for customizing ECB =================================== 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. * Menu: * setq or customize:: Should i use setq or customize? * Site-wide customizing:: Site-wide customizing of ECB  File: ecb.info, Node: setq or customize, Next: Site-wide customizing, Prev: General aspects, Up: General aspects Setq or customize - what should i use? -------------------------------------- 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-do-not-leave-window-after-select' - `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'  File: ecb.info, Node: Site-wide customizing, Prev: setq or customize, Up: General aspects Site-wide customizing of ECB ---------------------------- 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(1)! 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! Storing all option-settings in the users custom-file .................................................... 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 persistent 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 Using a special setq for site-wide settings ........................................... 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 (*note setq or customize::). 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(2): (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) ---------- Footnotes ---------- (1) At least for the options for which `setq' is explicitly forbidden, but it is recommended to use always such a mechanism (2) The file `site-ecb.el' contains all site-wide settings for ECB  File: ecb.info, Node: Most important options, Next: Customizable options, Prev: General aspects, Up: Customizing The most important options of ECB ================================= 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' Where ECB can find your sources. You must set this option! `ecb-show-help-format' Should the online help of ECB be displayed in the standard Info format or in HTML format in a web-browser. `ecb-auto-activate' `ecb-major-modes-show-or-hide' Auto. activation of ECB after start (*note Automatic activation::) or major-mode-based showing or hiding the ecb-windows. `ecb-winman-escreen-number' `ecb-winman-winring-name' Support of several window-managers (*note Window-managers and ECB::). `ecb-key-map' All ECB-keybindings incl. a common prefix-key (*note Using the keyboard::). `ecb-new-ecb-frame' Should ECB create a new frame at activation time. `ecb-primary-secondary-mouse-buttons' `ecb-mouse-click-destination' Define how to use the mouse (*note Using the mouse::). `ecb-tree-buffer-style' `ecb-tree-expand-symbol-before' `ecb-tree-indent' `ecb-truncate-lines' The look&feel of the trees in the tree-buffers. The former option defines the general style of the tree-buffers and the latter ones allow to customize the ascii-style tree-buffers (maybe you like a value of 4 for the latter one if you display the expand-symbol before (*note Tree-buffer styles::). `ecb-source-file-regexps' Which files will (not) be shown in ECB. `ecb-show-node-info-in-minibuffer' When and which node-info should be displayed in the minibuffer? `ecb-layout-name' `ecb-compile-window-height' `ecb-compile-window-width' `ecb-other-window-behavior' The ECB layout, means which windows you want to be displayed in the ECB-frame and also the location of these windows (*note Changing the ECB-layout::). `ecb-compilation-buffer-names' Which buffers should be treaten as "compilation-buffers" and therefore displayed in the compile-window of ECB - if there is any. `ecb-tag-display-function' `ecb-type-tag-display' `ecb-type-tag-expansion' `ecb-show-tags' How to display the entries in the ECB-method window for semantic supported sources (*note Customizing the display::). These options take only effect for semantic-sources (*note Definition of semantic- and non-semantic-sources::). `ecb-process-non-semantic-files' Displaying file-contents for not by semantic supported files too, e.g. for LaTeX- and perl-sources (*note Non-semantic sources::). But to make ECB working best for you it is also recommended to have a look at *Note Customizable options::!