Node:The edit-window, Next:, Previous:Using the keyboard, Up:Usage of ECB



Working with the edit-window

ECB offers you all what you need to work with the edit-window as if the edit-window would be the only window of the ECB-frame.

ECB offers you to advice the following functions so they work best with ECB:

The behavior of the adviced functions is (slightly simplified):

ATTENTION: If you want to work within the edit-window with splitting and unsplitting the edit-window(s) it is highly recommended to use the adviced-functions of ECB instead of the original Emacs-functions (see above). Per default ECB advices all of the functions mentioned above but with the option ecb-advice-window-functions you can customizes which functions should be adviced by ECB. Please read carefully the documentation of this option!

Another interesting option in the context of the edit-window and these adviced functions is ecb-layout-always-operate-in-edit-window!

Documentation of the adviced window functions

This section describes for every adviced window function (s.a.) how it differs from the original version. Only the differences are mentioned, so if you want the full documentation of such a function call describe-function or C-h f.

other-window ARG &optional ALL-FRAMES Command
Around-advice ecb: The ECB-version of other-window. Works exactly like the original function with the following ECB-adjustment: The behavior depends on ecb-other-window-jump-behavior.

delete-window &optional WINDOW Command
Around-advice ecb: The ECB-version of delete-window. Works exactly like the original function with the following ECB-adjustment:

If optional argument WINDOW is nil (i.e. probably called interactively): If called in a splitted edit-window then it works like as if the two parts of the splitted edit window would be the only windows in the frame. This means the part of the splitted edit-window which contains the point will be destroyed and the other part fills the whole edit-window. If called in an unsplitted edit-window then nothing is done. If called in any other window of the current ECB-layout there are two alternatives:

  • If the function is contained in ecb-layout-always-operate-in-edit-window it jumps first in the (first) edit-window and does then itīs job.
  • Otherwise an error is reported.

If optional argument WINDOW is a live window (i.e. called from program): If WINDOW is an edit-window then this window is deleted, otherwise an error is reported.

delete-other-windows &optional WINDOW Command
Around-advice ecb: The ECB-version of delete-other-windows. Works exactly like the original function with the following ECB-adjustment:

If optional argument WINDOW is nil (i.e. probably called interactively): If called in a splitted edit-window then it works like as if the two parts of the splitted edit window would be the only windows in the frame. This means the part of the splitted edit-window which contains the point fills the whole edit-window.

  • If called in an unsplitted edit-window then nothing is done.
  • If called in one of the ecb-windows then the current one is maximized, i.e. the other ecb-windows (not the edit-windows!) are deleted.
  • If called in the compile window there are two alternatives: If the function is contained in ecb-layout-always-operate-in-edit-window it jumps first in the (first) edit-window and does then itīs job. Otherwise an error is reported.

If optional argument WINDOW is a live window (i.e. called from program): If WINDOW is an edit-window then this window is maximized (i.e. the other edit-window is deleted), if WINDOW is an ecb-window then only the other ecb-windows are deleted and in all other cases an error is reported.

delete-windows-on BUFFER &optional FRAME Command
Around-advice ecb: The ECB-version of delete-windows-on. Works exactly like the original function with the following ECB-adjustment:

An error is reported if BUFFER is an ECB-tree-buffer. These windows are not allowed to be deleted.

split-window &optional WINDOW SIZE HORFLAG Command
Around-advice ecb: The ECB-version of split-window. The meaning of WINDOW must be one of the edit-windows of ECB otherwise an error is reported. If the edit-window is already splitted then nothing will be done. Besides this (e.g. called for a window in another frame than the ecb-frame) it behaves like the original version.

split-window-vertically Command
Around-advice ecb: The ECB-version of split-window-vertically. Works exactly like the original function with the following ECB-adjustment:

Called in an unsplitted edit-window then the edit window will be splitted vertically. If called in an already splitted edit-window then nothing is done. If called in any other window of the current ECB-layout it stops with an error if this function is not contained in ecb-layout-always-operate-in-edit-window.

split-window-horizontally Command
Around-advice ecb: The ECB-version of split-window-horizontally. Works exactly like the original function with the following ECB-adjustment:

Called in an unsplitted edit-window then the edit window will be splitted horizontally. If called in an already splitted edit-window then nothing is done. If called in any other window of the current ECB-layout it stops with an error if this function is not contained in ecb-layout-always-operate-in-edit-window!

display-buffer BUFFER &optional NOT-THIS-WINDOW FRAME Command
Around-advice ecb: Makes this function compatible with ECB if called in or for the ecb-frame. It displays all buffers which are "compilation-buffers" in the sense of ecb-compilation-buffer-p in the compile-window of ECB. If the compile-window is temporally hidden then it will be displayed first.

If there is no compile-window (ecb-compile-window-height is nil) then it splits the edit-window if unsplitted and displays BUFFER in the other edit-window but only if pop-up-windows is not nil (otherwise the edit-window will not splitted).

If called from outside the edit-area for a non-"compilation-buffers" (s.a.) then it behaves as if called from within an edit-window if display-buffer is contained in ecb-layout-always-operate-in-edit-window: It depends on pop-up-windows if the edit-window is automatically splitted ot not. If ecb-layout-always-operate-in-edit-window does not contain display-buffer then the buffer is displayed in the edit-window without splitting it (if unsplitted).

If called for other frames it works like the original version.

switch-to-buffer BUFFER &optional NORECORD Command
Around-advice ecb: The ECB-version of switch-to-buffer. Works exactly like the original but with the following enhancements for ECB:

"compilation-buffers" in the sense of ecb-compilation-buffer-p will be displayed always in the compile-window of ECB (if ecb-compile-window-height is not nil) - if the compile-window is temporally hidden then it will be displayed first. If you do not want this you have to modify the options ecb-compilation-buffer-names, ecb-compilation-major-modes or ecb-compilation-predicates.

If called for non "compilation-buffers" (s.a.) from outside the edit-area of ECB it behaves as if called from an edit-window if switch-to-buffer is contained in the option ecb-layout-always-operate-in-edit-window. Otherwise an error is reported.

switch-to-buffer-other-window BUFFER &optional FRAME Command
Around-advice ecb: The ECB-version of switch-to-buffer-other-window. Works exactly like the original but with some adaptions for ECB so this function works in a "natural" way:

If called in any special ecb-window of the current ECB-layout then it goes always to the first edit-window and then goes on as if called from this edit-window.

If a compile-window is used (i.e. ecb-compile-window-height is not nil) then "compilation-buffers" in the sense of ecb-compilation-buffer-p are always displayed in the compile-window. If the compile-window is temporally hidden then it will be displayed first. If no compile-window is used it behaves like the original.

If called from within the compile-window then "compilation-buffers" will be displayed still there and all other buffers are displayed in one of the edit-windows - if the destination-buffer is already displayed in one of the edit-windows then this one is used otherwise it behaves like the original.

If called within an edit-window it behaves like the original function except for compilation-buffers (if a compile-window is used, see above).

other-window-for-scrolling Function
Around-advice `ecb': This function determines the window which is scrolled if any of the "other-window-scrolling-functions" is called (e.g. scroll-other-window). If edit-window is splitted, point stays in the "other" edit-window and there is no durable compilation-window then always the first edit-window is chosen.