File: ecb-general.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 (674 lines) | stat: -rw-r--r-- 21,895 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
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
<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="ecb-general">ecb-general</a>,
Next:<a rel=next accesskey=n href="ecb-tree-buffer.html#ecb-tree-buffer">ecb-tree-buffer</a>,
Previous:<a rel=previous accesskey=p href="Customizable-options.html#Customizable%20options">Customizable options</a>,
Up:<a rel=up accesskey=u href="Customizable-options.html#Customizable%20options">Customizable options</a>
<hr><br>

<h4>Group ecb-general</h4>

<p>This group contains general settings for the Emacs code browser:

<p>
<table width="100%">
<tr>
<td align="left"><b>activate-before-layout-draw-hook</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Normal hook run at the end of activating the ecb-package by running
<code>ecb-activate</code>. This hooks are run after all the internal setup
process but directly before(!) drawing the layout specified in
<code>ecb-layout</code> (means before dividing the frame into several
windows).

<p>A senseful using of this hook can be maximizing the Emacs-frame for
example, because this should be done before the layout is drawn
because ECB computes the size of the ECB-windows with the current
frame size! If you need a hook-option for the real end of the
activating process (i.e. after the layout-drawing) look at
<code>ecb-activate-hook</code>.

<p>IMPORTANT: The difference between this hook and
<code>ecb-redraw-layout-before-hook</code> is that the latter one is
evaluated always before the layout is redrawn (for example after
calling <code>ecb-redraw-layout</code>) whereas the former one (this hook)
is only evaluated exactly once during the activation-process of ECB. 
So during the activation process there is the following sequence of
hooks:
<ol type=1 start=1>
</p><li><code>ecb-activate-before-layout-draw-hook</code> \(this one)
<li><code>ecb-redraw-layout-before-hook</code>
<li>&lt;Drawing the layout&gt;
<li><code>ecb-redraw-layout-after-hook</code>
<li><code>ecb-activate-hook</code>
</ol>
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>activate-hook</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Hook run at the end of activating ECB by <code>ecb-activate</code>. This
hooks are run at the real end of the activating process, means after
the layout has been drawn!. If you need hooks which are run direct
before the layout-drawing look at
<code>ecb-activate-before-layout-draw-hook</code>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>activation-selects-ecb-frame-if-already-active</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Trying to activate an already activated ECB selects the ECB-frame. If
t then the ECB-frame is selected, if nil then it is not. If 'ask then
ECB asks if the ECB-frame should be selected if the current-frame is
not the <code>ecb-frame</code>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>auto-activate</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Automatically startup ECB when Emacs starts up. This should only be
true if you always want to run <code>ecb-activate</code>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>auto-compatibility-check</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Check at ECB-startup if all ECB-options have correct values. If not
nil then all ECB-options are checked if their current value have the
correct type. It the type is incorrect the option is either auto. 
upgraded to the new type or reset to the default-value of current ECB
if no upgrade is possible. This feature can also upgrade options which
are renamed in current ECB and try to transform the old-value to the
new named option. After startup all upgraded or reset options are
displayed with their old (before upgrade/reset) and new values. See
also the commands <code>ecb-upgrade-options</code> and
<code>ecb-display-upgraded-options</code>. If this option is off then the
user can perform the check and reset manually with
<code>ecb-upgrade-options</code>. 
See <a href="Auto.-option-upgrading.html#Auto.%20option-upgrading">Auto. option-upgrading</a>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>before-activate-hook</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Normal hook run at the beginning of activating the ecb-package by
running <code>ecb-activate</code>. These hooks run before any other tasks of
the activating process are performed. If any of these hooks returns
nil then ECB will not be activated!

