File: The-edit-area.html

package info (click to toggle)
ecb 2.32-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny, squeeze
  • size: 5,236 kB
  • ctags: 1,790
  • sloc: lisp: 24,391; makefile: 143; sh: 57
file content (421 lines) | stat: -rw-r--r-- 14,988 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
<html lang="en">
<head>
<title>ECB - the Emacs Code Browser</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name=description content="ECB - the Emacs Code Browser">
<meta name=generator content="makeinfo 4.2">
<link href="http://www.gnu.org/software/texinfo/" rel=generator-home>
</head>
<body>
<p>
Node:<a name="The%20edit-area">The edit-area</a>,
Next:<a rel=next accesskey=n href="Temp--and-compile-buffers.html#Temp-%20and%20compile-buffers">Temp- and compile-buffers</a>,
Previous:<a rel=previous accesskey=p href="Using-the-keyboard.html#Using%20the%20keyboard">Using the keyboard</a>,
Up:<a rel=up accesskey=u href="Usage-of-ECB.html#Usage%20of%20ECB">Usage of ECB</a>
<hr><br>

<h3>Working with the edit-window(s) of the edit-area</h3>

<p>ECB offers you all what you need to work with the edit-area as if the
edit-windows of the edit-area would be the only windows of the
ECB-frame.

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

<ul>
<li><code>other-window</code>
<li><code>delete-window</code>
<li><code>delete-other-windows</code>
<li><code>delete-windows-on</code>
<li><code>split-window-horizontally</code>
<li><code>split-window-vertically</code>
<li><code>split-window</code>
<li><code>display-buffer</code>
<li><code>switch-to-buffer</code>
<li><code>switch-to-buffer-other-window</code>
<li><code>other-window-for-scrolling</code>
<li><code>balance-windows</code>
</ul>

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

<ul>
<li>All these adviced functions behaves exactly like their corresponding
original functions but they always act as if the edit-window(s) of ECB
would be the only window(s) of the ECB-frame. So the edit-window(s) of
ECB seems to be a normal Emacs-frame to the user. This means that you
can split and delete edit-windows without any restriction - ECB
ensures that neither the special ECB-windows nor the compile-window
will be damaged.

<li>If there is a persistent compile-window (see <a href="Temp--and-compile-buffers.html#Temp-%20and%20compile-buffers">Temp- and compile-buffers</a>) then all compilation-buffers in the sense of
<code>ecb-compilation-buffer-p</code> will be displayed in the
compile-window.

<li>If called in another frame than the ECB-frame these functions behave
exactly like the not adviced original versions! 
</ul>

<p>ATTENTION: If you want to work within the edit-area with splitting and
unsplitting (i.e. deleting) 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
<code>ecb-advice-window-functions</code> you can customizes which functions
should be adviced by ECB. Please read carefully the documentation of
this option!

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

<h4>Documentation of the adviced window functions</h4>

<p>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
<code>describe-function</code> or <kbd>C-h f</kbd>.

<p>
<table width="100%">
<tr>
<td align="left"><b>other-window</b><i> ARG &amp;optional ALL-FRAMES
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: The ECB-version of <code>other-window</code>. 
Works exactly like the original function with the following
ECB-adjustment: The behavior depends on
<code>ecb-other-window-behavior</code>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>delete-window</b><i> &amp;optional WINDOW
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: The ECB-version of <code>delete-window</code>. 
Works exactly like the original function with the following
ECB-adjustment:

<p>If optional argument WINDOW is nil (i.e. probably called
interactively): If called in a splitted edit-window then it works like
as if all the edit-windows would be the only windows in the frame. 
This means the current edit-window which contains the point will be
destroyed and its place will be occupied from another one. If called
in an unsplitted edit-window then nothing is done. If called in the
compile-window of ECB then the compile-window will be hidden (like
with <code>ecb-toggle-compile-window</code>). If called in an ecb-window
of the current ECB-layout there are two alternatives:

<ul>
<li>If the function is contained in
<code>ecb-layout-always-operate-in-edit-window</code> the right edit-window
is selected (depends on the value of the option
<code>ecb-mouse-click-destination</code>) and does then its job.

<li>Otherwise the behavior depends on the value of the option
<code>ecb-advice-window-functions-signal-error</code>. 
</ul>

<p>If optional argument WINDOW is a living window (i.e. called from
program): If WINDOW is an edit-window then this window is deleted, if
WINDOW is the compile-window then it will be hidden and otherwise the
behavior depends on <code>ecb-advice-window-functions-signal-error</code>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>delete-other-windows</b><i> &amp;optional WINDOW
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: The ECB-version of
<code>delete-other-windows</code>. Works exactly like the original function
with the following ECB-adjustment:

<p>If optional argument WINDOW is nil (i.e. probably called
interactively): If called in a splitted edit-window then it works like
as if all the edit-windows would be the only windows in the frame. 
This means all other edit-windows besides the current edit-window
which contains the point will be destroyed and the current edit-window
fills the whole edit-area. Neither the special ecb-windows nor the
compile-window will be destroyed!

<ul>

<li>If called in an unsplitted edit-window then either the compile-window
will be hidden (if there is one) otherwise nothing is done.

<li>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.

<li>If called in the compile window there are two alternatives:

