Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
;ELC
;;; Compiled by leavens@LEAVENS on Mon Sep 15 16:19:45 2003
;;; from file d:/emacs/ecb/ecb-layout.el
;;; in Emacs version 21.3.1
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.
;;; This file contains multibyte non-ASCII characters
;;; and therefore cannot be loaded into Emacs 19.
(if (and (boundp 'emacs-version)
(< (aref emacs-version (1- (length emacs-version))) ?A)
(or (and (boundp 'epoch::version) epoch::version)
(string-lessp emacs-version "20")))
(error "`ecb-layout.el' was compiled for Emacs 20 or later"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(byte-code "\302\303!\210\302\304!\210\302\305!\210\302\306!\210\301B\307\301!\204 \310\302\207" [current-load-list ecb-layouts-reload-needed require ecb-util ecb-speedbar ecb-compilation ecb-create-layout boundp t] 2)
#@26 Load all defined layouts
(defalias 'ecb-load-layouts #[nil "\205 \302\303!\210\304 !\203 \305 !\210\306\211\207" [ecb-layouts-reload-needed ecb-create-layout-file require ecb-layout-defs file-readable-p load-file nil] 2 (#$ . 818)])
#@44 Use dedicated windows for the ECB buffers.
(defconst ecb-use-dedicated-windows t (#$ . 1061))
(byte-code "\302\303\304\305\306\307\310\311&\210\302\312\304\313\306\303\310\311&\210\301B\314\304\207" [current-load-list ecb-layout-option-set-function custom-declare-group ecb-layout nil "Settings for the screen-layout of the Emacs code browser." :group ecb :prefix "ecb-" ecb-compilation "Settings for the compile window of ECB." #[(symbol value) " L\210\306\302!\205\" \n\205\" \307!\205\" \310 \311\312\216\313!\210\314 +\207" [symbol value ecb-minor-mode ecb-frame ecb-redraw-layout-quickly curr-frame boundp frame-live-p selected-frame nil ((select-frame curr-frame)) select-frame ecb-redraw-layout-full] 2]] 8)
#@55 *Select the first edit window on `ecb-redraw-layout'.
(custom-declare-variable 'ecb-select-edit-window-on-redraw 'nil '(#$ . -1792) :group 'ecb-layout :type 'boolean)
#@48 *Create a new frame at activation time of ECB.
(custom-declare-variable 'ecb-new-ecb-frame 'nil '(#$ . -1965) :group 'ecb-layout :type 'boolean)
#@146 *Hook run before the new ECB-frame is created.
This has only an effect if `ecb-new-ecb-frame' is not nil (otherwise this
hook is not evaluated).
(custom-declare-variable 'ecb-activate-before-new-frame-created-hook 'nil '(#$ . -2117) :group 'ecb-layout :type 'hook)
#@957 *Select a window layout of ECB.
Value is any arbitrary string. There are four different types of layouts:
left, right, top and left-right, which means the location of the
ECB-tree-windows in the ECB-frame. Currently there are 20 predefined layouts;
names the below. You can savely try out any of them by changing this value and
saving it only for the current session. If you are sure which layout you want
you can save it for future sessions. To get a picture of the layout for name
call `ecb-show-layout-help'.
Currently available layouts:
+ Left layouts:
left1 left2 left3 left4 left5 left6 left7 left8 left9 left10 left11 left12
left13 left14 left15
+ Right layouts:
right1
+ Top layouts:
top1 top2
+ Left-right layouts:
leftright1 leftright2 leftright3
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'
(custom-declare-variable 'ecb-layout-name '"left8" '(#$ . -2389) :group 'ecb-layout :initialize 'custom-initialize-default :set #'(lambda (symbol value) (ecb-load-layouts) (if (fboundp (intern (format "ecb-layout-function-%s" value))) (funcall ecb-layout-option-set-function symbol value) (ecb-error "There is no layout with name %s available!" value))) :type 'string)
#@1520 *Height of the durable compilation-window of ECB.
If you want a compilation window shown at the bottom of the ECB-layout
then set here the height of it (Default is a height of 5). If you redraw the
current layout with `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 the
"other" 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'!
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'
(custom-declare-variable 'ecb-compile-window-height 'nil '(#$ . -3722) :group 'ecb-compilation :initialize 'custom-initialize-default :set #'(lambda (symbol value) (ecb-set-window-size-fixed nil) (funcall ecb-layout-option-set-function symbol value)) :type '(radio (const :tag "No compilation window" nil) (number :tag "Window height" :value 6)))
#@1781 *Width of the compile-window.
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 |
| | |
-------------------------------------------------------
This option takes only effect if `ecb-compile-window-height' is not nil!
(custom-declare-variable 'ecb-compile-window-width ''frame '(#$ . -5596) :group 'ecb-compilation :initialize 'custom-initialize-default :set #'(lambda (symbol value) (funcall ecb-layout-option-set-function symbol value)) :type '(radio (const :tag "Width of ECB-frame" :value frame) (const :tag "Width of edit-window" :value edit-window)))
#@1029 *Let Emacs temporally enlarge the compile-window of the ECB-layout.
This option has only an effect if `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'.
(custom-declare-variable 'ecb-compile-window-temporally-enlarge ''after-display '(#$ . -7723) :group 'ecb-compilation :initialize 'custom-initialize-default :set ecb-layout-option-set-function :type '(radio (const :tag "After displaying a buffer in the compile-window" :value after-display) (const :tag "After selecting the compile window" :value after-selection) (const :tag "Both of them" :value both) (const :tag "Never" :value nil)))
#@459 *Allow the compile-window to be shrunken below its height.
A non nil value means ECB prevents the compile-window from being shrunken
below the threshold of `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.
(custom-declare-variable 'ecb-compile-window-prevent-shrink-below-height 't '(#$ . -9196) :group 'ecb-compilation :type 'boolean)
#@911 *The max height of the compile-window after enlarging it.
The max height of the compilation window after enlarged by
`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).
(custom-declare-variable 'ecb-enlarged-compilation-window-max-height ''best '(#$ . -9791) :group 'ecb-compilation :type '(radio (const :tag "Compute best height" :value best) (const :tag "1/2 the frame height)" :value half) (number :tag "Height" :value 0.3)))
#@156 *Sets how and if the edit window should be splitted.
But be aware: This option determines only if the edit-window should be
splitted at start-time of ECB.
(custom-declare-variable 'ecb-split-edit-window 't '(#$ . -10968) :group 'ecb-layout :type '(radio (const :tag "Split as before ECB-start" :value t) (const :tag "Split horizontally" :value horizontal) (const :tag "Split vertically" :value vertical) (const :tag "Do not split" :value nil)))
#@146 *The width of the ECB windows in columns for left- and right layouts.
If the number is less than 1.0 the width is a fraction of the frame width.
(custom-declare-variable 'ecb-windows-width '0.33 '(#$ . -11420) :group 'ecb-layout :initialize 'custom-initialize-default :set ecb-layout-option-set-function :type 'number)
#@134 *The height of the ECB windows in lines for top layouts.
If the number is less than 1.0 the width is a fraction of the frame height.
(custom-declare-variable 'ecb-windows-height '0.33 '(#$ . -11746) :group 'ecb-layout :initialize 'custom-initialize-default :set ecb-layout-option-set-function :type 'number)
#@1300 *Fix size of the ECB-windows/buffers even after frame-resizing.
The fix type (valid values are nil, t, width and height) can either be set on
a layout-basis (means a different value for each layout) or one value can be
set for all layouts. In the latter case there is an additional value 'auto
which choose autom. the senseful fix-type depending on the current
layout-type: For top-layouts the fix-type 'height and for all other
layout-types the fix-type 'width.
For a detailed description of the valid values see documentation 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.
(custom-declare-variable 'ecb-fix-window-size 'nil '(#$ . -12062) :group 'ecb-directories :initialize 'custom-initialize-default :set #'(lambda (sym value) (set sym value) (ecb-set-window-size-fixed (ecb-get-window-fix-type ecb-layout-name))) :type '(radio (choice :tag "Fix type for all layouts" :menu-tag "Fix type for all layouts" (const :tag "Automatic" :value auto) (const :tag "Fix only width" :value width) (const :tag "Fix only height" :value height) (const :tag "Fix both" :value t) (const :tag "No fixing" :value nil)) (repeat :tag "With these layouts" (cons (string :tag "Layout name") (choice :tag "Fix type" :menu-tag "Fix type for all layouts" (const :tag "Fix only width" :value width) (const :tag "Fix only height" :value height) (const :tag "Fix both" :value t) (const :tag "No fixing" :value nil))))))
#@100 Determine which value of `window-size-fixed' we must set in all ecb-buffers
of layout LAYOUT-NAME.
(defalias 'ecb-get-window-fix-type #[(layout-name) "9\203 \303\232\203 \304 !\305\232\203 \306\207\307\207\207\310\n\"A\207" [ecb-fix-window-size ecb-layout-name layout-name auto ecb-get-layout-type top height width assoc] 3 (#$ . 14188)])
#@149 Set the buffer-local value of `window-size-fixed' in each visible
ecb-window to FIX. If `ecb-compile-window-height' is not nil then set always
nil!
(defalias 'ecb-set-window-size-fixed #[(fix) "\205* \306 \211\307\211\203( @\212\310\n!q\210\f?\205
)A\211\204 +\307\207" [ecb-running-emacs-21 l w #1=#:--dolist-temp--47327 ecb-compile-window-height fix ecb-canonical-ecb-windows-list nil window-buffer window-size-fixed] 4 (#$ . 14541)])
#@300 Evaluate BODY with unfixed size of all current-visible ecb-buffers and
ensure that at the end (either after finishing of BODY or after an error
occurs during BODY) all now current visible ecb-buffers get the value of their
buffer-local `window-size-fixed' from the setting in `ecb-fix-window-size'.
(defalias 'ecb-do-with-unfixed-ecb-buffers '(macro . #[(&rest body) "\301\302\303BB\304BB\207" [body unwind-protect progn (ecb-set-window-size-fixed nil) ((ecb-set-window-size-fixed (ecb-get-window-fix-type ecb-layout-name)))] 4 (#$ . 14998)]))
#@452 *Which windows of ECB should be accessible by the command `other-window'.
This has an effect if `other-window' is adviced by ECB, see
`ecb-advice-window-functions'. The following settings are possible:
- 'all: ECB will cycle through all windows of ECB, means it behaves like the
original `other-window'.
- 'only-edit: ECB will only cycle through the (max. 2) edit-windows of ECB.
- 'edit-and-compile: Like 'only-edit plus the compile window if any.
(custom-declare-variable 'ecb-other-window-jump-behavior ''all '(#$ . -15550) :group 'ecb-layout :type '(radio (const :tag "All windows" all) (const :tag "Only edit windows" only-edit) (const :tag "Edit + compile window" edit-and-compile)))
#@2995 *Advice functions to be more intelligent if used with ECB.
You can choose the following functions to be adviced by ECB so they behave as
if the edit-window(s) of ECB would be the only windows(s) of the ECB-frame:
- `other-window'
For this one see also the option `ecb-other-window-jump-behavior'!
- `delete-window'
- `delete-other-windows'
- `delete-windows-on'
- `split-window-horizontally'
- `split-window-vertically'
- `split-window'
If this 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 following functions scroll always the
first edit-window if the edit-window is splitted, point stays in the
"other" edit-window and there is no durable compilation-window (see
`ecb-compile-window-height'):
- `scroll-other-window'
- `scroll-other-window-down'
- `beginning-of-buffer-other-window'
- `end-of-buffer-other-window'
This advice is per default not enabled.
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:
1. Deactivate in `ecb-advice-window-functions' all the adviced-functions which
make problems with other packages.
2. For every of the advice-able functions ECB offers a interactively
function named "ecb-" which does exactly the same as the
adviced version of . Use "ecb-" instead the original
one to get the proper ECB behavior even if the function is not adviced
anymore.
3. You can bind in `ecb-activate-hook' the standard-shortcut of to
"ecb-" and rebind it in `ecb-deactivate-hook' to .
4. Now you have the best of both worlds: The problematic package works and you
have the ECB-behavior of as if it would be adviced.
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'.
(custom-declare-variable 'ecb-advice-window-functions ''(other-window delete-window delete-other-windows delete-windows-on split-window-horizontally split-window-vertically split-window switch-to-buffer switch-to-buffer-other-window display-buffer) '(#$ . -16250) :group 'ecb-layout :initialize 'custom-initialize-set :set #'(lambda (symbol value) (when (member 'split-window value) (add-to-list 'value 'split-window-vertically) (add-to-list 'value 'split-window-horizontally)) (set symbol value) (when (and (boundp 'ecb-minor-mode) ecb-minor-mode) (ecb-activate-adviced-functions value))) :type '(set (const :tag "other-window" :value other-window) (const :tag "delete-window" :value delete-window) (const :tag "delete-other-windows" :value delete-other-windows) (const :tag "delete-windows-on" :value delete-windows-on) (const :tag "split-window-horizontally" :value split-window-horizontally) (const :tag "split-window-vertically" :value split-window-vertically) (const :tag "split-window" :value split-window) (const :tag "switch-to-buffer" :value switch-to-buffer) (const :tag "switch-to-buffer-other-window" :value switch-to-buffer-other-window) (const :tag "display-buffer" :value display-buffer) (const :tag "other-window-for-scrolling" :value other-window-for-scrolling)))
#@1142 *Adviced window functions work always in the edit-window.
If we are in an ECB special buffer (methods, directories, etc), and any of the
adviced windowing functions is called (see `ecb-advice-window-functions'), we
will select the `ecb-edit-window' first. This is useful if you have any
functions that use such functions and you don't want them to just error with a
method complaining that the current buffer can not be split, or something
similar.
Because this may not be desirable in all situations and all adviced functions
this can be enabled separately for every advisable function (see also
`ecb-advice-window-functions'). If the symbol of an adviced function is
contained in the value of this option, then the edit-window is first selected
otherwise either an error is reported or some other special reaction; 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 `delete-window', `delete-other-windows',
`switch-to-buffer' and `display-buffer'.
(custom-declare-variable 'ecb-layout-always-operate-in-edit-window ''(delete-window delete-other-windows display-buffer switch-to-buffer) '(#$ . -20534) :group 'ecb-layout :type '(set (const :tag "delete-window" :value delete-window) (const :tag "delete-other-windows" :value delete-other-windows) (const :tag "split-window-horizontally" :value split-window-horizontally) (const :tag "split-window-vertically" :value split-window-vertically) (const :tag "split-window" :value split-window) (const :tag "display-buffer" :value display-buffer) (const :tag "switch-to-buffer" :value switch-to-buffer)))
#@176 Return a list of all current visible special dedicated ECB-windows
(starting from the left-most top-most window) in the order `other-window'
would walk through these windows.
(defalias 'ecb-canonical-ecb-windows-list #[nil "\301\302\303\304\305\306\307!#\"\"\207" [ecb-frame delete nil mapcar #[(elem) "\301!\205 \207" [elem window-dedicated-p] 2] ecb-window-list 0 frame-first-window] 9 (#$ . 22282)])
#@1014 *Specifies the sizes of the ECB windows for each layout.
The easiest way (and also the strongly recommended way) to change this
variable is to change the window sizes by dragging the window borders using
the mouse and then store the window sizes by calling the command
`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:
- It is recommended to use fractions of frame-width and -height!.
- The order of the sequence of the inserted window sizes must be the same as
`other-window' (the not-adviced version!) would walk!
(custom-declare-variable 'ecb-layout-window-sizes 'nil '(#$ . -22698) :group 'ecb-layout :initialize 'custom-initialize-default :set ecb-layout-option-set-function :type '(repeat (cons :tag "Window layout" (string :tag "Layout name") (repeat :tag "Window sizes" (cons (choice :tag "Width" :menu-tag "Width" :value 0.0 (const :tag "Default value" :value nil) (number :tag "Custom size")) (choice :tag "Height" :menu-tag "Height" (const :tag "Default value" :value nil) (number :tag "Custom size")))))))
#@128 If non-nil, we will attempt to redraw the layout quickly.
Please read also carefully the documentation of `ecb-redraw-layout'.
(custom-declare-variable 'ecb-redraw-layout-quickly 'nil '(#$ . 24220) :type 'boolean :group 'ecb-layout)
#@1110 *Toggle sequence for layout toggling with `ecb-toggle-layout'.
Every element of this list has to be a valid layout-name "string) i.e. either
one of the predefined layouts or one of the user-defined layouts (see
`ecb-create-new-layout').
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:
- ("left10" "left15"), toggles between methods and directories/history
- ("left10" "left13"), toggles between methods and directories
- ("left10" "left14"), toggles between methods and history
- ("left10" "left13" "left14"), toggles between methods, history and
directories
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!
(custom-declare-variable 'ecb-toggle-layout-sequence ''("left9" "left14") '(#$ . -24461) :group 'ecb-layout :type '(repeat (string :tag "Layout name.")) :initialize 'custom-initialize-default :set #'(lambda (symbol value) (ecb-load-layouts) (dolist (name value) (if (and (boundp 'ecb-minor-mode) ecb-minor-mode (not (fboundp (intern (format "ecb-layout-function-%s" name))))) (ecb-error "There is no layout available with name %s!" name))) (set symbol value)))
#@230 *Hook run direct before the ECB windows will be hidden.
Hiding is done either by `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.
(custom-declare-variable 'ecb-hide-ecb-windows-before-hook 'nil '(#$ . -26038) :group 'ecb-layout :type 'hook)
#@137 *Hooks run direct after the ECB windows have been hidden.
Hiding was done either by `ecb-toggle-ecb-windows' or `ecb-hide-ecb-windows'.
(custom-declare-variable 'ecb-hide-ecb-windows-after-hook 'nil '(#$ . -26385) :group 'ecb-layout :type 'hook)
#@758 *Hooks run direct before the ECB windows will be shown.
Showing is done either by `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:
1. `ecb-show-ecb-windows-before-hook'
2. `ecb-redraw-layout-before-hook'
3.
4. `ecb-redraw-layout-after-hook'
5. `ecb-show-ecb-windows-after-hook'
So be aware which code you add to which hook!
(custom-declare-variable 'ecb-show-ecb-windows-before-hook 'nil '(#$ . -26638) :group 'ecb-layout :type 'hook)
#@767 *Hooks run direct before the ECB windows will be shown.
Showing has been done either by `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:
1. `ecb-show-ecb-windows-before-hook'
2. `ecb-redraw-layout-before-hook'
3.
4. `ecb-redraw-layout-after-hook'
5. `ecb-show-ecb-windows-after-hook'
So be aware which code you add to which hook!
(custom-declare-variable 'ecb-show-ecb-windows-after-hook 'nil '(#$ . -27513) :group 'ecb-layout :type 'hook)
#@163 *Hooks run direct after the ECB-layout has been redrawn.
If you use the eshell-integration of ECB then the function
`ecb-eshell-recenter' should be in this hook.
(custom-declare-variable 'ecb-redraw-layout-after-hook ''(ecb-eshell-recenter) '(#$ . -28396) :group 'ecb-layout :type 'hook)
#@58 *Hooks run direct before the ECB-layout will be redrawn.
(custom-declare-variable 'ecb-redraw-layout-before-hook 'nil '(#$ . -28690) :group 'ecb-layout :type 'hook)
#@713 *Write debug-information about layout-operations in the Messages-buffer.
Normally there should be no need to set this option to true but if there are
problems to display buffers in the compile-window of ECB (e.g. buffers which
should be displayed there aren't or the temporally enlarging-mechanism does
not do what you think it should do etc...) then please do the following steps:
1. Set `ecb-layout-debug-mode' to not nil
2. Reproduce the wrong behavior exactly by repeating all the operations which
lead to the problem.
3. Now send immediately a bug report with `ecb-submit-problem-report'.
4. Set `ecb-layout-debug-mode' back to nil if you do not want further
debugging output in the *Messages* buffer
(custom-declare-variable 'ecb-layout-debug-mode 'nil '(#$ . -28862) :group 'ecb-layout :type 'boolean)
#@22 Frame where ECB runs
(defvar ecb-frame nil (#$ . 29683))
#@156 Window to edit source in. If this window is splitted in two windows then
`ecb-edit-window' is always the leftmost/topmost window of the two
edit-windows!
(defvar ecb-edit-window nil (#$ . 29747))
#@77 The edit-window of ECB which had the point before an emacs-command is
done.
(defvar ecb-last-edit-window-with-point nil (#$ . 29950))
#@57 The source-buffer of `ecb-last-edit-window-with-point'.
(defvar ecb-last-source-buffer nil (#$ . 30090))
#@67 The buffer in the compile-window before an emacs-command is done.
(defvar ecb-last-compile-buffer-in-compile-window nil (#$ . 30201))
#@38 Window to display compile-output in.
(defvar ecb-compile-window nil (#$ . 30341))
#@83 Not nil only if the `ecb-compile-window' was selected before most recent
command.
(defvar ecb-compile-window-was-selected-before-command nil (#$ . 30429))
(defalias 'ecb-initialize-layout #[nil "\306\306\306\306\306\306\306\306\306\211 \207" [ecb-frame ecb-edit-window ecb-last-edit-window-with-point ecb-last-source-buffer ecb-last-compile-buffer-in-compile-window ecb-current-maximized-ecb-buffer-name nil ecb-cycle-ecb-buffer-state ecb-compile-window ecb-compile-window-was-selected-before-command] 2])
#@66 Run ARGS through `format' and write it to the *Messages*-buffer.
(defalias 'ecb-layout-debug-error #[(&rest args) "\205 \303\304\305 \"\306\304\n\"P!\207" [ecb-layout-debug-mode ecb-version args message format "ECB %s layout debug: " apply] 5 (#$ . 30952)])
(defalias 'ecb-compile-window-live-p #[(&optional display-msg) "\203\f \302!\203\f \303\207 \203 \304\305!\210\306\207" [ecb-compile-window display-msg window-live-p t message "No compile-window visible in current ECB-layout!" nil] 2])
(defalias 'ecb-edit-window-live-p #[nil "\205 \301!\207" [ecb-edit-window window-live-p] 2])
#@72 Return not nil if buffer BUFFER-NAME is displayed in an active window.
(defalias 'ecb-window-live-p #[(buffer-name) "\205 \301\302!!\207" [buffer-name window-live-p get-buffer-window] 3 (#$ . 31553)])
(byte-code "\300\301\302\303\304$\210\305\306!\210\300\307\310\303\304$\210\300\311\312\303\304$\210\300\313\314\315\304$\210\300\316\317\303\304$\207" [ad-add-advice delete-frame (ecb nil t (advice lambda nil "If FRAME is equal to the ECB frame then the user will be asked if he want\nto proceed. If yes then ECB will be deactivated before deleting FRAME. If ECB\nis not activated or FRAME is not equal the ECB-frame then this advice is\neither not activated or it behaves exactly like the original version!" (let ((frame (or (ad-get-arg 0) (selected-frame)))) (if (and ecb-minor-mode (equal frame ecb-frame)) (when (ecb-confirm "Attempt to delete the ECB-frame. ECB will be deactivated! Proceed? ") (ecb-deactivate-internal) ad-do-it) ad-do-it)))) around nil require compile compilation-set-window-height (ecb nil t (advice lambda nil "Makes the function compatible with ECB." (if (not (equal (window-frame (ad-get-arg 0)) ecb-frame)) ad-do-it (if (and (equal (ad-get-arg 0) ecb-compile-window) (member ecb-compile-window-temporally-enlarge '(after-selection nil))) (ecb-toggle-compile-window-height -1) (let* ((compile-window-height-lines (ignore-errors (ecb-normalize-number ecb-compile-window-height (1- (frame-height))))) (compilation-window-height (if (and ecb-compile-window-prevent-shrink-below-height compilation-window-height compile-window-height-lines (< compilation-window-height compile-window-height-lines)) compile-window-height-lines compilation-window-height))) (and compilation-window-height (or (equal (ad-get-arg 0) ecb-compile-window) (ecb-edit-window-splitted)) (not (eq (ad-get-arg 0) (frame-root-window (window-frame (ad-get-arg 0))))) (save-excursion (let ((w (selected-window))) (ecb-layout-debug-error "compilation-set-window-height: window: %s, cur-win: %s" (ad-get-arg 0) w) (unwind-protect (progn (select-window (ad-get-arg 0)) (enlarge-window (- compilation-window-height (window-height)))) (when (window-live-p w) (select-window w))))))))))) scroll-other-window (ecb nil t (advice lambda nil "The behavior depends on the advice of `other-window-for-scrolling' (see\n`ecb-advice-window-functions')." (if (not (equal (ecb-point-in-edit-window) 2)) ad-do-it (let ((other-window-scroll-buffer (window-buffer (other-window-for-scrolling)))) ad-do-it)))) scroll-all-mode (ecb nil t (advice lambda nil "With active ECB `scroll-all-mode' scrolls only the two edit-windows if point\nstays in one of them. In all other situations just the selected window is scrolled." (if scroll-all-mode (setq ecb-other-window-jump-behavior 'only-edit) (setq ecb-other-window-jump-behavior (ecb-option-get-value 'ecb-other-window-jump-behavior))))) after count-windows (ecb nil t (advice lambda nil "If the selected frame is the ecb-frame and `scroll-all-mode' is not nil\nthen return the current number of edit-windows if point is in an edit-window\nand always return 1 if point is not in an edit-window. In any other frame or\nif `scroll-all-mode' is nil return the number of visible windows." (if (and (equal (selected-frame) ecb-frame) (boundp 'scroll-all-mode) scroll-all-mode) (setq ad-return-value (if (and (ecb-point-in-edit-window) (ecb-edit-window-splitted)) 2 1)) ad-do-it)))] 5)
#@115 Returns either nil if the ECB edit-window is not splitted or 'vertical or
'horizontal depending on the splitting.
(defalias 'ecb-edit-window-splitted #[nil "\304 \2050 \305\306 #\211\232\206 \307\n!\206 \n\232?\205/ \310!@\310\n!@U\203. \311\202/ \312)\207" [ecb-edit-window ecb-frame next-w ecb-compile-window ecb-edit-window-live-p next-window 0 window-dedicated-p ecb-window-edges vertical horizontal] 5 (#$ . 34964)])
(defalias 'ecb-get-other-edit-window #[nil "\302 \211\205 \303 \205 \304U\203 \305 !\202 )\207" [edit-window ecb-edit-window ecb-point-in-edit-window ecb-edit-window-splitted 1 next-window] 3])
(byte-code "\203 \301\302\303\304\305$\210\301\306\307\304\305$\210\202M \301\310\311\304\305$\210\301\312\313\304\305$\210\301\314\315\304\305$\210\301\316\317\304\305$\210\301\320\321\304\305$\210\301\302\322\304\305$\210\301\323\324\304\305$\210\301\306\325\304\305$\210\305\207" [ecb-running-xemacs ad-add-advice shrink-window-if-larger-than-buffer (ecb nil t (advice lambda nil "Makes the function compatible with ECB." (or (ad-get-arg 0) (ad-set-arg 0 (selected-window))) (ecb-layout-debug-error "shrink-window-if-larger-than-buffer: window: %s" (ad-get-arg 0)) (if (or (not ecb-minor-mode) (not (equal (window-frame (ad-get-arg 0)) ecb-frame)) (member (ad-get-arg 0) (ecb-canonical-ecb-windows-list))) ad-do-it (if (and (not (interactive-p)) (equal (ad-get-arg 0) ecb-compile-window) (member ecb-compile-window-temporally-enlarge '(after-selection nil)) (not (string= (buffer-name (window-buffer (ad-get-arg 0))) "*Completions*"))) (ecb-toggle-compile-window-height -1) (save-excursion (set-buffer (window-buffer (ad-get-arg 0))) (ecb-layout-debug-error "shrink-window-if-larger-than-buffer: buffer to shrink: %s" (current-buffer)) (let* ((compile-window-height-lines (ignore-errors (ecb-normalize-number ecb-compile-window-height (1- (frame-height))))) (window-min-height (if (and (equal (ad-get-arg 0) ecb-compile-window) (and ecb-compile-window-prevent-shrink-below-height (not (interactive-p))) window-min-height compile-window-height-lines (< window-min-height compile-window-height-lines)) compile-window-height-lines window-min-height)) (n 0) (test-pos (- (point-max) (if (and (not (eobp)) (eq 10 (char-after (1- (point-max))))) 1 0))) (mini (frame-property (window-frame (ad-get-arg 0)) 'minibuffer)) (edges (window-pixel-edges (selected-window)))) (if (and (< 1 (let ((frame (selected-frame))) (select-frame (window-frame (ad-get-arg 0))) (unwind-protect (ecb-with-original-basic-functions (count-windows)) (select-frame frame)))) (or (equal (ad-get-arg 0) ecb-compile-window) (not (equal (ecb-edit-window-splitted) 'horizontal))) (pos-visible-in-window-p (point-min) (ad-get-arg 0)) (not (eq mini 'only)) (or (not mini) (eq mini t) (< (nth 3 edges) (nth 1 (window-pixel-edges mini))) (> (nth 1 edges) 0))) (progn (save-window-excursion (goto-char (point-min)) (while (and (window-live-p (ad-get-arg 0)) (pos-visible-in-window-p test-pos (ad-get-arg 0))) (shrink-window 1 nil (ad-get-arg 0)) (setq n (1+ n)))) (ecb-layout-debug-error "shrink-window-if-larger-than-buffer: n: %d" n) (if (> n 0) (shrink-window (min (1- n) (- (window-height (ad-get-arg 0)) (1+ window-min-height))) nil (ad-get-arg 0))))))))))) around nil pop-to-buffer (ecb nil t (advice lambda nil "Chooses the window with the ECB-adviced version of `display-buffer'." (ecb-with-adviced-functions ad-do-it) (when (ecb-point-in-compile-window) (ecb-set-compile-window-height)))) mouse-drag-vertical-line (ecb nil t (advice lambda nil "Allows manually window-resizing even if `ecb-fix-window-size' is not nil\nfor current layout." (if (and ecb-minor-mode (equal (selected-frame) ecb-frame) (ecb-get-window-fix-type ecb-layout-name)) (ecb-do-with-unfixed-ecb-buffers ad-do-it) ad-do-it))) mouse-drag-mode-line (ecb nil t (advice lambda nil "Allows manually window-resizing even if `ecb-fix-window-size' is not nil\nfor current layout." (if (and ecb-minor-mode (equal (selected-frame) ecb-frame) (ecb-get-window-fix-type ecb-layout-name) (member (car (car (cdr (ad-get-arg 0)))) (ecb-canonical-ecb-windows-list))) (ecb-do-with-unfixed-ecb-buffers ad-do-it) ad-do-it))) enlarge-window (ecb nil t (advice lambda nil "Allows manually window-resizing even if `ecb-fix-window-size' is not nil\nfor current layout." (if (and ecb-minor-mode (equal (selected-frame) ecb-frame) (ecb-get-window-fix-type ecb-layout-name) (member (selected-window) (ecb-canonical-ecb-windows-list))) (ecb-do-with-unfixed-ecb-buffers ad-do-it) ad-do-it))) shrink-window (ecb nil t (advice lambda nil "Allows manually window-resizing even if `ecb-fix-window-size' is not nil\nfor current layout." (if (and ecb-minor-mode (equal (selected-frame) ecb-frame) (ecb-get-window-fix-type ecb-layout-name) (member (selected-window) (ecb-canonical-ecb-windows-list))) (ecb-do-with-unfixed-ecb-buffers ad-do-it) ad-do-it))) tmm-menubar (ecb nil t (advice lambda nil "Make it compatible with ECB." (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame))) ad-do-it (let ((ecb-other-window-jump-behavior 'only-edit) (ecb-compilation-buffer-names nil) (ecb-compilation-major-modes nil) (ecb-compilation-predicates nil)) ad-do-it)))) (ecb nil t (advice lambda nil "Makes the function compatible with ECB." (or (ad-get-arg 0) (ad-set-arg 0 (selected-window))) (ecb-layout-debug-error "shrink-window-if-larger-than-buffer: window: %s" (ad-get-arg 0)) (if (or (not ecb-minor-mode) (not (equal (window-frame (ad-get-arg 0)) ecb-frame)) (member (ad-get-arg 0) (ecb-canonical-ecb-windows-list))) ad-do-it (save-selected-window (select-window (ad-get-arg 0)) (ecb-layout-debug-error "shrink-window-if-larger-than-buffer: buffer to shrink: %s" (current-buffer)) (let* ((params (frame-parameters)) (mini (cdr (assq 'minibuffer params))) (edges (ecb-window-edges)) (compile-window-height-lines (ignore-errors (ecb-normalize-number ecb-compile-window-height (1- (frame-height))))) (window-min-height (if (and (equal (ad-get-arg 0) ecb-compile-window) (and ecb-compile-window-prevent-shrink-below-height (not (interactive-p))) window-min-height compile-window-height-lines (< window-min-height compile-window-height-lines)) compile-window-height-lines window-min-height))) (if (and (< 1 (ecb-with-original-basic-functions (count-windows))) (or (equal (ad-get-arg 0) ecb-compile-window) (not (equal (ecb-edit-window-splitted) 'horizontal))) (pos-visible-in-window-p (point-min) (ad-get-arg 0)) (not (eq mini 'only)) (or (not mini) (< (nth 3 edges) (nth 1 (ecb-window-edges mini))) (> (nth 1 edges) (cdr (assq 'menu-bar-lines params))))) (if ecb-running-emacs-21 (fit-window-to-buffer (ad-get-arg 0) (window-height (ad-get-arg 0))) (let ((text-height (window-buffer-height (ad-get-arg 0))) (window-height (window-height))) (when (and (eobp) (bolp)) (forward-char -1)) (when (> window-height (1+ text-height)) (shrink-window (- window-height (max (1+ text-height) window-min-height)))))))))))) resize-temp-buffer-window (ecb nil t (advice lambda nil "Makes the function compatible with ECB." (ecb-layout-debug-error "resize-temp-buffer-window: buffer: %s" (current-buffer)) (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame)) (equal (ecb-where-is-point) 'ecb)) ad-do-it (if (and (equal (selected-window) ecb-compile-window) (member ecb-compile-window-temporally-enlarge '(after-selection nil)) (not (string= (buffer-name (current-buffer)) "*Completions*"))) (progn (ecb-layout-debug-error "resize-temp-buffer-window: buffer: shrink to comp-win-height") (ecb-toggle-compile-window-height -1)) (let* ((compile-window-height-lines (ignore-errors (ecb-normalize-number ecb-compile-window-height (1- (frame-height))))) (window-min-height (if (and window-min-height compile-window-height-lines ecb-compile-window-prevent-shrink-below-height (< window-min-height compile-window-height-lines)) compile-window-height-lines window-min-height))) (unless (or (one-window-p 'nomini) (and (not (equal (selected-window) ecb-compile-window)) (not (ecb-edit-window-splitted))) (not (pos-visible-in-window-p (point-min)))) (ecb-layout-debug-error "resize-temp-buffer-window: resize buffer: %s" (current-buffer)) (if ecb-running-emacs-21 (fit-window-to-buffer (selected-window) (if (functionp temp-buffer-max-height) (funcall temp-buffer-max-height (current-buffer)) temp-buffer-max-height)) (let* ((max-height (if (functionp temp-buffer-max-height) (funcall temp-buffer-max-height (current-buffer)) temp-buffer-max-height)) (win-height (1- (window-height))) (min-height (1- window-min-height)) (text-height (window-buffer-height (selected-window))) (new-height (max (min text-height max-height) min-height))) (enlarge-window (- new-height win-height)))))))))) (ecb nil t (advice lambda nil "Chooses the window with the ECB-adviced version of `display-buffer'." (if (or (not ecb-minor-mode) (null (ad-get-arg 0))) ad-do-it (condition-case nil (progn (ecb-layout-debug-error "pop-to-buffer: buffer: %s, %s" (ad-get-arg 0) (ad-get-arg 1)) (select-window (ecb-with-adviced-functions (display-buffer (ad-get-arg 0) (ad-get-arg 1)))) (if (ad-get-arg 2) (bury-buffer (ad-get-arg 0)))) (error (ecb-layout-debug-error "pop-to-buffer: adviced version failed for buffer: %s, %s" (ad-get-arg 0) (ad-get-arg 1)) ad-do-it)) (when (ecb-point-in-compile-window) (ecb-set-compile-window-height)))))] 5)
#@997 Make BUFFER appear in some window on the current frame, but don't select it.
BUFFER can be a buffer or a buffer name.
If BUFFER is shown already in some window in the current frame,
just uses that one, unless the window is the selected window and
NOT-THIS-WINDOW-P is non-nil (interactively, with prefix arg).
If BUFFER has a dedicated frame, display on that frame instead of
the current frame, unless OVERRIDE-FRAME is non-nil.
If OVERRIDE-FRAME is non-nil, display on that frame instead of
the current frame (or the dedicated frame).
If SHRINK-TO-FIT is non-nil and splitting the window is appropriate, give
the new buffer less than half the space if it is small enough to fit.
If `pop-up-windows' is non-nil, always use the
current frame and create a new window regardless of whether the
buffer has a dedicated frame, and regardless of whether
OVERRIDE-FRAME was specified.
If `pop-up-frames' is non-nil, make a new frame if no window shows BUFFER.
Returns the window displaying BUFFER.
(defalias 'ecb-display-buffer-xemacs #[(buffer &optional not-this-window-p override-frame shrink-to-fit) "\306\307 \n%\210\310 \311\312\215\211\310 \232\204 \313
!\210\f*\207" [buffer not-this-window-p override-frame shrink-to-fit result wconfig ecb-layout-debug-error "ecb-display-buffer-xemacs for %s %s %s %s" current-window-configuration done (byte-code "\306\211\211\211\211\307 \206 \310 \311
!\312\313
\"\2106\205* 6
789$:\203> \314\315:
789$\"\210\316
!;\317;!\203M ;)8\203\\ \312\3178\"\2108 \206g \307 \206g \310 \n=\204q \30677\204\207
\320\321 !=\203\207 \314\315\322\321 !\"\2107\204\366 \323
!<\235\204\237 \324\323
!<\"\203\253 \325
!\210\314\315\322\321 !\"\210=\211>\203\365 >@\211?;\203\307 \326?\323
!\"\204\337 ?:\203\353 ?@;\203\353 \326?@\323
!\"\203\353 \325
!\210\314\315\322\321 !\"\210)>A\211>\204\263 ) \204@\204\307 \204\327 \204\330
\306\"\206\330
\n\"\211\203-7\203&\f\321 =\204-\314\315\322\f!\"\210A\203\256\323
!B\235\203C\314\315A
!\"\210\324\323
!B\"\211>\203[\314\315A
>A\"\"\210)C\211>\203\255>@\211?;\203\200\326?\323
!\"\203\200\314\315A
!\"\210?:\203\243?@;\203\243\326?@\323
!\"\203\243\314\315A
?A\"\"\210)>A\211>\204d)@\204\270\307 \204\312\331D !\332\f
\"\210\314\315\322\f!\"\210E\203\325\n=\204\350\333\310 \334\"\335=\204\350\336\337\310 !!\203 \333\310 \334\"\335=\203\365\307 FG\211\\\327\\W\203 G\211\\\327\\FHI\211\\\327\\W\203I\211\\\327\\H\333\n\204'\310 \202)\307 \340\"\203A\341\342!\206=\341\327!\206=\341\343!\202E\341\n!\f\203w\333\344\f!\340\"\204w\345\f!FY\203w\346\f!HY\204p\347\f!\203w\350\f!\203w\351\f!\202$\306\211JK\352\n!\211\203\254\333\344\f!\340\"\204\254\f\321 =\204\233\353\f!\204\254\345\f!G\211\\\327\\Y\203\254\351\f!\f\204\310\341\342!\206\307\341\327!\206\307\341\343!\206\307\331D !\354\f!\203\326\354\f!\211JK\355\f!\203\344\355\f!J\fKJ\203\356J!A@\356\f!A@U\204\357J!\357\f!V\203\360K\345J!\345\f!\\\361\245\345K!Z\306K#\2109*\202$\352\n!\320\f!\203<\212\321 L\362\216\363\f!\210\364\320\f!!\210+\332\f
\"\210\203I\365\f!\210\322\f!-\207" [shrink-it explicit-frame target-frame old-frame window buffer nil last-nonminibuf-frame selected-frame get-buffer check-argument-type bufferp throw done buffer-dedicated-frame frame-live-p window-buffer selected-window display-buffer-1 buffer-name assoc switch-to-buffer string-match 0 get-buffer-window frame-selected-window set-window-buffer frame-property minibuffer only window-dedicated-p frame-root-window unsplittable get-largest-window visible t window-frame window-height window-width window-leftmost-p window-rightmost-p split-window get-lru-window window-parent window-previous-child window-next-child window-pixel-edges window-pixel-height enlarge-window 2 ((byte-code "\301!\203\n \302!\210\301\207" [save-selected-window-window window-live-p select-window] 2)) select-window record-buffer shrink-window-if-larger-than-buffer pre-display-buffer-function not-this-window-p override-frame shrink-to-fit display-buffer-function dedi same-window-buffer-names same-window-regexps tem car pop-up-frames special-display-function special-display-buffer-names special-display-regexps pop-up-frame-function pop-up-windows split-height-threshold window-min-height split-width-threshold window-min-width other upper save-selected-window-window] 8) push-window-configuration] 7 (#$ . 44321) "BDisplay buffer:\nP"])
(defalias 'ecb-temp-buffer-show-function-emacs #[(buf) "\305!\2030 \306\307\"\210\310 \232\2030 \311\312N@\247\2030 \313 \2040 \314 !\315 \232\2040 \306\316!\210\317\320!\210\315 \321\216\212\322\216\323!\210\324!)\306\325\f#\210\326\f!\210q\210\327\330!,\207" [buf ecb-frame save-selected-window-window ecb-adviceable-functions win ecb-compilation-buffer-p ecb-layout-debug-error "ecb-temp-buffer-show-function-emacs: comp-buffer: %s" selected-frame ecb-compile-window-height saved-value ecb-compile-window-live-p minibuffer-window selected-window "ecb-temp-buffer-show-function-emacs: comp-win will toggled" ecb-toggle-compile-window 1 ((byte-code "\301!\203\n \302!\210\301\207" [save-selected-window-window window-live-p select-window] 2)) ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions display-buffer "ecb-temp-buffer-show-function-emacs: win: %s, buf: %s" select-window run-hooks temp-buffer-show-hook] 4])
(byte-code "\301B\302\301!\204\f \303\303\207" [current-load-list ecb-temp-buffer-show-function-old boundp nil] 2)
#@183 if ARG then set `temp-buffer-show-function' to the right function so ECB
works correct. Store the old value. If ARG is nil then restore the old value
of `temp-buffer-show-function'.
(defalias 'ecb-enable-own-temp-buffer-show-function #[(arg) "\203 \203 \304\202 \305\211\207\n\211\207" [arg temp-buffer-show-function ecb-temp-buffer-show-function-old ecb-running-xemacs show-temp-buffer-in-current-frame ecb-temp-buffer-show-function-emacs] 2 (#$ . 49931)])
#@62 A list of functions which can be adviced by the ECB package.
(defconst ecb-adviceable-functions '(other-window split-window-vertically split-window-horizontally split-window delete-window delete-other-windows delete-windows-on switch-to-buffer switch-to-buffer-other-window display-buffer other-window-for-scrolling) (#$ . 50404))
#@238 Activates the ecb-advice of exactly FUNCTIONS and only of FUNCTIONS, means
deactivates also all functions of `ecb-adviceable-functions' which are not
element of FUNCTIONS. FUNCTIONS must be nil or a subset of
`ecb-adviceable-functions'.
(defalias 'ecb-activate-adviced-functions #[(functions) "\304\211\203+ \n@\211>\203 \305 \306\307#\210\202 \310 \306\307#\210\311 !\210\nA\211\204 *\304\207" [ecb-adviceable-functions elem #1=#:--dolist-temp--47328 functions nil ad-enable-advice around ecb ad-disable-advice ad-activate] 5 (#$ . 50742)])
#@279 Evaluates BODY with all adviced functions of ECB deactivated (means with
their original definition). Restores always the previous state of the ECB
adviced functions, means after evaluating BODY it activates the advices of
exactly the functions in `ecb-advice-window-functions'!
(defalias 'ecb-with-original-functions '(macro . #[(&rest body) "\301\302\303BB\304BB\207" [body unwind-protect progn (ecb-activate-adviced-functions nil) ((ecb-activate-adviced-functions ecb-advice-window-functions))] 4 (#$ . 51300)]))
#@288 Evaluates BODY with all adviceable functions of ECB activated (means with
their new ECB-adjusted definition). Restores always the previous state of the
ECB adviced functions, means after evaluating BODY it activates the advices of
exactly the functions in `ecb-advice-window-functions'!
(defalias 'ecb-with-adviced-functions '(macro . #[(&rest body) "\301\302\303BB\304BB\207" [body unwind-protect progn (ecb-activate-adviced-functions ecb-adviceable-functions) ((ecb-activate-adviced-functions ecb-advice-window-functions))] 4 (#$ . 51823)]))
#@324 Like `ecb-with-adviced-functions' but activates the advice of exactly
FUNCTIONS. Restores always the previous state of the ECB adviced functions,
means after evaluating BODY it activates the advices of exactly the functions
in `ecb-advice-window-functions'!
FUNCTIONS must be nil or a subset of `ecb-adviceable-functions'!
(defalias 'ecb-with-some-adviced-functions '(macro . #[(functions &rest body) "\302\303\304D BB\305BB\207" [functions body unwind-protect progn ecb-activate-adviced-functions ((ecb-activate-adviced-functions ecb-advice-window-functions))] 4 (#$ . 52375)]))
(put 'ecb-with-some-adviced-functions 'lisp-indent-function 1)
#@202 Return 1 if point in first edit-window, 2 if in second edit-window,
'compile if in compile-window and 'ecb if in any special ecb-window. Return
nil if in a window of a frame not equal the `ecb-frame'.
(defalias 'ecb-where-is-point #[nil "\301 \206 \302 \203\f \303\207\304 \232\205 \305\207" [ecb-frame ecb-point-in-edit-window ecb-point-in-compile-window compile selected-frame ecb] 2 (#$ . 53026)])
#@146 Return nil if point stays not in an edit-window otherwise return 1 if point
is in the left/topmost edit-window or 2 if in the other edit-window.
(defalias 'ecb-point-in-edit-window #[nil "\302 \232\205\" \303 \232\203 \304\207\305 \203! \306\303 \307\" \232\203! \310\207\311\207" [ecb-frame ecb-edit-window selected-frame selected-window 1 ecb-edit-window-splitted previous-window 0 2 nil] 3 (#$ . 53437)])
#@58 Return non nil iff point is in the compile-window of ECB
(defalias 'ecb-point-in-compile-window #[nil "\205 \302 \232\205 \303 \232\207" [ecb-compile-window ecb-frame selected-frame selected-window] 2 (#$ . 53854)])
#@90 Return nil if point is not in any tree-buffer of ECB otherwise return the
buffer-object.
(defalias 'ecb-point-in-tree-buffer #[nil "\302 \232\205 \303p! \235\205 p\207" [ecb-frame ecb-tree-buffers selected-frame buffer-name] 2 (#$ . 54081)])
#@226 Return nil if point is not in any of the special dedicated ECB-windows
otherwise return the window-object of this ECB-window. This works for every
dedicated special ECB-window not only for the built-in standard tree-buffers!
(defalias 'ecb-point-in-ecb-window #[nil "\301 \232\205 \302 \303 \235\205 \302 \207" [ecb-frame selected-frame selected-window ecb-canonical-ecb-windows-list] 2 (#$ . 54333)])
#@292 Moves point into the edit-window. If optional OTHER-EDIT-WINDOW is non nil
then point goes in the "other" edit-window if the edit-window is splitted.
Note: The "other" edit window means always the right/down-most edit-window!
If point already stays in the right edit-window nothing is done.
(defalias 'ecb-select-edit-window #[(&optional other-edit-window) "\302 \211\204 \303\304\305\217\210 \205J \306 \205J \307\310 !\202J \311\232\2032 \205J \306 \205J \307\310 !\202J \312\232\203G ?\205J \307\313\314 \315\"!\202J \316\317!)\207" [point-location other-edit-window ecb-point-in-edit-window #1=#:G47329 (select-window ecb-edit-window) ((error)) ecb-edit-window-splitted select-window next-window 1 2 previous-window selected-window 0 error "Internal layout error; redraw the whole layout!"] 5 (#$ . 54745)])
#@246 During activated ECB this function is added to `pre-command-hook' to set
always `ecb-last-edit-window-with-point', `ecb-last-source-buffer' and
`ecb-compile-window-was-selected-before-command' correct so other functions
can use these variables.
(defalias 'ecb-layout-pre-command-hook #[nil "\205% \306 \232\205% \307 \203 \310 p\311 \203 \312p\211\207\313\313\211\207" [ecb-minor-mode ecb-frame ecb-last-edit-window-with-point ecb-last-source-buffer ecb-compile-window-was-selected-before-command ecb-last-compile-buffer-in-compile-window selected-frame ecb-point-in-edit-window selected-window ecb-point-in-compile-window t nil] 2 (#$ . 55570)])
(byte-code "\301B\302\301!\204\f \303\303\207" [current-load-list ecb-layout-prevent-handle-compile-window-selection boundp nil] 2)
#@119 During activated ECB this function is added to `post-command-hook' to
handle `ecb-compile-window-temporally-enlarge'.
(defalias 'ecb-layout-handle-compile-window-selection #[nil "\203 \305\211\207 \205@ \306 \n\232\205@ \307\235\205@ \310 \205@ \311 \203/ \f\204/ \312\313!\210\314\315!\207\f\205@ \311 ?\205@ \312\316!\210\314\317!\207" [ecb-layout-prevent-handle-compile-window-selection ecb-minor-mode ecb-frame ecb-compile-window-temporally-enlarge ecb-compile-window-was-selected-before-command nil selected-frame (after-selection both) ecb-compile-window-live-p ecb-point-in-compile-window ecb-layout-debug-error "ecb-layout-handle-compile-window-selection: enlarge" ecb-toggle-compile-window-height 1 "ecb-layout-handle-compile-window-selection: shrink" -1] 2 (#$ . 56369)])
(byte-code "\300\301\302\303\304$\210\300\305\306\303\304$\210\300\307\310\303\304$\210\300\311\312\303\304$\210\300\313\314\303\304$\210\300\315\316\303\304$\210\300\317\320\303\304$\210\300\321\322\303\304$\210\300\323\324\303\304$\210\300\325\326\303\304$\210\300\327\330\303\304$\207" [ad-add-advice display-buffer (ecb nil t (advice lambda nil "Makes this function compatible with ECB if called in or for the ecb-frame.\nIt displays all buffers which are \"compilation-buffers\" in the sense of\n`ecb-compilation-buffer-p' in the compile-window of ECB. If the compile-window\nis temporally hidden then it will be displayed first.\n\nIf there is no compile-window (`ecb-compile-window-height' is nil) then it\nsplits the edit-window if unsplitted and displays BUFFER in the other\nedit-window but only if `pop-up-windows' is not nil (otherwise the\nedit-window will not splitted).\n\nIf called from outside the edit-area for a non-\"compilation-buffers\" (s.a.)\nthen it behaves as if called from within an edit-window if `display-buffer' is\ncontained in `ecb-layout-always-operate-in-edit-window': It depends on\n`pop-up-windows' if the edit-window is automatically splitted ot not.\nIf `ecb-layout-always-operate-in-edit-window' does not contain\n`display-buffer' then the buffer is displayed in the edit-window without\nsplitting it (if unsplitted).\n\nIf called for other frames it works like the original version." (if ecb-running-xemacs (ecb-layout-debug-error "display-buffer entered with: %s %s %s %s" (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3)) (ecb-layout-debug-error "display-buffer entered with: %s %s %s" (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2))) (if (and ecb-minor-mode (or (and (ad-get-arg 2) (framep (ad-get-arg 2)) (equal (ad-get-arg 2) ecb-frame)) (and (or (null (ad-get-arg 2)) (equal (ad-get-arg 2) t) (equal (ad-get-arg 2) 0)) (equal (selected-frame) ecb-frame)))) (cond ((ecb-compilation-buffer-p (ad-get-arg 0)) (ecb-layout-debug-error "display-buffer for a comp-buffer: %s" (ad-get-arg 0)) (when (and (numberp (car (get 'ecb-compile-window-height 'saved-value))) (not (ecb-compile-window-live-p)) (not (equal (minibuffer-window ecb-frame) (selected-window)))) (ecb-layout-debug-error "display-buffer: comp-win will be toggled.") (ecb-toggle-compile-window 1)) (if (ecb-compile-window-live-p) (let ((edit-window-list (if (ecb-edit-window-splitted) (list ecb-edit-window (next-window ecb-edit-window)) (list ecb-edit-window)))) (unwind-protect (progn (mapc #'(lambda (w) (set-window-dedicated-p w t)) edit-window-list) (if (equal (selected-window) ecb-compile-window) (let ((pop-up-windows (if ecb-running-xemacs t nil))) (ecb-layout-debug-error "display-buffer from comp-win for comp-buf: %s" (ad-get-arg 0)) (if ecb-running-xemacs (unwind-protect (progn (set-frame-property ecb-frame 'unsplittable t) (setq ad-return-value (ecb-display-buffer-xemacs (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3)))) (set-frame-property ecb-frame 'unsplittable nil)) ad-do-it)) (if ecb-running-xemacs (setq ad-return-value (ecb-display-buffer-xemacs (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3))) ad-do-it))) (mapc #'(lambda (w) (set-window-dedicated-p w nil)) edit-window-list)) (when (interactive-p) (ecb-set-compile-window-height)) (if (member ecb-compile-window-temporally-enlarge '(after-selection both)) (setq ecb-layout-prevent-handle-compile-window-selection t))) (when (and pop-up-windows (not (ecb-edit-window-splitted))) (ecb-layout-debug-error "display-buffer for comp-buffer %s - split edit-window:" (ad-get-arg 0)) (ecb-with-adviced-functions (split-window ecb-edit-window))) (if ecb-running-xemacs (setq ad-return-value (ecb-display-buffer-xemacs (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3))) ad-do-it))) ((not (member (ad-get-arg 0) (ecb-get-current-visible-ecb-buffers))) (ecb-layout-debug-error "display-buffer for normal buffer: %s" (ad-get-arg 0)) (if (and (not (ecb-point-in-edit-window)) (member 'display-buffer ecb-layout-always-operate-in-edit-window)) (ecb-select-edit-window)) (if (ecb-compile-window-live-p) (unwind-protect (progn (set-window-dedicated-p ecb-compile-window t) (if ecb-running-xemacs (setq ad-return-value (ecb-display-buffer-xemacs (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3))) ad-do-it)) (set-window-dedicated-p ecb-compile-window nil)) (if ecb-running-xemacs (setq ad-return-value (ecb-display-buffer-xemacs (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3))) ad-do-it))) (t (or (setq ad-return-value (get-buffer-window (ad-get-arg 0) ecb-frame)) (ecb-error "display-buffer can not display not visible ecb-buffers!")))) (ecb-layout-debug-error "display-buffer - just run original version.") (ecb-with-original-functions (if ecb-running-xemacs (setq ad-return-value (ecb-display-buffer-xemacs (ad-get-arg 0) (ad-get-arg 1) (ad-get-arg 2) (ad-get-arg 3))) ad-do-it))))) around nil other-window (ecb nil t (advice lambda nil "The ECB-version of `other-window'. Works exactly like the original function\nwith the following ECB-adjustment: The behavior depends on\n`ecb-other-window-jump-behavior'." (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame)) (equal ecb-other-window-jump-behavior 'all)) ad-do-it (let ((count (if (ad-get-arg 0) (if (< (ad-get-arg 0) 0) (* -1 (ad-get-arg 0)) (ad-get-arg 0)) 1)) (direction (if (or (not (ad-get-arg 0)) (>= (ad-get-arg 0) 0)) 1 -1))) (while (> count 0) (setq count (1- count)) (cond ((equal (ecb-point-in-edit-window) 1) (if (= direction 1) (if (ecb-edit-window-splitted) (select-window (next-window)) (if (and (equal ecb-other-window-jump-behavior 'edit-and-compile) ecb-compile-window) (ignore-errors (select-window ecb-compile-window)) (if (> (minibuffer-depth) 0) (select-window (minibuffer-window ecb-frame))))) (if (> (minibuffer-depth) 0) (select-window (minibuffer-window ecb-frame)) (if (and (equal ecb-other-window-jump-behavior 'edit-and-compile) ecb-compile-window) (ignore-errors (select-window ecb-compile-window)) (if (ecb-edit-window-splitted) (select-window (next-window))))))) ((ecb-point-in-compile-window) (if (and (= direction 1) (> (minibuffer-depth) 0)) (select-window (minibuffer-window ecb-frame)) (ecb-select-edit-window) (if (and (ecb-edit-window-splitted) (= direction -1)) (select-window (next-window))))) ((equal (ecb-point-in-edit-window) 2) (if (= direction 1) (if (and (equal ecb-other-window-jump-behavior 'edit-and-compile) ecb-compile-window) (ignore-errors (select-window ecb-compile-window)) (if (> (minibuffer-depth) 0) (select-window (minibuffer-window ecb-frame)) (ecb-select-edit-window))) (ecb-select-edit-window))) ((equal (selected-window) (minibuffer-window ecb-frame)) (if (= direction -1) (if (and (equal ecb-other-window-jump-behavior 'edit-and-compile) ecb-compile-window) (ignore-errors (select-window ecb-compile-window)) (ecb-select-edit-window t)) (ecb-select-edit-window))) (t (ecb-select-edit-window)))))))) delete-windows-on (ecb nil t (advice lambda nil "The ECB-version of `delete-windows-on'. Works exactly like the original\nfunction with the following ECB-adjustment:\n\nAn error is reported if BUFFER is an ECB-tree-buffer. These windows are not\nallowed to be deleted." (let ((curr-frame (selected-frame)) (buf-name (or (and (stringp (ad-get-arg 0)) (ad-get-arg 0)) (and (bufferp (ad-get-arg 0)) (buffer-name (ad-get-arg 0))))) (frames (cond ((equal (ad-get-arg 1) 0) (delete nil (mapcar (lambda (f) (if (frame-visible-p f) f)) (frame-list)))) ((equal (ad-get-arg 1) 'visible) (delete nil (mapcar (lambda (f) (if (equal (frame-visible-p f) t) f)) (frame-list)))) ((null (ad-get-arg 1)) (frame-list)) ((equal (ad-get-arg 1) t) (list (selected-frame))) ((frame-live-p (ad-get-arg 1)) (list (ad-get-arg 1)))))) (if (member (get-buffer buf-name) (ecb-get-current-visible-ecb-buffers)) (ecb-error "delete-windows-on is not allowed for the special ECB-buffers!") (dolist (f frames) (if (not (equal f ecb-frame)) (progn (ad-set-arg 1 f) ad-do-it) (when (get-buffer-window buf-name ecb-frame) (select-frame ecb-frame) (ecb-with-adviced-functions (delete-window (get-buffer-window buf-name ecb-frame)) (if (string= buf-name (buffer-name (window-buffer ecb-edit-window))) (switch-to-buffer (other-buffer buf-name nil ecb-frame)))) (select-frame curr-frame)))))))) delete-window (ecb nil t (advice lambda nil "The ECB-version of `delete-window'. Works exactly like the original\nfunction with the following ECB-adjustment:\n\nIf optional argument WINDOW is nil (i.e. probably called interactively):\nIf called in a splitted edit-window then it works like as if the two parts of\nthe splitted edit window would be the only windows in the frame. This means\nthe part of the splitted edit-window which contains the point will be\ndestroyed and the other part fills the whole edit-window.\nIf called in an unsplitted edit-window then nothing is done.\nIf called in any other window of the current ECB-layout there are two\nalternatives:\n- If the function is contained in `ecb-layout-always-operate-in-edit-window'\n it jumps first in the (first) edit-window and does then itīs job.\n- Otherwise an error is reported.\n\nIf optional argument WINDOW is a live window (i.e. called from program):\nIf WINDOW is an edit-window then this window is deleted, otherwise an error is\nreported." (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame))) (ecb-with-original-basic-functions (ecb-with-original-functions ad-do-it)) (ecb-do-with-unfixed-ecb-buffers (if (null (ad-get-arg 0)) (when (and (member 'delete-window ecb-layout-always-operate-in-edit-window) (not (ecb-point-in-edit-window))) (ecb-select-edit-window)) (if (window-live-p (ad-get-arg 0)) (select-window (ad-get-arg 0)))) (if (not (ecb-point-in-edit-window)) (ecb-error "Only an edit-window can be deleted!")) (ad-with-originals 'delete-window (if (ecb-edit-window-splitted) (funcall (intern (format "ecb-delete-window-in-editwindow-%s" ecb-layout-name)) (ecb-edit-window-splitted)))))))) delete-other-windows (ecb nil t (advice lambda nil "The ECB-version of `delete-other-windows'. Works exactly like the\noriginal function with the following ECB-adjustment:\n\nIf optional argument WINDOW is nil (i.e. probably called interactively):\nIf called in a splitted edit-window then it works like as if the two parts of\nthe splitted edit window would be the only windows in the frame. This means\nthe part of the splitted edit-window which contains the point fills the whole\nedit-window.\n- If called in an unsplitted edit-window then nothing is done.\n- If called in one of the ecb-windows then the current one is maximized, i.e.\n the other ecb-windows (not the edit-windows!) are deleted.\n- If called in the compile window there are two\n alternatives:\n + If the function is contained in `ecb-layout-always-operate-in-edit-window'\n it jumps first in the (first) edit-window and does then itīs job.\n + Otherwise an error is reported.\n\nIf optional argument WINDOW is a live window (i.e. called from program):\nIf WINDOW is an edit-window then this window is maximized (i.e. the other\nedit-window is deleted), if WINDOW is an ecb-window then only the other\necb-windows are deleted and in all other cases an error is reported." (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame))) (ecb-with-original-basic-functions (ecb-with-original-functions ad-do-it)) (ecb-do-with-unfixed-ecb-buffers (if (null (ad-get-arg 0)) (when (and (member 'delete-other-windows ecb-layout-always-operate-in-edit-window) (ecb-point-in-compile-window)) (ecb-select-edit-window)) (if (window-live-p (ad-get-arg 0)) (select-window (ad-get-arg 0)))) (cond ((ecb-point-in-compile-window) (ecb-error "The compile window can not be maximized!")) ((ecb-point-in-edit-window) (ad-with-originals 'delete-window (if (ecb-edit-window-splitted) (funcall (intern (format "ecb-delete-other-windows-in-editwindow-%s" ecb-layout-name)) (ecb-edit-window-splitted))))) (t (let ((ecb-buffer (current-buffer))) (ecb-maximize-ecb-window) (ignore-errors (select-window (get-buffer-window ecb-buffer)))))))))) split-window-horizontally (ecb nil t (advice lambda nil "The ECB-version of `split-window-horizontally'. Works exactly like the\noriginal function with the following ECB-adjustment:\n\nCalled in an unsplitted edit-window then the edit window will be splitted\nhorizontally. If called in an already splitted edit-window then nothing is\ndone. If called in any other window of the current ECB-layout it stops with an\nerror if this function is not contained in\n`ecb-layout-always-operate-in-edit-window'!" (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame))) (ecb-with-original-functions ad-do-it) (when (and (member 'split-window-horizontally ecb-layout-always-operate-in-edit-window) (not (ecb-point-in-edit-window))) (ecb-select-edit-window)) (ecb-with-adviced-functions ad-do-it)))) split-window-vertically (ecb nil t (advice lambda nil "The ECB-version of `split-window-vertically'. Works exactly like the\noriginal function with the following ECB-adjustment:\n\nCalled in an unsplitted edit-window then the edit window will be splitted\nvertically. If called in an already splitted edit-window then nothing is done.\nIf called in any other window of the current ECB-layout it stops with an error\nif this function is not contained in\n`ecb-layout-always-operate-in-edit-window'." (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame))) (ecb-with-original-functions ad-do-it) (when (and (member 'split-window-vertically ecb-layout-always-operate-in-edit-window) (not (ecb-point-in-edit-window))) (ecb-select-edit-window)) (ecb-with-adviced-functions ad-do-it)))) split-window (ecb nil t (advice lambda nil "The ECB-version of `split-window'. The meaning of WINDOW must be one of the\nedit-windows of ECB otherwise an error is reported. If the edit-window is\nalready splitted then nothing will be done. Besides this (e.g. called for a\nwindow in another frame than the `ecb-frame') it behaves like the original\nversion." (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame))) ad-do-it (when (and (interactive-p) (null (ad-get-arg 0)) (member 'split-window ecb-layout-always-operate-in-edit-window) (not (ecb-point-in-edit-window))) (ecb-select-edit-window)) (let ((window (or (ad-get-arg 0) (selected-window)))) (if (not (ecb-edit-window-splitted)) (if (not (equal window ecb-edit-window)) (ecb-error "Only the edit-window of ECB is split-able!") ad-do-it) (setq ad-return-value (cond ((equal window ecb-edit-window) (next-window ecb-edit-window)) ((equal window (next-window ecb-edit-window)) ecb-edit-window) (t (ecb-error "Only the edit-window of ECB is split-able!"))))))))) switch-to-buffer-other-window (ecb nil t (advice lambda nil "The ECB-version of `switch-to-buffer-other-window'. Works exactly like the\noriginal but with some adaptions for ECB so this function works in a\n\"natural\" way:\n\nIf called in any special ecb-window of the current ECB-layout then it goes\nalways to the first edit-window and then goes on as if called from this\nedit-window.\n\nIf a compile-window is used (i.e. `ecb-compile-window-height' is not nil)\nthen \"compilation-buffers\" in the sense of `ecb-compilation-buffer-p' are\nalways displayed in the compile-window. If the compile-window is temporally\nhidden then it will be displayed first. If no compile-window is used it\nbehaves like the original.\n\nIf called from within the compile-window then \"compilation-buffers\" will be\ndisplayed still there and all other buffers are displayed in one of the\nedit-windows - if the destination-buffer is already displayed in one of the\nedit-windows then this one is used otherwise it behaves like the original.\n\nIf called within an edit-window it behaves like the original function except\nfor compilation-buffers (if a compile-window is used, see above)." (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame))) (ecb-with-original-basic-functions (ecb-with-original-functions ad-do-it)) (if (equal (ecb-where-is-point) 'ecb) (ecb-select-edit-window)) (let ((pop-up-windows t)) (pop-to-buffer (ad-get-arg 0) t (if ecb-running-xemacs (selected-frame) (ad-get-arg 1))))))) switch-to-buffer (ecb nil t (advice lambda nil "The ECB-version of `switch-to-buffer'. Works exactly like the original but\nwith the following enhancements for ECB:\n\n\"compilation-buffers\" in the sense of `ecb-compilation-buffer-p' will be\ndisplayed always in the compile-window of ECB (if `ecb-compile-window-height'\nis not nil) - if the compile-window is temporally hidden then it will be\ndisplayed first. If you do not want this you have to modify the options\n`ecb-compilation-buffer-names', `ecb-compilation-major-modes' or\n`ecb-compilation-predicates'.\n\nIf called for non \"compilation-buffers\" (s.a.) from outside the edit-area\nof ECB it behaves as if called from an edit-window if `switch-to-buffer' is\ncontained in the option `ecb-layout-always-operate-in-edit-window'. Otherwise\nan error is reported." (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame))) (ecb-with-original-basic-functions (ecb-with-original-functions ad-do-it)) (if (ecb-compilation-buffer-p (ad-get-arg 0)) (progn (when (and (not (ecb-compile-window-live-p)) (numberp (car (get 'ecb-compile-window-height 'saved-value)))) (ecb-toggle-compile-window 1)) (if (ecb-compile-window-live-p) (select-window ecb-compile-window)) (if (equal (ecb-where-is-point) 'ecb) (if (member 'switch-to-buffer ecb-layout-always-operate-in-edit-window) (ecb-select-edit-window) (ecb-error "switch-to-buffer: Can not switch to %s in an ecb-window!" (ad-get-arg 0))))) (if (member (ecb-where-is-point) '(ecb compile)) (if (member 'switch-to-buffer ecb-layout-always-operate-in-edit-window) (ecb-select-edit-window) (ecb-error "switch-to-buffer: Can only switch to %s in an edit-window!" (ad-get-arg 0))))) (ecb-with-original-basic-functions (ecb-with-original-functions ad-do-it)) (when (ecb-point-in-compile-window) (ecb-set-compile-window-height))))) other-window-for-scrolling (ecb nil t (advice lambda nil "This function determines the window which is scrolled if any of the\n\"other-window-scrolling-functions\" is called (e.g. `scroll-other-window').\nIf edit-window is splitted, point stays in the \"other\" edit-window and there\nis no durable compilation-window then always the first edit-window is chosen." (if (or (not ecb-minor-mode) (not (equal (selected-frame) ecb-frame)) (and ecb-compile-window-height (ecb-compile-window-live-p)) (not (equal (ecb-point-in-edit-window) 2))) ad-do-it (let ((other-window-scroll-buffer (window-buffer ecb-edit-window))) ad-do-it))))] 5)
#@194 Acts like the adviced version of `switch-to-buffer'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-switch-to-buffer #[nil "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively switch-to-buffer] 2 (#$ . 75894) nil])
#@207 Acts like the adviced version of `switch-to-buffer-other-window'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-switch-to-buffer-other-window #[nil "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively switch-to-buffer-other-window] 2 (#$ . 76345) nil])
#@190 Acts like the adviced version of `other-window'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-other-window #[(&optional arg) "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively other-window] 2 (#$ . 76835) nil])
#@198 Acts like the adviced version of `delete-other-windows'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-delete-other-windows #[nil "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively delete-other-windows] 2 (#$ . 77286) nil])
#@191 Acts like the adviced version of `delete-window'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-delete-window #[nil "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively delete-window] 2 (#$ . 77749) nil])
#@195 Acts like the adviced version of `delete-windows-on'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-delete-windows-on #[nil "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively delete-windows-on] 2 (#$ . 78191) nil])
#@201 Acts like the adviced version of `split-window-vertically'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-split-window-vertically #[nil "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively split-window-vertically] 2 (#$ . 78645) nil])
#@203 Acts like the adviced version of `split-window-horizontally'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-split-window-horizontally #[nil "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively split-window-horizontally] 2 (#$ . 79117) nil])
#@190 Acts like the adviced version of `split-window'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-split-window #[nil "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively split-window] 2 (#$ . 79595) nil])
#@192 Acts like the adviced version of `display-buffer'.
Use this function only interactively! For use in programs use the macros
`ecb-with-adviced-functions' or `ecb-with-some-adviced-functions'!
(defalias 'ecb-display-buffer #[nil "\301\216\302!\210\303\304!)\207" [ecb-adviceable-functions ((ecb-activate-adviced-functions ecb-advice-window-functions)) ecb-activate-adviced-functions call-interactively display-buffer] 2 (#$ . 80034) nil])
#@233 Splits the current-window horizontally and returns the absolute amount in
columns. If AMOUNT is greater than -1.0 and lower than +1.0 then the value is
multiplied with the current window-width (frame-width if USE-FRAME is not nil).
(defalias 'ecb-split-hor #[(amount &optional dont-switch-window use-frame) "\304 \203 \305 \202
\306 \"\307\n\"\210\n)\207" [amount use-frame abs-amout dont-switch-window ecb-normalize-number frame-width window-width ecb-split-hor-abs] 3 (#$ . 80479)])
(defalias 'ecb-split-hor-abs #[(amount &optional dont-switch-window) "\302!\210 ?\205
\303\304 !\207" [amount dont-switch-window split-window-horizontally select-window next-window] 2])
#@220 Splits the current-window and returns the absolute amount in lines. If
AMOUNT is greater than -1.0 and lower than +1.0 then the value is multiplied
with the current window-height (frame-height if USE-FRAME is not nil).
(defalias 'ecb-split-ver #[(amount &optional dont-switch-window use-frame) "\304 \203\f \305 S\202 \306 \"\307\n\"\210\n)\207" [amount use-frame abs-amout dont-switch-window ecb-normalize-number frame-height window-height ecb-split-ver-abs] 3 (#$ . 81164)])
(defalias 'ecb-split-ver-abs #[(amount &optional dont-switch-window) "\302!\210 ?\205
\303\304 !\207" [amount dont-switch-window split-window-vertically select-window next-window] 2])
#@923 An alist where for each `buffer-name' of a special ecb-buffer - displayed
in a dedicated window - a function must be registered which displays that
buffer in current window and makes this window dedicated to this buffer. So
for every ecb-buffer a cons cell must be added to this alist where car is
`buffer-name' and cdr is the symbol of the setting-function.
The setting function of such a buffer must do:
1. switch to that buffer in current window
2. all things necessary for this buffer - e.g. making it read-only
3. making the current window dedicated to that buffer! For this the macro
`ecb-with-dedicated-window' must be used!
The setting function must ensure that the current window where is still
current at the end and that the related ecb-buffer is displayed in this window
at the end.
One examples of such a setting function is `ecb-set-history-buffer' for
the buffer with name `ecb-history-buffer-name'.
(defvar ecb-buffer-setfunction-registration nil (#$ . 81838))
#@91 Return a list of all buffers displayed in a current visible dedicated
special ecb-window.
(defalias 'ecb-get-current-visible-ecb-buffers #[nil "\300\301\302 \"\207" [mapcar #[(window) "\301!\207" [window window-buffer] 2] ecb-canonical-ecb-windows-list] 3 (#$ . 82828)])
#@102 Used with `ecb-toggle-ecb-windows'. If true the ECB windows are hidden. Do
not change this variable!
(defvar ecb-windows-hidden t (#$ . 83107))
#@242 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!
(defalias 'ecb-toggle-ecb-windows #[(&optional arg) "?\206\n \306 \232??\205+\n\204 ?\202 \307\n!\310X\211\204O \311\312!\210\313 \203- \314 \210\311\315!\210
\203<