<p>This can be used to check some conditions and then only start ECB if
all conditions are true. For example a function could be added which
returns only nil if Gnus is running. Then calling <code>ecb-activate</code>
or <code>ecb-minor-mode</code> will only start ECB if Gnus is not already
running. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>before-deactivate-hook</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Normal hook run at the beginning of deactivating ECB by running
<code>ecb-deactivate</code>. These hooks run before any other tasks of the
deactivating process are performed. If any of these hooks returns nil
then ECB will not be deactivated! See also
<code>ecb-before-activate-hook</code>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>bucket-node-display</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
How ECB displays bucket-nodes in a ECB tree-buffer. Bucket-nodes have
only one job: Nodes with similar properties will be dropped into one
bucket for such a common property and all these nodes will be added as
children to the bucket-node. Besides being expandable and collapsable
a bucket-node has no senseful action assigned. Examples for
bucket-nodes are "[+] Variables, "[+] Dependencies" etc. in the
Methods-buffer or buckets which combine filenames with same extension
under a bucket-node with name this extension.

<p>This option defines how bucket-node should be displayed. The name of
the bucket-node is computed by ECB but you can define a prefix, a
suffix and a special face for the bucket-node

<p>The default are empty prefix/suffix-strings and
<code>ecb-bucket-node-face</code>. But an alternative can be for example
'("[" "]" nil) which means no special face and a display like
"[+] [&lt;bucket-name&gt;]". 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>clear-caches-before-activate</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Clear all ECB internal caches before startup. If t then ECB clears all
its internal caches before starting up. Caches are used for files- and
subdirs (see <code>ecb-cache-directory-contents</code> and
<code>ecb-cache-directory-contents-not</code>) for semantic-tags and for
the history-filter.

<p>This caches are completely clean at load-time of the ECB-library!

<p>Default is nil, because is makes sense not to clear these caches at
start-time because ECB is often deacticated temporally especially in
combination with window-managers like escreen.el. In these situations
the internal state of ECB should be preserved for next activation. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>current-buffer-sync-hook</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Normal hook run at the end of <code>ecb-current-buffer-sync</code>.

<p>See documentation of <code>ecb-current-buffer-sync</code> for conditions when
synchronization takes place and so in turn these hooks are evaluated.

<p>Precondition for such a hook:
Current buffer is the buffer of the current selected edit-window.

<p>Postcondition for such a hook:
Point must stay in the same edit-window as before evaluating the hook.

<p>Important note: If <code>ecb-window-sync</code> is not nil
<code>ecb-current-buffer-sync</code> is running either every time Emacs is
idle or even after every command (see <code>ecb-window-sync-delay</code>). 
So these hooks can be really called very often! Therefore each
function of this hook should/must check in an efficient way at
beginning if its task have to be really performed and then do them
only if really necessary! Otherwise performance of Emacs could slow
down dramatically!