<ul>
<li>If the function is contained in
<code>ecb-layout-always-operate-in-edit-window</code> the right edit-window
is selected (depends on the value of the option
<code>ecb-mouse-click-destination</code>) and then it does its job.

<li>Otherwise the behavior depends on the value of the option
<code>ecb-advice-window-functions-signal-error</code>. 
</ul>
</ul>

<p>If optional argument WINDOW is a living 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 there are more at least 2
edit-windows otherwise the compile-window is deleted (if there is
one). If WINDOW is an ecb-window then only the other ecb-windows are
deleted and in all other cases the behavior depends on
<code>ecb-advice-window-functions-signal-error</code>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>delete-windows-on</b><i> BUFFER &amp;optional FRAME
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: The ECB-version of <code>delete-windows-on</code>. 
Works exactly like the original function with the following
ECB-adjustment:

<p>An error is reported if <var>BUFFER</var> is an ECB-tree-buffer. These
windows are not allowed to be deleted. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>split-window</b><i> &amp;optional WINDOW SIZE HORFLAG
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: The ECB-version of <code>split-window</code>. 
Works exactly like the original function with the following
ECB-adjustment:

<p>If called for a not-edit-window in the <code>ecb-frame</code> it stops with
an error if <code>split-window</code> is not contained in the option
<code>ecb-layout-always-operate-in-edit-window</code>! Besides this (e.g. 
called for a window in another frame than the <code>ecb-frame</code>) it
behaves like the original version. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>split-window-horizontally</b><i>
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: The ECB-version of
<code>split-window-horizontally</code>. Works exactly like the original
function with the following ECB-adjustment:

<p>If called in any other window of the current ECB-layout it stops with
an error if this <code>split-window-horizontally</code> is not contained in
the option <code>ecb-layout-always-operate-in-edit-window</code>! 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>split-window-vertically</b><i>
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: The ECB-version of
<code>split-window-vertically</code>. Works exactly like the original
function with the following ECB-adjustment:

<p>If called in any other window of the current ECB-layout it stops with
an error if this <code>split-window-vertically</code> is not contained in
the option <code>ecb-layout-always-operate-in-edit-window</code>! 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>display-buffer</b><i> BUFFER &amp;optional NOT-THIS-WINDOW FRAME
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: 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
<code>ecb-compilation-buffer-p</code> in the compile-window of ECB. If the
compile-window is temporally hidden then it will be displayed first.

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

<p>All buffers which are not "compilation-buffers" in the sense of
<code>ecb-compilation-buffer-p</code> will be displayed in one of the
edit-area and <code>display-buffer</code> behaves as if the edit-windows
would be the only windows in the frame.

<p>If BUFFER is contained in <code>special-display-buffer-names</code> or
matches <code>special-display-regexps</code> then
<code>special-display-function</code> will be called (if not nil). But this
behavior depends on the value of the option
<code>ecb-ignore-special-display</code>. The values of
<code>same-window-buffer-names</code> and <code>same-window-regexps</code> are
supported as well.

<p>See the option <code>ecb-ignore-display-buffer-function</code>!

<p>If called for other frames it works like the original version. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>switch-to-buffer</b><i> BUFFER &amp;optional NORECORD
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: The ECB-version of <code>switch-to-buffer</code>. 
Works exactly like the original but with the following enhancements
for ECB:

<p>"compilation-buffers" in the sense of
<code>ecb-compilation-buffer-p</code> will be displayed always in the
compile-window of ECB (if <code>ecb-compile-window-height</code> 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
<code>ecb-compilation-buffer-names</code>,
<code>ecb-compilation-major-modes</code> or
<code>ecb-compilation-predicates</code>.

<p>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
<code>switch-to-buffer</code> is contained in the option
<code>ecb-layout-always-operate-in-edit-window</code>. Otherwise an error is
reported. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>switch-to-buffer-other-window</b><i> BUFFER &amp;optional FRAME
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: The ECB-version of
<code>switch-to-buffer-other-window</code>. Works exactly like the original
but with some adaptions for ECB so this function works in a
"natural" way:

<p>If called in any special ecb-window of the current ECB-layout then it
goes always to an edit-window (which one depends on the setting in
<code>ecb-mouse-click-destination</code>) and then goes on as if called from
this edit-window.

<p>If a compile-window is used (i.e. <code>ecb-compile-window-height</code> is
not nil) then "compilation-buffers" in the sense of
<code>ecb-compilation-buffer-p</code> 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.

<p>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.

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

<p>
<table width="100%">
<tr>
<td align="left"><b>other-window-for-scrolling</b><i>
</i></td>
<td align="right">Function</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: This function determines the window which is
scrolled if any of the "other-window-scrolling-functions" is called
(e.g. <code>scroll-other-window</code>):

<p>If the option <code>ecb-scroll-other-window-scrolls-compile-window</code> is
not nil (maybe set by
<code>ecb-toggle-scroll-other-window-scrolls-compile</code>) and a
compile-window is visible then always the current buffer in the
compile-window is scrolled!

<p>Otherwise it depends completely on the setting in
<code>ecb-other-window-behavior</code>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>balance-windows</b><i>
</i></td>
<td align="right">Command</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Around-advice <code>ecb</code>: When called in the <code>ecb-frame</code> then
only the edit-windows are balanced. 
</td></tr>
</table>

</body></html>