-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
3135 lines (2290 loc) · 143 KB
/
NEWS
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
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
* Changes for ECB version 2.40.1
** Better compatibility with forthcoming Gnu Emacs 23.2
*** Works out of the box with the Emacs-integrated CEDET-suite
If Emacs >= 23.2 is used then CEDET is already integrated into Emacs and
ECB can be used out of the box without further requirements.
PLEASE NOTE: If ECB detects an author version of CEDET (as available at
`http://cedet.sourceforge.net') then ECB will ALWAYS try to use that one
even if you use Emacs >= 23.2! This is for users who want to use latest
Emacs >= 23.2 but still prefer using the latest author version of CEDET
instead of the Emacs-integrated one.
So if you want to use the Emacs-integrated CEDET-suite you have to ensure
that no author-version of CEDET is in the `load-path'! This means that the
library cedet.el of the author-version MUST NOT be loaded into Emacs (as
described in the file INSTALL of CEDET)!
This is a valid check: (locate-library "semantic-ctxt") must return nil!
Details about the Requirements of ECB are available in the README.
** The special symboldef ECB-window is now stable and ready for usage
*** TODO description what is new
** ECB now uses the partial reparse feature of semantic
The main effect a user will notice is that edit actions which trigger just a
partial reparse will just update the related node in the methods-window and
not the whole methods-window. One of the main advantages is that this
preserves the expand/collapse state of the methods-window.
Editing examples which trigger only a partial reparse:
- editing a function- or methodbody
- changing the name of a variable or function/method
- modifying the return-type of a function/method
- and some other...
In these cases only the related node in the methods-window will change
nothing else, ie. the expand/collapse-states of all other nodes in the
methods-window will not be changed.
** ECB eliminates duplicates in the directories-buffer
There can be duplicates either .... TODO description
** New default-value for `ecb-auto-update-methods-after-save': nil
Switching off this by default makes sense because now ECB uses the
idle-scheduler of semantic (if it is switched on but this is at least very
recommended) and therefore the methods-buffer will be up-to-date most of
the time. Therefore updating it after saving makes not much sense. In
addition this auto update is always a full-fetch for the tags which does
not preserve the expand/collapse-state of the methods-window whereas a
partial reparse does (s.a.).
** The contents of the methods-window are updated even if currently hidden
If at least the current ecb-window-layout contains a methods-window then
the contents will be autom-updated even if the methods-window is currently
invisible (e.g. because the ecb-windows are all hidden or another
ecb-window is currently maximized. But the updates takes only place if the
semantic idle scheduler is active (see instructions in the manuals of ECB
and/or cedet).
The advantage of this new behavior is that now editing changes done with
invisible methods-window will be reflected immediately after showing the
methods-window (e.g. by unhiding the ecb-windows via the command
`ecb-toggle-ecb-windows' - bound to [C-c . l w]).
** New support for Bazaar as version-control system
If Bazaar is supported by VC (means vc-bzr.el is distributed with Emacs)
then ECB supports it out of the box.
** New default value of the option `ecb-history-make-buckets'
This option offers now an additional choice 'directory-with-source-path:
This substituts the best (= deepest) matching source-path of the
directory-window in the directory-bucket with the alias of this matching
source-path (if an alias is set in the option `ecb-source-path'). A new
face is used for this: `ecb-history-bucket-node-dir-soure-path-face'.
** `defecb-window-dedicator-to-ecb-buffer' replaces `defecb-window-dedicator'
This is only relevant for people who program own special ecb-windows.
** Fixed Bugs
*** Command `delete-windows-on' has only deleted one window
Now this command works also with ECB as expected.
*** Fixed a bug which prevents the ecb-windows from being vertically resizeable
This bug occured only when using Gnu Emacs.
*** Fixed a bug concerning horizontal mouse-scrolling of ecb-windows via
modeline-click when the ecb-window was not the selected window.
This bug occured only when using Gnu Emacs.
*** Fixed a bug which prevented `ecb-type-tag-display' from taking effect.
*** Killing a buffer failed when history-window is not visible
Killing a buffer failed in case the history buffer is not visible (e.g.
when currently a layout without a history buffer is used or when another
buffer is maximized and the history buffer thus hidden). This is fixed
now.
*** All compile-modes (e.g. compile, grep etc.) failed in XEmacs
This came from a bug introduced in 2.40 but it is fixed now.
* Changes for ECB version 2.40
** ECB now requires full CEDET-suite being installed (at least version 1.0pre6)
This means the support for the single packages semantic 1.4.X, eieio 0.X
and speedbar 0.X is completely switched off.
As a consequence ECB is no longer runnable as XEmacs-package via the
package-manager of XEmacs. This is because CEDET is not available as
XEmacs-package. Therefore ECB can also not be run as XEmacs-package. If
CEDET will later become a XEmacs-package then probably ECB will come back
as XEmacs-package. But in the meanwhile you have to install ECB "by hand".
In general the current CEDET is much more powerful than older
semantic-versions and ECB uses this power, especially the power of the
semantic-analyzer.
** Completely reworked synchronizing mechanism of the ECB-windows
Now there are separate options for synchronizing:
- The basic ECB-windows (directories, sources, methods, history):
`ecb-basic-buffer-sync', `ecb-basic-buffer-sync-delay' and
`ecb-basic-buffer-sync-hook'.
- The analyser-window (s.a.): `ecb-analyse-buffer-sync',
`ecb-analyse-buffer-sync-delay' and `ecb-analyse-buffer-sync-hook'
- The symboldef-window: `ecb-symboldef-buffer-sync',
`ecb-symboldef-buffer-sync-delay' and `ecb-symboldef-buffer-sync-hook'
- The integrated speedbar (if used): `ecb-speedbar-buffer-sync',
`ecb-speedbar-buffer-sync-delay' and `ecb-speedbar-buffer-sync-hook'
- The integrated eshell-support (if used): `ecb-eshell-buffer-sync',
`ecb-eshell-buffer-sync-delay' and `ecb-eshell-buffer-sync-hook'
But all options for synchronizing not the basic ECB-windows offer an
additional choice 'basic: Then ECB uses the setting of the related option
for the basic ECB-windows! Example: If you set `ecb-eshell-buffer-sync' to
'basic then the value of `ecb-basic-buffer-sync' is used. If you set
`ecb-eshell-buffer-sync-delay' to 'basic then the value of
`ecb-basic-buffer-sync-delay' is used.
This enhancement allows much more control for the synchronizing of certain
windows.
** Better compatibility with CEDET >= 1.0pre6 and semantic >= 2.0pre6
*** The ECB-analyse-window now works very well with current semantic analyzer
There is an own synchronize-option-set for the analyse-window:
`ecb-analyse-buffer-sync', `ecb-analyse-buffer-sync-delay' and
`ecb-analyse-buffer-sync-hook'. See the docstrings. The advantage is, that
now the synchronizing of the analyse-window can be customized separately
from the other ECB-windows. THis is important because for the
analyse-window a higher delay (or even disabled auto.synchronizing)
increases usability a lot. See the info-manual.
*** Fix compatibility about some changes of semantic concerning adopting
external member-functions (as in C++ or eieio).
*** ECB now works very well with semantic-idle-scheduler-mode (s.a.)
** More user-responsible buffer-parsing based on the idle-mechanism of semantic
Force a reparse of the semantic-source if the idle-scheduler is off.
Generally ECB calls semantic to get the list of tags for current
source-file of current edit-window. Per default ECB does never
automatically force a reparse of the source-file - this is only done on
demand by calling `ecb-rebuild-methods-buffer'. So per default the
idle-scheduler of semantic is responsible for reparsing the source-file and
when this is necessary (see `semantic-idle-scheduler-mode' for further
details). This is the most user-resonsible and therefore the recommended
approach.
So it's strongly recommended to enable `semantic-idle-scheduler-mode'
because then reparsing is always done during idle-time of Emacs and is also
interruptable.
But if this idle-scheduler is switched off then ECB offers now two
possibilities (via `ecb-force-reparse-when-semantic-idle-scheduler-off'):
- Not forcing itself a reparse when tags are needed by ECB: then a user
declines knowingly Emacs/semantic-driven parsing of code when he/she
switches off the idle-mode of semantic. This is the default behavior of
ECB and the default value of this option. But this has also the
consequence that the methods-buffer is only filed on demand via
`ecb-rebuild-methods-buffer' (bound to \[C-c . r])!
This means also in consequence that the methods-buffer is not
automatically filled when a source-file is opened but first on demand
after calling the command `ecb-rebuild-methods-buffer'!
- Forcing a reparse when tags are needed: Then ECB forces semantic to parse
the source-file when ECB needs tags to display. For this behavior this
option has to be set to not nil.
The term "forcing a reparse by semantic" is a simplification: ECB uses then
the function `semantic-fetch-tags' which can decide that the cached tags
are up-to-date so no real reparsing is necessary - but it can also run a
full reparse and this reparse is not being done when Emacs is idle but
immediatelly and not interruptable (as with the idle-scheduler of
semantic), which can be quite annoying with big source-files.
** Complete reworked history-buffer
*** The history is able to deal with indirect-buffer entries.
See new option `ecb-history-stick-indirect-buffers-to-basebuffer'.
*** The history can now be bucketized, see new `ecb-history-make-buckets'.
This option allows to define several criterias for building buckets in the
history-buffer all the history entries are sorted in (e.g. by major-mode,
directory, file-extension or regular expressions).
You can change the bucketizing type on the fly via the popup-menu of the
history-window.
The regular expressions bucketizing allows in combination with the
indirect-buffer ability to work with something like "virtual folders"
(well, "virtual folders" light).
For example, there is a large project with a huge number of files, and
there are various tasks in this project. So it could be convenient to
group buffers according to various tasks. It could be fulfiled through
using indirect buffers, for example like this
task_1-aaa.pl
task_1-bbb.c
task_1-ccc.sh
...
task_N-xxx.java
task_N-ccc.sh
This means create indirect buffers with a name-part which can be used for
grouping together buffers with same name-part (here e.g. task_1- ...
task_N-). In the example above you would create two indirect buffers for
the filebuffer ccc.sh, one named task_1-ccc.sh, the other named
task_N-ccc.sh).
Then use the new option `ecb-history-make-buckets' to define regexps for
bucketizing all (indirect) buffers according their task-part in the
buffer-name.
*** There are now new faces for the history entries.
See new options `ecb-history-bucket-node-face',
`ecb-history-dead-buffer-face' and `ecb-history-indirect-buffer-face' and
equaly named new faces.
** Sticky parent-node for all special ECB-windows of type tree-buffer
Only for GNU Emacs: in the header-line of a tree-buffer always the
current-parent node of the first visible node is displayed (if there is a
parent node). This sticky node is exactly in the same manner clickable as
all other nodes. There is a new option `ecb-tree-make-parent-node-sticky'
which enabales/disables this new feature (default is enabled).
** Much saver advice-backbone for all advices needed by ECB
This is not a user-visible change but enhances the stability of ECB by
using now a new advice-backbone which guarantes that all ecb-advices are
enabled rsp. disabled correctly depending on the surrounding context.
Introducing four new macros `defecb-advice-set', `defecb-advice',
`ecb-with-original-adviced-function-set' and `ecb-with-ecb-advice'.
** Changes in the version control support of ECB
*** ECB now also offers version control support only if the current vc-package is
installed which offers support for modern vc-backends like subversion, git
and monotone.
Because vc-package lacks having a version number which can be checked ECB
uses the following check if the right vc-package is installed:
(locate-library "vc-svn") must return not nil.
*** New support for Git and Monotone as version-control systems
If Git rsp. Monotone are supported by VC (means vc-git.el rsp. vc-mtn.el
are distributed with Emacs) then ECB supports now both of them out of the
box.
*** `ecb-vc-supported-backends' offers now also a accurate recompute-state function
This is by offering `ecb-vc-recompute-state' as an alias to the function
`vc-recompute-state' as state-check function for this option.
*** CVS-support is now fully compatible with Emacs 22 and 23
** New options rsp. commands
*** New command `ecb-goto-window-edit-by-smart-selection'
*** New command `ecb-goto-window-ecb-by-smart-selection'
*** New option `ecb-ignore-pop-up-frames'
The new option is for customizing the behavior of ECB concerning
`pop-up-frames'. It allows three value: Always, only when a permanent
compile-window is used and never. This makes ECB fully compatible with the
option `pop-up-frames'.
** Much better compatibility with current Emacs-versions
*** Full compatibility with Gnu Emacs 22
**** `balance-windows' now works with Emacs 22 too
Cause of the completely new implemantation based on `window-tree' ECB
uses a new machanism for enabling balance-windows to work properly with
active ECB, so only the edit-windows are balanced but all ecb-windows
remain on their sizes.
**** view-mode works also when a permanent compile-window is active
This is especially important for displaying help and completions.
**** `master-mode' now works with Emacs 22
**** Grepping from ECB now uses per default `lgrep' rsp. `rgrep'.
***** The option `ecb-grep-function' defaults to `lgrep' if available
If not it tries `igrep' or 'grep'.
***** `ecb-grep-find-function' has been renamed to `ecb-grep-recursive-function'
It defaults to `rgrep' if available. If not it tries `igrep-find' or
`grep-find'. The old value is automatically upgraded to the new option
name.
**** Fixed problems with `ecb-fix-window-size' and active compile-windows
With Emacs >= 22 the bugs of Emacs 21.3.X concerning `window-size-fixed'
are fixed by the Emacs-team so now ECB supports this feature also with
active compile-window.
**** Fixed small lack in the `switch-to-buffer-other-window'-advice.
In Emacs 22 this command ignores the settings in `same-window-*'. Now ECB
adopts this behavior also for its adviced version so the command works
in a smart manner optimized for ECB.
*** Much better compatibility with forthcoming Gnu Emacs 23
**** Removed an annoying behavior which has set the mark hundred of times even
when the user just moves the cursor.
This comes from a change within Emacs 23 and the function `goto-line'
which sets the mark in Emacs 23. This is not necessary when not used as
command but as internal utility. Now ECB uses its own goto-line-function
which does not set the mark --> No unnecessary mark settings with Emacs
23.
**** The adviced `display-buffer' is now fully compatible with Emacs 23
This means simply that you can work with ECB and Emacs 23 as you expect.
Especially for displaying temporary buffers (like completion, help,
compilation etc.) this means: Gnu Emacs 23 has a much smarter
window-manager for displaying temporary buffers (like help-buffers) and
"compile"-buffers. Therefore ECB uses completely the logic of Emacs 23
and does exactly what Emacs 23 would do without activated ECB: This means
mainly that the split-behavior depends on the settings of the options
`split-width-threshold' and `split-height-threshold'.
So if you are wondering why displaying temporary-buffers (like help,
compile, grep, completion etc.) shows different behavior compared to
deactivated ECB, then you probably have to adjust the values of the
options `split-width-threshold' and `split-height-threshold' so they
matches the sizes of the edit-area of ECB (at least nearly).
**** Fixing some incompatibilities with Emacs 23 concerning using temp. buffers
The fit-window-to-buffer version of Emacs 23 can destroy windows and is
therefore not useable within ECB - now ECB has its own - stolen and
adapted from Emacs 22.
In addition to this the internal help-window-manager of Emacs 23 (a.o.
responsible for displaying *Help*-buffers) chooses sometimes dedicated
windows (which is a problem because ECB uses dedicated windows for its
own special ECB-windows) whereas Emacs 22 doesn't do this. Now ECB works
smoothly with Emacs 23 help-system. Same for view-mode.
**** ediff-support of ECB is now also fully compatible with Emacs 23
Emacs 23 uses dedicated windows: Now ECB can deal with frame-layouts where
some windows are neither an ecb-, edit- nor a compile-window. Therefore
now also single-frame mode (see `ediff-windows-setup-function') of ediff
wirks smoothly with ECB.
**** All this together makes the new layout-engine of ECB much more robust so ECB
works smoothly with forthcoming Emacs 23.
*** Better compatibility with XEmacs 21.4 and XEmacs 21.5
Compatibility has been increased but is still not perfect. There is a need
for much more tests with XEmacs. This can not been done by the
ECB-maintainer because it costs too much effort. Any help from
XEmacs-gurus using ECB for their daily work is very appreciated.
** ECB is able to work with indirect buffers if the base-buffer is filebased
Now you can work with indirect-buffers as well as with normal file-buffers,
i.e. indirect buffers are shown in the history´, their contents are
displayed in the methods-buffer, the ECB-analyse-buffer works with them,
autom. synchronizing the ECB-tree-buffers works for them etc...
** Deprecated, disabled and deactivated features:
*** The commands `ecb-download-ecb' and `ecb-download-semantic' are deactivated
These features are not supported anymore. It costs two much effort to keep
the needed links and mechanism to the sourceforge-download-area up to date.
Please download the needed release-archives and extract and install as
described in the shipped README rsp. INSTALL-files.
** Fixed Bugs
*** Fixed a bug which displayed empty tag-names in the methods-buffer when font-lock
is not loaded.
*** Fixed a bug in the ping-functionality
Now `ecb-ping-options' has a new default value which should operate well
on most os.
*** Fixed a bug which prevented `ecb-rebuild-methods-buffer' from working
correctly
*** Fixed a bug in the internals of the methods-filter which prevented
all commands `ecb-methods-filter-*' from working correctly.
*** Fixed context-menu for VC-operations in the sources- and history-window
Now all vc-commands are called interactively by ECB.
*** Fixed a bug with the ECB-navigation feature (C-c . p and C-c . n)
Now the commands `ecb-nav-goto-next' and `ecb-nav-goto-previous' work
saver and also for indirect buffers.
*** Fixed small bugs with synchronizing current tag with highlighted tag
in the methods buffer. This was when the buffer was reparsed with
`semantic-idle-scheduler-mode' or after saving the buffer.
*** Fixed a bug in `ecb-create-new-layout' which has displayed wrong modelines
in the layout-creation frame.
*** Fixed a bug in `ecb-submit-problem-report' which prevented it from working
* Changes for ECB version 2.32
** New backbone-add-on of ECB for getting the definition of the symbol at point
It allows to display in a new special ECB-window the semantic (do not
confuse this term with the semantic-library!) context of the definition of
the current symbol under point. Per default ECB tries to find this context
via semanticdb (part of cedet) and etags (shipped with (X)Emacs) but in
general this is completely customizable; see the options of the new
options-group "ecb-symboldef".
Either use the layout "left-symboldef" (e.g. via [C-c . l c]) or create a
new ecb-layout via the command `ecb-create-new-layout' and add a buffer of
type "other" and name "symboldef" into this new layout.
This add-on interactior can be seen as a "backbone" infrastructure, because
it is/should be highly customizable how to get the definition of the symbol
at point (e.g. via semanticdb or etags or whatever).
Thanks to Hauke Wintjen <[email protected]> for having the idea
and writing the first implementation
This add-on ECB-window of ECB is currently in beta or gamma stage but works
already quite well. So please try it out and send feedback to the
ECB-mailing-list. Every suggestion is highly appretiated!
** New native ECB-window (tree-buffer) for the semantic-analyzer
There is a new tree-buffer ECB-analyse which displays the tags and
informations of the semanic-analyzer in a smooth way. There are already new
prebuild layouts "left-analyse" and "leftright-analyse" which contain this
new tree-buffer ECB-window. But of course it can be added to own build
layouts - either via the command `ecb-create-new-layout' (add a buffer of
type "other" and name "analyse" into the new layout) or via a
elisp-programmed new layout.
** New smart-arrow-navigation in a tree-buffer with up- and down-arrow
Point jumps to the first character of the previous (up) rsp. next node
(down). "First" character means either the first character of the
expand-symbol (in case `ecb-tree-expand-symbol-before' is not nil) or of
the displayed node-name. Or with other words: The first non-indentation and
non-guide-line (see `ecb-tree-buffer-style') character of a node.
Left- and right-arrow were already smart - see the existing option
`ecb-tree-navigation-by-arrow'.
** Better handling of maximized ecb-windows
*** Smarter handling of node-selections in maximized tree-windows
Now the default behavior of ECB is:
Maximized directories-window: When selecting a directory then first
automatically the maximized directories-window will be "minimized" (i.e.
all ecb-windows of current layout are displayed) if the current layout
contains a sources-buffer and no sources are shown in the
directories-window. So the source-files can be displayed in the
sources-window.
Maximized sources- or history-window: When selecting a source-file in one of
these buffers then first automatically the maximized window will be
"minimized" (i.e. all ecb-windows of current layout are displayed) if the
current layout contains a methods-buffer. So the tag-contents of the
selected source-file can be displayed in the methods-window.
For a even smarter behavior ECB introduces a new option
`ecb-maximize-next-after-maximized-select' which automatically maximizes
the next logical tree-window after a node selection. The definition of
"next logical is": Directories --> sources, sources/history --> methods.
See the docstring of this new option for more detailled informations.
Thanks for suggestion to Michael Reiher.
*** Easier maximizing and "minimizing"
ECB supports the default modeline-mechanisms for deleting other windows.
GNU Emacs binds `mouse-2' in its modeline to `delete-other-window'. XEmacs
binds a popup-menu with some window commands to `button-3' in its
modeline.
ECB combines the best of both worlds by supporting both of these
mechanisms for both Xemacs and Emacs: ECB binds a toggle-command to
`mouse-2' in the modeline of each tree-buffer which maximizes the current
tree-window if all ECB-windows are visible and displays all ECB-windows if
current tree-window is maximized. In addition ECB binds a popup-menu to
`mouse-3' which offers exactly 2 commands: Maximizing current tree-window
and displaying all ECB-windows.
** Renamed options or options with new type
The following options have been renamed:
ecb-truncate-lines --> ecb-tree-truncate-lines
The following options have now a new type:
ecb-tree-RET-selects-edit-window
ecb-tree-image-icons-directories
ECB automatically upgrades the old values to the new options!
** Better assistance fixing errors related to semantic-load problems
Often users report errors somehow related to problems running ECB with the
right semantic-version. There are different reasons for this:
- People do not install the cedet-suite as described in the INSTALL-file of
cedet.
- People byte-compile ECB with another semantic (also eieio and speedbar)
version than loaded into Emacs.
All of them prevent ECB from working correctly.
Now ECB detects the error at startup-time and assists the user in finding
the reason of the problem and how to fix it.
** More robust downloading of new ECB from within Emacs
Now `ecb-download-ecb' should work also with native Windows-XEmacs and also
when ECB is installed in a directory which name contains spaces. If there
are still problems in running this command please check the new options
`ecb-wget-setup', `ecb-gzip-setup' and `ecb-tar-setup'.
** Support for (X)Emacs < 21 has been officialy removed.
ECB requires now (X)Emacs >= 21. ECB stops activation with an appropriate
error-message when (X)Emacs < 21 is detected.
** Full documentation of the library tree-buffer.el
The ECB-info-manual contains a new section "tree-buffer" in the chapter
"Entry points for elisp-programers". This describes in detail how to
program with the library tree-buffer.el which is shipped with ECB.
** Fixed Bugs
*** Version-controlled (VC) and not-VC history-entries are now sorted
correctly according the setting in `ecb-history-sort-method'.
*** Handles not anymore existing files in the stealthy tasks.
If a stealthy task detects that a displayed file does not exist anymore it
removes this source-file from the tree-displays.
*** Fixed a bug when `ecb-process-non-semantic-files' is set to nil.
This bug only occurs with XEmacs. As a side effect of this fix now the
methods-buffer is correctly cleared out when loading a
non-semantic-sourcefile (i.e. not parsable by semantic) and processing of
non-semantic-files is switched off (`ecb-process-non-semantic-files' is
set to nil) or the sourcefile is not parsable by a parser like imenu or
etags/ctags.
*** Fixed a bug in displaying semantic-tags which have plain-string members
E.g. parsing `defstruct' has failed in previous ECB-version cause of this
bug.
*** Fixed a bug when Emacs is started with -q so Emacs could not determine the
`custom-file'. This case is correctly handled now.
* Changes for ECB version 2.31
** Fixed bugs
*** Fixed a recently introduced bug with XEmacs and an active isearch.
This bug occured when a user has clicked onto a node in a tree-buffer
during an active isearch and it had as result completely out-of-order
tree-buffers. This buf is now fixed and should never occur.
*** Fixed a bug concerning accessing root-drives in native window-XEmacs
Fixes an annoying behavior of the native windows-version of XEmacs: When a
path contains only a drive-letter and a : (e.g. C:) then
`expand-file-name' (and a lot of other file-operations) do not interpret
this path as root of that drive. So ECB adds temporary a trailing
`directory-sep-char' and calls file-operations like `expand-file-name'
with this new path because then `expand-file-name' treats this as root-dir
of that drive. For all (X)Emacs-version besides the native-windows-XEmacs
this fix is not needed and takes no effect.
*** Better recognizing of remote CVS-root-repositories for the VC-support
** Enhancement for the VC-support
*** New option `ecb-vc-xemacs-exclude-remote-cvs-repository'
This excludes directories with a remote cvs-repository from VC-check. This
option takes only effect for XEmacs and is needed cause of the outdated
VC-package of XEmacs which offers no heuristic state-checking and also no
option `vc-cvs-stay-local'. So this option takes only effect if
`vc-cvs-stay-local' is not avaiable. In this case ECB treats directories
which are managed by CVS but have a remote repository as if the directory
would not being managed by CVS (so the files are not checked for their
VC-state). This is done to avoid blocking XEmacs cause of running full
cvs-commands (e.g. ``cvs status'') for a bunch of files over the net.
*** Added beta-support for Clearcase
There is already an identify-backend-function `ecb-vc-dir-managed-by-CC'
and a check-state-function `ecb-vc-check-CC-state' and an advice for
`clearcase-sync-from-disk' which enable automatic state-update after
checkin/out. These code seems to work quite well but nevertheless there
are some problems so this Clearcase-support is not added per default to
`ecb-vc-supported-backends'.
So if you want Clearcase-support you have to customize the option
`ecb-vc-supported-backends' and add these functions mentioned above (the
advice of `clearcase-sync-from-disk' takes only effect if the function
`ecb-vc-dir-managed-by-CC' can be found in `ecb-vc-supported-backends' and
ECB is active!). But use it at your own risk. Of course the best would be
if a lot of people would test this Clearcase-support and fix the
encountered problems ;-). Thanks to David Ostrovsky for providing a first
implementation!
* Changes for ECB version 2.30.1
** Enhancement to the automatic option-upgrading mechanism
ECB now automatically makes a backup-file of that file which will be
modified by storing the upgraded rsp. renamed ECB-options. This backup file
gets a unique name by adding a suffix ".before_ecb_<version>" to the name
of the modified file. If such a file already exists ECB adds a unique number
to the end of the filename to make the filename unique.
This is a safety mechanism if something fails during storing the upgraded
options, so you never lose the contents of your customization-file!
** Enhancement to the VC-support
*** Better recomputing of the VC-state of a file when state changed outside
With the new check-state-function `ecb-vc-state' the heuristic state is
always computed right which is especially useful if the state for a file
has been changed outside Emacs (e.g. by checking in from command line or
Windows Explorer). This function is now added to the default-value of
`ecb-vc-supported-backends' for GNU Emacs.
*** Added out-of-the-box support for VC-system Subversion
For this the latest version of the VC-package incl. the library vc-syn.el
is needed. Latest CVS Emacs contains this VC-version. The new function
`ecb-vc-dir-managed-by-SVN' is now added to the default-value of
`ecb-vc-supported-backends'. Thanks for first implementation to Ekkehard
Görlach <[email protected]>.
** Fixed bugs
*** Fixed errors occured at load-time of ECB 2.30
* Changes for ECB version 2.30
** Enhancements to the file-browser
*** Much better performance of the file-browser display because all
time-consuming tasks (like the check if the displayed directories are
empty of not) are now performed "stealthy" - means when Emacs is idle.
Each stealthy task is interruptable by the user just by hitting any key or
clicking the mouse so Emacs/ECB will not be blocked by such tasks; next
time Emacs is idle again the interrupted task automatically proceeds from
the state it has been interrupted. There is a new macro `defecb-stealthy'
which can be used by a user to program own stealthy tasks.
Currently ECB performs three stealthy tasks:
Prescann directories for emptyness: Prescann directories and display
them as empty or not-empty in the directories-buffer. See the
documentation of the option `ecb-prescan-directories-for-emptyness' for
a description.
File is read only: Check if sourcefile-items of the directories- or
sources-buffer are read-only or not. See documentation of the option
`ecb-sources-perform-read-only-check'.
Version-control-state: Checks the version-control-state of files in
directories which are managed by a VC-backend. See the option
`ecb-vc-enable-support'.
There is also a new option `ecb-stealthy-tasks-delay'.
There are three options which allow excluding certain directories from
these stealthy tasks: `ecb-prescan-directories-exclude-regexps',
`ecb-read-only-check-exclude-regexps' and last but not least
`ecb-vc-directory-exclude-regexps'.
*** ECB is now capable of handling remote paths.
"Remote" means file- or directory-paths in the sense of TRAMP, ANGE-FTP or
EFS. Such paths can now being added to the option `ecb-source-path' with
no limitation compared to "local" paths. Just work with remote-paths in
the same manner as with local paths. See also the additional choices of
the options `ecb-prescan-directories-for-emptyness',
`ecb-sources-perform-read-only-check' and `ecb-vc-enable-support' (new).
This new support is tested with the combinations GNU Emacs+TRAMP and
XEmacs+EFS but it should (hopefully) also work with all other
combinations. Thanks a lot to Tomas Orti for beta-testing!
*** ECB displays the Version-control-state of a file in the tree-buffers.
There are four new options `ecb-vc-enable-support',
`ecb-vc-supported-backends', `ecb-vc-directory-exclude-regexps' and
`ecb-vc-state-mapping' which define if and how ECB should check the state
of a sourcefile in a directory managed by a version-control system. By
default ECB supports the same VC-backends as the builtin VC-support of
Emacs: CVS, RCS and SCCS. But the option `ecb-vc-supported-backends'
allows to add support for arbitrary VC-backends (e.g. Clearcase). New
image-icons are also included for a cute display of the VC-state in the
directories, sources and history-buffer. Thanks to Markus Gritsch
<[email protected]> for contributing the icons.
It's recommended to read the section "Version-control support" in the
chapter "Tips and Trick" of the ECB-info-manual!
*** New hook which runs directly after the selected directory has changed.
See documentation of `ecb-after-directory-change-hook'.
** The popup-menu of the methods-browser allows precisely expanding of the
current node. This means you can precisely expand a certain node to an
exact indentation level relative to the node. This means all subnodes <=
this level will be expanded (full recursive expanding is therefore of
course also possible) and all subnodes indented deeper than this level will
be collapsed - this is very different from using the expand/collapse symbol
of a node. For forther details and examples the the manual and the section
"Expanding" and here the subsection "Explicit expanding of the current node
to a certain level".
** Automatically upgraded ecb-option-settings are now not saved by default.
This means that ECB has now the new policy "Never touching the
customization-files of a user without asking". The result is a completely
redesigned upgraded-options-buffer: Now at the bottom of this buffer
(displayed by `ecb-display-upgraded-options') two clickable buttons [Save]
and [Cancel] are displayed which give the user the choice between saving
the upgraded options for future Emacs-sessions ot just to cancel this
buffer. In the latter case ECB has also upgraded the not compatible or
renamed options (as listed in the displayed upgraded-options-buffer) but
they will be not saved, i.e. no customization-file is touched and the
changed and upgraded values will be lost after quiting Emacs.
** With XEmacs ECB temporary sets `progress-feedback-use-echo-area' to t
This is necessary because otherwise the progress-display with native
widgets modifies the window-sizes of ECB and does not exactly restore the
window-sizes as before that progress-display. Deactivating ECB
automatically restores the old value of this option.
** Fixed bugs
*** Fixed resizing of the ecb-windows after opening a file
Sometimes (X)Emacs (the behavior has only been reported for XEmacs)
resizes the ecb-windows after opening a file by clicking onto a sourcefile
or calling `find-file' (or similar functions). This is not a bug of ECB
but nevertheless it is annoying for the ECB-users. Therefore ECB has now a
workaround which prevents the ecb-windows from resizing. The work around
is done via two simple advices of `find-file' and `find-file-other-window'.
*** Fixed a bug in the upgrading feature (command `ecb-download-ecb') which has
occured when the user has set a different LOKALE (e.g. "de_DE@euro").
*** Fixed a bug in restoring sizes of the ecb-windows.
Now a check will be performed if there are ecb-windows visible. If not
nothing will be done (versions < 2.30 have failed in such a case).
This bug has prevented ediff from working together with ECB when a
compile-window was visible and the user has stored window-sizes for the
current layout.
* Changes for ECB version 2.27
** The option `ecb-auto-expand-tag-tree-collapse-other' now has three possible
choices. You can decide between auto-collapsing only when point stays onto
a tag in the edit-window or even when point doesn't stay onto a tag (which
then results in a full collapsed methods-buffer). ECB autom. upgrades the
old setting of this option to the new type. Thanks to Javier Oviedo
<[email protected]> for the suggestion.
** Not accessible directories are displayed in a different face in the
directory-browser. See the new option `ecb-directory-not-accessible-face'
and the new face with same name.
** Enhancements to the permanent compile-window
*** Enlarging the compile-window does not destroy some ecb-windows
With previous versions of ECB enlarging the permanent compile-window has
often destroyed some ecb-windows if the compile-window has occupied a
large portion of the frame-height (e.g. half of the frame). Beginning with
ECB 2.27 such a ecb-window-damage is either prevented or - if it still
occurs (can not be prevented in all situations) - ECB now has a
"self-healing"-mechanism which immediatelly repairs the layout via
idle-checks if the current window-layout is correct for the current
`ecb-layout-name'. Conclusion: Enlarging or shrinking the compile-window
should never damage the ecb-windows! Thanks to Javier Oviedo
<[email protected]> for a great problem-report!
Caution: If bytecompiled user-defined layouts are used (ie. the file,
which contains the user-defined layouts is byte-compiled) then you MUST
recompile this file with ECB 2.27 active!
*** Now `ecb-store-window-sizes' and `ecb-restore-window-sizes' also work when
called during a permanent compile-window is visible and also when these
commands are called with another compile-window state than the other (e.g.
when the window-sizes are stored without a compile-window and restored
with a compile-window).
*** Now ECB ensures that the permanent compile-window has always its specified
size when shrinked either by Emacs/ECB or by the command
`ecb-toggle-compile-window-height'.
*** Now ECB ensures that all ecb-windows have always either their default or
stored size size after the compile-window has been shrinked either by
Emacs/ECB or by the command `ecb-toggle-compile-window-height'.
*** ECB takes into account the new Emacs-option `grep-window-height' when it
compute the max. allowed size of its permanent compile-window. More
generally spoken: It takes into account all options with name
*-window-height defined for modes which are defined by the macro
`define-compilation-mode'. This mechanism is available in the forthcoming
Emacs 21.4 (and of course with current CVS-Emacs 21).
** Fixed Bugs
*** Added a workaround for a bug in the custom-library of current release 21.3
of GNU Emacs which causes under certain circumstances the autom.
option-upgrading-feature of ECB to fail. Same for the command
`ecb-store-window-sizes'. Thanks for reporting this annoying bug and great
help to Christoph Ludwig <[email protected]>
* Changes for ECB version 2.26
** Improved the performance of the directories-buffer-display
Reduced the need of completely rebuilding the whole directories-tree-buffer
when just switching between buffers and the related directories are already
expanded. This can dramatically increase the speed of the tree-buffer
display when displaying the sources-files in the directories-buffer (see
`ecb-show-sources-in-directories-buffer'). Thanks to Rob Walker
<[email protected]> for tracking down the performance bottleneck and
supplying a first patch.
** Per default all mouse-actions in the special ECB-buffers are now triggered
first after releasing the mouse-button and not when pressed as with
previous ECB-versions. This is the standard behavior of Emacs and of most
applications. But with the new option `ecb-tree-mouse-action-trigger' a
user can switch back to the old behavior.
As a side effect now the ECB-tree-buffers can be used during an active
isearch - at least with GNU Emacs. Thanks to Markus Gritsch
<[email protected]> for pointing to this problem.
** ECB sets autom. temp-buffer-resize-mode rsp. temp-buffer-shrink-to-fit when
needed. This modes are needed when a permanent compile-window is used
because otherwise the correct sizing of the compile-window according to the
settings in ecb-compile-window-temporally-enlarge and
ecb-enlarged-compilation-window-max-height is not possible. After disabling
the permanent compile-window or when deactivating ECB the original settings
of these modes are restored!
** Some regexp-options has been changed to regexp-list-options:
`ecb-excluded-directories-regexp' --> `ecb-excluded-directories-regexps'
`ecb-source-file-regexps' --> `ecb-source-file-regexps'
`ecb-exclude-parents-regexp' --> `ecb-exclude-parents-regexps'
All these options now accept (and require) a list of regexps instead of
exactly one big regexp. This allows easier regexp-definition and follows
now the way Emacs goes with other regexp-options like `same-window-regexps'
or `special-display-regexps' which are also lists of regexps.
ECB autom. upgrades your old settings to the new option-types rsp. also
-names (if the option has been renamed).
** New option `ecb-history-exclude-file-regexps' for excluding certain files
from being displayed in the history-buffer of ECB. Currently the filenames
TAGS and semantic.cache are excluded per default. Thanks to Javier Oviedo
<[email protected]> for the suggestion.
** ECB now displays read-only sourcefiles in a different face.
For this a new option and a new face are offered both named
`ecb-source-read-only-face' (default: italic) which is used to display
source-files in the sources-tree-buffer (or in the directories-tree-buffer
if `ecb-show-sources-in-directories-buffer' is not nil) if the file is
read-only.
** Fixed bugs
*** Fixed merging faces with XEmacs.
Now options like `ecb-type-tag-display' (merges own ECB-faces to already
by semantic faced tags) work also correct with XEmacs. ECB-versions prior
to 2.26 has not merged the ECB-faces to the already applied faces of a
text but instead replaced the applied faces with the ECB ones. Now all
faces are merged.
*** Now the command `ecb-expand-methods-nodes' and all the expand-* menu-entries
in the popup-menu of the methods-buffer work for non-semantic-buffers too.
*** Fixed a bug concerning `ecb-auto-expand-tag-tree-collapse-other'.
Thanks to Javier Oviedo <[email protected]> for pointing to the problem.
*** Handles not existing source-paths in `ecb-source-path' correct.
These paths are now ignored with a warning.
* Changes for ECB version 2.25
** More flexible sorting of the Sources- and the History-buffer
*** `ecb-sort-history-items' has been renamed to `ecb-history-sort-method'
and offers now the same choices as the already existing option
`ecb-sources-sort-method'.
*** Two new options `ecb-sources-sort-ignore-case' and
`ecb-history-sort-ignore-case' which allow to ignore case when sorting the
Sources- and/or the History-buffer. Thanks for suggestion to Markus
Gritsch <[email protected]>. Per default case is now ignored.
** New icons for parent-display in the Methods-buffer.
Thanks to Markus Gritsch <[email protected]> for contributing the
icon-images.
** Fixed Bugs
*** Fixed an annoying bug which results sometimes in an error "stack-overflow
error in equal" when using `senator-try-expand-semantic' which is called
when you use hippie-expand for example. Maybe the bug occured also in
other situation but now this bug has been extirpated!
*** Fixed a bug in the mechanism which prescanes directories for emptyness.
Now a directory is checked if it is accessible before it is prescanned -
otherwise the prescan could fail with an error.
*** Fixed a bug in the autom. option-upgrading-mechanism.
Thanks to Javier Oviedo <[email protected]> for pointing to the
underlying problem.
* Changes for ECB version 2.24
** Enhancements for the Methods-buffer
*** Enhancements to the icon-display in the Methods-buffer
**** New icon-images for enumerations and abstract/virtual tags (interfaces are
currently displayed with the icon for abstract classes - at least til
someone provides special icons ;-)
**** Some slightly fixes in the other icons - e.g. a better display with a
not-white background
**** Static and abstract tags are no longer underlined rsp. italic when icons are
displayed because this is somehow "tautological" when a special static
rsp. abstract icon is already displayed.
*** New option for switching on/off distinction of function-prototypes from the
real function-definitions: `ecb-methods-separate-prototypes'. This is
useful for C++ and C because these languages distinct between a
method-prototype (rsp. function-prototype for C) and the method (rsp.
function for C) itself. If this option is not nil (default) then ECB
separates the prototypes from the real function/methods in the
Methods-buffer.
*** New "current-type"-filter for the Methods-buffer
In languages which have types (like Java or C++) this filter displays only
the current type and all its members \(e.g. attributes and methods). The
current-type is either the type of the current tag in the source-buffer or
the type of the current node in the methods-buffer. If ECB can not
identify the current type in the source-buffer or in the methods-window
then nothing will be done.
** Now directories are prescanned for emptyness so they are displayed as empty
in the directories-buffer even without user-interaction (i.e. in previous
ECB-versions the emptyness of a directory has been first checked when the
user has clicked onto a directory). ECB optimizes this check as best as
possible but if a directory contains a lot of subdirectories which contain
in turn a lot of entries, then expanding such a directory or selecting it