<p>It is strongly recommended that each function added to this hook uses
the macro <code>ecb-do-if-buffer-visible-in-ecb-frame</code> at beginning! 
See <code>ecb-speedbar-current-buffer-sync</code> and
<code>ecb-eshell-current-buffer-sync</code> for examples how to use this
macro! 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>deactivate-hook</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Normal hook run at the end of deactivating (but before the ecb-layout
is cleared!) ECB by running <code>ecb-deactivate</code>. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>debug-mode</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
If not nil ECB displays debug-information in the Messages-buffer. This
is done for some critical situations concerning semantic-tags and
their overlays (or extends for XEmacs). Normally you should not need
this switched on! But if you get errors like "destroyed extend" for
XEmacs or "wrong-argument-type" concerning overlays for GNU Emacs then
you should switch on this option and submitting a bug-report to the
ecb-mailing-list (<code>ecb-submit-problem-report</code>) after getting the
error again! 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>grep-function</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Function used for performing a grep. The popup-menu of the
tree-buffers "Directories", "Sources" and "History" offer to
grep the "current" directory:
<ul>
<li>Directory-buffer: The grep is performed in the current popup-directory
after clicking the right mouse-button onto a node. 
<li>Sources-buffer: The grep is performed in the current selected directory. 
<li>History-buffer: The grep is performed in the directory of the current
popup-source after clicking the right mouse-button onto a node. 
</ul>
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>grep-find-function</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Function used for performing a recursive grep. For more Details see
option `ecb-grep-function' and replace "grep" with "recursive
grep". 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>key-map</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Specifies all keybindings for the ECB minor-mode key-map. The value is
a cons-cell where the car is a common-prefix key for all the
keybindings. The cdr is a list of keybindings each of them a list
again. A key-binding has the following form:

<br><pre>'(&lt;common-prefix-flag&gt; &lt;keysequence&gt; &lt;function&gt;) where
</pre>

<dl>
<dt><code>&lt;common-prefix-flag&gt;</code>
<dd>If t then the common-prefix-key defined as car of the value (see above)
is used.

<br><dt><code>&lt;keysequence&gt;</code>
<dd>If the common prefix-key is used then the final key-binding is the
concatenation of the common-prefix-key (see above) and this
keysequence.

<br><dt><code>&lt;function&gt;:</code>
<dd>The function to bind to the key. This can also be a lambda-expression
. 
</dl>

<p>It is highly recommended to use one of the standard keys C-c or C-x as
first key of your common-prefix-key!

<p>You MUST change this option via customize to take effect!

<p>All keysequences must be inserted as a string and must follow the
syntax needed by <code>read-kbd-macro</code> or <code>kbd</code>. This means you
can insert the key in the same manner <kbd>C-h k</kbd> displays keysequences. 
Here is the summary of the syntax:

<p>Text is divided into "words" separated by whitespace. Except for the words
described below, the characters of each word go directly as characters of the
keysequence. The whitespace that separates words is ignored. Whitespace in the
macro must be written explicitly, as in <kbd>C-c SPC</kbd>.

<ul>
<li>The special words RET, SPC, TAB, DEL, LFD, ESC, and NUL represent
special control characters. The words must be written in uppercase.

<li>A word in angle brackets, e.g., &lt;return&gt;, &lt;down&gt;, &lt;left&gt; or &lt;f1&gt;,
represents a function key. (Note that in the standard configuration,
the function key &lt;return&gt; and the control key RET are synonymous.). 
You can use angle brackets on the words RET, SPC, etc., but they are
not required there.

<li>Keys can be written by their ASCII code, using a backslash followed by
up to six octal digits. This is the only way to represent keys with
codes above .

<li>One or more prefixes M- (meta), C- (control), S- (shift), A- (alt), H-
(hyper), and s- (super) may precede a character or key notation. For
function keys, the prefixes may go inside or outside of the brackets:
C-&lt;down&gt; = &lt;C-down&gt;. The prefixes may be written in any order: M-C-x =
C-M-x. Prefixes are not allowed on multi-key words, e.g., C-abc,
except that the Meta prefix is allowed on a sequence of digits and
optional minus sign: M-123 = M- M-1 M-2 M-3.

<li>The <code>^</code> notation for control characters also works: ^M = C-m. 
</ul>
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>major-modes-show-or-hide</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
List of major-modes which show or hide the ecb-windows. The value is a
cons-cell where the car contains all major-mode-symbols which should
show the special ecb-windows and the cdr contains all
major-mode-symbols which should hide the special ecb-windows. If the
symbol of a major-mode is neither contained in the car-"show-list"
nor in the cdr-"hide-list" then the visibility-state of the
ecb-windows does not change. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>minor-mode-text</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
String to display in the mode line when ECB minor mode is active. 
(When the string is not empty, make sure that it has a leading space.)

<p>Because for ECB it is quite obvious if it is active or not when the
ECB-windows are visible this text is only display in the modeline if
the ECB-windows are hidden. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>mouse-click-destination</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Destination of a mouse-button click. Defines in which edit-window (if
splitted) ECB does the "right" action (opening a source, jumping to
a method/variable etc.) after clicking with the primary mouse-button
(see <code>ecb-primary-secondary-mouse-buttons</code>) onto a node. There
are two possible choices:

<ul>
<li><code>left-top</code>:
Does the "right" action always in the left/topmost edit-window. 
<li><code>last-point</code>:
Does the "right" action always in that edit-window which had the point
before. 
</ul>
This is if the user has clicked either with the primary mouse-button or
has activated a popup-menu in the tree-buffer.

<p>If the edit-area is not splitted this setting doesn't matter.

<p>A click with the secondary mouse-button (see again
<code>ecb-primary-secondary-mouse-buttons</code> does the "right" action
always in another edit-window related to the setting in this option:
If there are two edit-windows then the "other" edit-window is used
and for more than 2 edit-windows the "next" edit-window is used
(whereas the next edit-window of the last edit-window is the first
edit-window).

<p>Note: If the tree-buffers are used with the keyboard instead with the
mouse then this option takes effect too because <kbd>RET</kbd> is
interpreted as primary mouse-button and <kbd>C-RET</kbd> as secondary
mouse-button! 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>run-ediff-in-ecb-frame</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Run ediff-sessions in the same frame as ECB is running. 
If not nil then ECB ensures that ediff runs in the same frame as ECB and ECB
restores exactly the "before-ediff"-window-layout after quiting ediff. If
nil then ediff decides in which frame it will run - depending on the current
window-layout (e.g. if the ecb-windows are currently hidden) this can be the
ecb-frame but this can also be a newly created frame or any other frame. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>stealthy-tasks-delay</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Time Emacs must be idle before ECB runs its stealthy tasks. Currently
ECB performes the following stealthy tasks:

<dl>
<dt>Prescann directories for emptyness
<dd>Prescann directories and display them as empty or not-empty in the
directories-buffer. See the documentation of the option
<code>ecb-prescan-directories-for-emptyness</code> for a description.

<br><dt>File is read only
<dd>Check if sourcefile-items of the directories- or sources-buffer are
read-only or not. See documentation of the option
<code>ecb-sources-perform-read-only-check</code>.

<br><dt>Version-control-state
<dd>Checks the version-control-state of files in directories which are
managed by a VC-backend. See the option <code>ecb-vc-enable-support</code>.

</dl>

<p>Here the interval is defined ECB has to be idle before starting with
these stealthy tasks. It can be a floating-point value in seconds. The
value can also be changed during running ECB. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>tip-of-the-day</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Show tip of the day at start time of ECB. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>tip-of-the-day-file</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
File where tip-of-the-day cursor is stored. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>use-recursive-edit</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Tell ECB to use a recursive edit. If set then it can easily be
deactivated by (keyboard-escape-quit). 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>version-check</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Checks at start-time if the requirements are fulfilled. 
It checks if the required versions of the libraries semantic, eieio and
speedbar are installed and loaded into Emacs.

<p>It is strongly recommended to set this option to not <code>nil</code>! 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>window-sync</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Synchronize the ECB-windows automatically with current edit window. If
<code>always</code> then the synchronization takes place always a buffer
changes in the edit window, if <code>nil</code> then never. If a list of
major-modes then only if the <code>major-mode</code> of the new buffer
belongs NOT to this list.

<p>But in every case the synchronization only takes place if the
current-buffer in the current active edit-window has a relation to
files or directories. Examples for the former one are all
programming-language-modes, <code>Info-mode</code> too, an example for the
latter one is <code>dired-mode</code>. For all major-modes related to
non-file/directory-buffers like <code>help-mode</code>,
<code>customize-mode</code> and others never an autom. synchronization will
be done!

<p>It's recommended to exclude at least <code>Info-mode</code> because it makes
no sense to synchronize the ECB-windows after calling the Info help. 
Per default also <code>dired-mode</code> is excluded but it can also making
sense to synchronize the ECB-directories/sources windows with the
current directory in the dired-buffer.

<p>IMPORTANT NOTE: Every time the synchronization is done the hook
<code>ecb-current-buffer-sync-hook</code> is evaluated. 
</td></tr>
</table>

<p>
<table width="100%">
<tr>
<td align="left"><b>window-sync-delay</b><i>
</i></td>
<td align="right">User Option</td>
</tr>
</table>
<table width="95%" align="center">
<tr><td>
Time Emacs must be idle before the ECB-windows are synchronized with
current edit window. If nil then there is no delay, means
synchronization takes place immediately. A small value of about 0.25
seconds saves CPU resources and you get even though almost the same
effect as if you set no delay. 
</td></tr>
</table>

</body></html>