Build failure (Wrong number of arguments)

View: New views
20 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 | Next >

Build failure (Wrong number of arguments)

by YAMAMOTO.Taku :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I am currently having difficulties that building ecb(CVS-HEAD) with CEDET(CVS-HEAD).

Emacs: Meadow3
Development environment : Cygwin-1.5.25

I have already modified ecb.el defcustom ecb-version-check nil.

Errors as follows..

--
taku@sapphire ~/cvs_work/ecb
$ make CEDET=../cedet/
Byte-compiling ECB with LOADPATH= ...
emacs -batch -no-site-file -l ecb-compile-script --eval '(ecb-byte-compile t)'
Loading subst-ksc...
Loading subst-gb2312...
Loading subst-big5...
Loading subst-jis...
Loading d:/home/taku/cvs_work/cedet/common/cedet.el (source)...
Setting up CEDET packages...
Setting up CEDET packages...done
ECB 2.33 uses CEDET 1.0pre7 (contains semantic 2.0pre7, eieio 1.2, speedbar 1.0.3).
Wrong number of arguments: #[(form val type) "!?2?      !\"?
        \"?>??  !?
?0??!
        DC?

#E))?
     ?" [type val res temp form cl-const-expr-p cl-make-type-test cl-const-expr-val cl-expr-contains (nil 1) ...] 6], 2
make: *** [ecb] Error 255

taku@sapphire ~/cvs_work/ecb

---

Thanks in advance..Taku

------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: Build failure (Wrong number of arguments)

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

AW: [ECB-list] Build failure (Wrong number of arguments)

Hello,

for me latest CVS-ECB builds fine with latest CEDET-CVS...

Are you sure you have prebuild CEDET itself correctly as described in the INSTALL- and USING-CEDET-FROM-CVS files?!

BTW: What is Meadow3 - do you have a version number of your (X)Emacs? But for me ECB builds fine on Emacs 22.3, Emacs 23.0.02 and 23.0.93 and XEmacs 21.4.22 and XEmacs 21.5beta...

If you first build CEDET successfully and then ECB there should be no problems when using the shipped Makefiles....
Maybe you should report such building problems also to the CEDET-list because there have been reported other building-problems some days ago...

Ciao,
Klaus


-----Ursprüngliche Nachricht-----
Von: YAMAMOTO.Taku [wavekidsjp@...]
Gesendet: Mi 13.05.2009 02:39
An: ecb-list@...
Betreff: [ECB-list] Build failure (Wrong number of arguments)

Hello,

I am currently having difficulties that building ecb(CVS-HEAD) with CEDET(CVS-HEAD).

Emacs: Meadow3
Development environment : Cygwin-1.5.25

I have already modified ecb.el defcustom ecb-version-check nil.

Errors as follows..

--
taku@sapphire ~/cvs_work/ecb
$ make CEDET=../cedet/
Byte-compiling ECB with LOADPATH= ...
emacs -batch -no-site-file -l ecb-compile-script --eval '(ecb-byte-compile t)'
Loading subst-ksc...
Loading subst-gb2312...
Loading subst-big5...
Loading subst-jis...
Loading d:/home/taku/cvs_work/cedet/common/cedet.el (source)...
Setting up CEDET packages...
Setting up CEDET packages...done
ECB 2.33 uses CEDET 1.0pre7 (contains semantic 2.0pre7, eieio 1.2, speedbar 1.0.3).
Wrong number of arguments: #[(form val type) "!?2?      !\"?
        \"?>??  !?
?0??!
        DC?

#E))?
     ?" [type val res temp form cl-const-expr-p cl-make-type-test cl-const-expr-val cl-expr-contains (nil 1) ...] 6], 2
make: *** [ecb] Error 255

taku@sapphire ~/cvs_work/ecb

---

Thanks in advance..Taku

------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list


------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

ECB 2.40 released!

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

ECB 2.40 released!

Hi,

after a almost 4 years "tea-break" ;-) since the last release there comes a new ECB: 2.40 is released.

Go to http://ecb.sourceforge.net and get it.

What's new in the new release:
------------------------------

* 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


How to get it:
--------------

Go to the homepage at http://ecb.sourceforge.net and download it from
there.



General description of ECB:
---------------------------

ECB stands for "Emacs Code Browser".  While Emacs already has good
*editing* support for many modes, its *browsing* support is somewhat
lacking. That's where ECB comes in: it displays a number of informational
windows that allow for easy source code navigation and overview.

The informational windows can contain:

  - A directory tree,
  - a list of source files in the current directory (with full support and
     display of the VC-state),
  - a list of functions/classes/methods/... in the current file, (ECB uses the
    Semantic Bovinator, or Imenu, or etags, for getting this list so all
    languages supported by any of these tools are automatically supported by
    ECB too)
  - a history of recently visited files (groupable by several criterias),
  - the Speedbar and
  - output from compilation (the "*compilation*" window) and other modes like
    help, grep etc. or whatever a user defines to be displayed in this window.

As an added bonus, ECB makes sure to keep these informational windows visible,
even when you use C-x 1 and similar commands.

It goes without saying that you can configure the layout, ie which
informational windows should be displayed where. ECB comes with a number of
ready-made window layouts to choose from.

Here is an ascii-screenshot of what ECB offers you:

------------------------------------------------------------------
|              |                                                 |
| Directories  |                                                 |
|              |                                                 |
|--------------|                                                 |
|              |                                                 |
| Sources      |                                                 |
|              |                                                 |
|--------------|                   Edit-area                     |
|              |    (can be splitted in several edit-windows)    |
| Methods/Vars |                                                 |
|              |                                                 |
|--------------|                                                 |
|              |                                                 |
| History      |                                                 |
|              |                                                 |
------------------------------------------------------------------
|                                                                |
|                 Compilation-window (optional)                  |
|                                                                |
------------------------------------------------------------------

For more details go to http://ecb.sourceforge.net/


Enjoy,
Klaus


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by leon-9 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 2009-05-16 18:11 +0100, klaus.berndl@... wrote:
> after a almost 4 years "tea-break" ;-) since the last release there
> comes a new ECB: 2.40 is released.

This is excellent news. BTW, there's some discussion on including cedet
and ecb in Emacs 23.2. One of the blockers is ecb relies heavily on the
advice facility. Is this still the case?

Many thanks for the new release ;)

--
.:  Leo  :.  [ sdl.web AT gmail.com ]  .: I use Emacs :.

               www.git-scm.com
    git - the one true version control system


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

AW: [ECB-list] ECB 2.40 released!

On 2009-05-16 18:11 +0100, klaus.berndl@... wrote:
>> after a almost 4 years "tea-break" ;-) since the last release there
>> comes a new ECB: 2.40 is released.

>This is excellent news. BTW, there's some discussion on including cedet
>and ecb in Emacs 23.2. One of the blockers is ecb relies heavily on the
>advice facility. Is this still the case?

Yes, indeed - and IMHO building an IDE like ECB is quite impossible
without heavily advicing Emacs because Emacs is not designed to display certain content
in certain premanent windows within the same frame - the underlying window-management of Emacs
is designed to create smartly new windows if necessary...

I know that Emacs 23 has already a new feature which can prevent windows from
being deleted by delete-other-window (C-x 1)...this is good and this can
make some ECB-advices obsolete or at least much more simple...
But this is not enough to throw away the advices of ECB......

But ECB has a full stable advice-backbone which allows full control of
all its advices and when they are active and when not.
This comes in by introducing four new macros `defecb-advice-set',
`defecb-advice', `ecb-with-original-adviced-function-set' and
`ecb-with-ecb-advice'...
With this  backbone ECB is stable and save concerning advicing a lot
of functions.

Of course it would be possible to enhance Emacs with new features so
most of the advices of ECB would be obsolete but IMHO this costs a lot
of thinking power and needs new and good and proven design decisions for
Emacs...unfortunately currently i could not say what *exactly* would be
necessary for Emacs to support ECB throwing away its advices.......... ;-(
As already said: needs intensive thinking about this topics....

I have not the time to do this because i'm to busy... BTW: I have only build up this
new release because new Emacs 23 and even more current CEDET (which is really
great work by Eric and the other cedet-guys!) are worth
to have at least a stable and powerful and smoothly working ECB (and previous
version of ECB had some drawbacks concerning this)...but i have no time
to invest much more (which would be necessary to integrate ECB in Emacs without
its advices)...
To be honest: It would great if ECB could be integrated in Emacs and if Emacs would
offer all stuff necessary to throw away the ECB-advices but because for me its
too expensive so i will *maintain* ECB as it is but nothing else...

But: If there is someone out which is an elisp-guru and has plenty of time
and is willing to overtake ECB for the sake of integration in Emacs
i would appreciate this a lot and i would support this guy(s) as best
as possible...

>Many thanks for the new release ;)

Thanks back ;-)

Klaus


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

ECB 2.40 released!

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

ECB 2.40 released!

Hi,

after an almost 4 years "tea-break" ;-) since the last release here comes a new ECB: 2.40 is released.

Go to http://ecb.sourceforge.net and get it.

What's new in the new release:
------------------------------

* 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


How to get it:
--------------

Go to the homepage at http://ecb.sourceforge.net and download it from
there.



General description of ECB:
---------------------------

ECB stands for "Emacs Code Browser".  While Emacs already has good
*editing* support for many modes, its *browsing* support is somewhat
lacking. That's where ECB comes in: it displays a number of informational
windows that allow for easy source code navigation and overview.

The informational windows can contain:

  - A directory tree,
  - a list of source files in the current directory (with full support and
     display of the VC-state),
  - a list of functions/classes/methods/... in the current file, (ECB uses the
    Semantic Bovinator, or Imenu, or etags, for getting this list so all
    languages supported by any of these tools are automatically supported by
    ECB too)
  - a history of recently visited files (groupable by several criterias),
  - the Speedbar and
  - output from compilation (the "*compilation*" window) and other modes like
    help, grep etc. or whatever a user defines to be displayed in this window.

As an added bonus, ECB makes sure to keep these informational windows visible,
even when you use C-x 1 and similar commands.

It goes without saying that you can configure the layout, ie which
informational windows should be displayed where. ECB comes with a number of
ready-made window layouts to choose from.

Here is an ascii-screenshot of what ECB offers you:

------------------------------------------------------------------
|              |                                                 |
| Directories  |                                                 |
|              |                                                 |
|--------------|                                                 |
|              |                                                 |
| Sources      |                                                 |
|              |                                                 |
|--------------|                   Edit-area                     |
|              |    (can be splitted in several edit-windows)    |
| Methods/Vars |                                                 |
|              |                                                 |
|--------------|                                                 |
|              |                                                 |
| History      |                                                 |
|              |                                                 |
------------------------------------------------------------------
|                                                                |
|                 Compilation-window (optional)                  |
|                                                                |
------------------------------------------------------------------

For more details go to http://ecb.sourceforge.net/


Enjoy,
Klaus


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Can anyone forward my ECB 2.40 release announcement to the newsgroup gnu.emacs.sources?

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Can anyone forward my ECB 2.40 release announcement to the newsgroup gnu.emacs.sources?

Hi,

i hadn't any access to newsgroups for a long time and i admit i'm to lazy to setup a newsreader etc...

Therefore the question: Is anyone out there who has access to news-server and who has already up and running a newreader so he can forward my ECB 2.40 release announcement to this list also to the newsgroup gnu.emacs.sources?

This would be fine - thanks a lot in advance!

regards
Klaus


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by Joakim Verona :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

<klaus.berndl@...> writes:

> On 2009-05-16 18:11 +0100, klaus.berndl@... wrote:
>>> after a almost 4 years "tea-break" ;-) since the last release there
>>> comes a new ECB: 2.40 is released.
>
>>This is excellent news. BTW, there's some discussion on including cedet
>>and ecb in Emacs 23.2. One of the blockers is ecb relies heavily on the
>>advice facility. Is this still the case?
>
> Yes, indeed - and IMHO building an IDE like ECB is quite impossible
> without heavily advicing Emacs because Emacs is not designed to display certain content
> in certain premanent windows within the same frame - the underlying window-management of Emacs
> is designed to create smartly new windows if necessary...
>
> I know that Emacs 23 has already a new feature which can prevent windows from
> being deleted by delete-other-window (C-x 1)...this is good and this can
> make some ECB-advices obsolete or at least much more simple...
> But this is not enough to throw away the advices of ECB......
>
> But ECB has a full stable advice-backbone which allows full control of
> all its advices and when they are active and when not.
> This comes in by introducing four new macros `defecb-advice-set',
> `defecb-advice', `ecb-with-original-adviced-function-set' and
> `ecb-with-ecb-advice'...
> With this  backbone ECB is stable and save concerning advicing a lot
> of functions.

I was part of an effor to bring the sort of primitives Emacs needs to
support applications like ECB. We were unable to finish this for emacs
23, but hopefully the feature can be made to qualify for inclusion in
Emacs 24. In that case ECB could use those features, and then be
included in Emacs.

Basically the feature we worked on let you group Emacs windows
together. Normal Emacs window operations only worked within the current
window group by default.


>
> Of course it would be possible to enhance Emacs with new features so
> most of the advices of ECB would be obsolete but IMHO this costs a lot
> of thinking power and needs new and good and proven design decisions for
> Emacs...unfortunately currently i could not say what *exactly* would be
> necessary for Emacs to support ECB throwing away its advices.......... ;-(
> As already said: needs intensive thinking about this topics....
>
> I have not the time to do this because i'm to busy... BTW: I have only build up this
> new release because new Emacs 23 and even more current CEDET (which is really
> great work by Eric and the other cedet-guys!) are worth
> to have at least a stable and powerful and smoothly working ECB (and previous
> version of ECB had some drawbacks concerning this)...but i have no time
> to invest much more (which would be necessary to integrate ECB in Emacs without
> its advices)...
> To be honest: It would great if ECB could be integrated in Emacs and if Emacs would
> offer all stuff necessary to throw away the ECB-advices but because for me its
> too expensive so i will *maintain* ECB as it is but nothing else...
>
> But: If there is someone out which is an elisp-guru and has plenty of time
> and is willing to overtake ECB for the sake of integration in Emacs
> i would appreciate this a lot and i would support this guy(s) as best
> as possible...
>
>>Many thanks for the new release ;)
>
> Thanks back ;-)
>
> Klaus
>
> ------------------------------------------------------------------------------
> Crystal Reports - New Free Runtime and 30 Day Trial
> Check out the new simplified licensing option that enables
> unlimited royalty-free distribution of the report engine
> for externally facing server and web deployment.
> http://p.sf.net/sfu/businessobjects_______________________________________________
> Cedet-devel mailing list
> Cedet-devel@...
> https://lists.sourceforge.net/lists/listinfo/cedet-devel
--
Joakim Verona


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by Don Dwiggins-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

klaus.berndl@... wrote:
> Hi,
>
> after an almost 4 years "tea-break" ;-) since the last release here
> comes a new ECB: 2.40 is released.

I got it and installed it (and installed Emacs 22.3 while I was at it)
on my Windows machine.  It works fine so far, with a couple of glitches:

- When I first load a Python file after activating (or JS file, or...),
the methods buffer is empty.  I can get it to fill in the methods by
doing M-x python-mode (which is redundant, the mode is already set in
the buffer), or by setting the scratch buffer to python-mode before
loading the file.

- I want to collapse some of the classes in the methods buffer while I
work on another one in the file.  I can collapse them OK, but as soon as
I start to edit a method in a non-collapsed class, the entire tree
expands again.  Any thoughts?


Thanks,
--
Don Dwiggins
Advanced Publishing Technology


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

1. please always send a problem-report with the command `ecb-submit-problem-report' - this includes all informations i need

2. is semantic enables in your python-buffers (what does (semantic-active-p) return if you call this with M-:)?

3. Is semantic-idle-scheduler-mode active in your buffer?

4. What happens if you co not call pythom-mode but [C-c . r] or even [C-u][C-c . r]?

5. Collapsing: Hmm, maybe you should build up a small example file which you send to me and a step-by-step sceanrio what i must do, to reproduce the behavior (beginning with 1. Start Emacs, 2. activate ECB...!)

Thanks
Klaus

-----Ursprüngliche Nachricht-----
Von: Don Dwiggins [mailto:ddwiggins@...]
Gesendet: Dienstag, 19. Mai 2009 05:24
An: ecb-list@...
Betreff: Re: [ECB-list] ECB 2.40 released!

klaus.berndl@... wrote:
> Hi,
>
> after an almost 4 years "tea-break" ;-) since the last release here
> comes a new ECB: 2.40 is released.

I got it and installed it (and installed Emacs 22.3 while I was at it) on my Windows machine.  It works fine so far, with a couple of glitches:

- When I first load a Python file after activating (or JS file, or...), the methods buffer is empty.  I can get it to fill in the methods by doing M-x python-mode (which is redundant, the mode is already set in the buffer), or by setting the scratch buffer to python-mode before loading the file.

- I want to collapse some of the classes in the methods buffer while I work on another one in the file.  I can collapse them OK, but as soon as I start to edit a method in a non-collapsed class, the entire tree expands again.  Any thoughts?


Thanks,
--
Don Dwiggins
Advanced Publishing Technology


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by Don Dwiggins-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

klaus.berndl@... wrote:
> 1. please always send a problem-report with the command `ecb-submit-problem-report' - this includes all informations i need

Thanks for the reply; here 'tis:
---------------------------------------

Please enter the details of your bug report here:

When I first load a Python file (or JS file, or...) after activating,
the methods buffer is empty.  I can get it to fill in the methods by
doing M-x python-mode (which is redundant, the mode is already set in
the buffer), or by setting the scratch buffer to python-mode before
loading the file.  (I also ran into this problem earlier using ECB 2.32
with CEDET 1.0pre4.)

Answering your questions:
2. is semantic enables in your python-buffers (what does
(semantic-active-p) return if you call this with M-:)?
  It returns nil

3. Is semantic-idle-scheduler-mode active in your buffer?
I don't think so; in fact, the Senator menu item doesn't show up until
I invoke python-mode.

4. What happens if you co not call pythom-mode but [C-c . r] or even
[C-u][C-c . r]?
  Nothing.

One other thing: when I invoked python-mode, I noticed the following
in the Messages buffer:
Cache Error:
[c:/Unix/.semanticdb/!drive_c!Dwig!Falcon!Development!Online!RCAServer!semantic.cache]
(invalid-read-syntax . in wrong context), Restart [2 times]
... but it didn't seem to hurt anything.

5. Collapsing: Hmm, maybe you should build up a small example file
which you send to me and a step-by-step sceanrio what i must do, to
reproduce the behavior (beginning with 1. Start Emacs, 2. activate
ECB...!)

OK:
1) paste the following into a file:
-------------------------------
class foo:
     def __init__(self):
         pass

     def foo1(self):
         pass

     def foo2(self):
         pass

class bar:
     def __init__(self):
         pass

     def bar1(self):
         pass

     def bar2(self):
         pass
-------------------------------
2) start Emacs,
3) activate ECB
4) load the file
5) do what you must to populate the methods buffer ;^)
6) in the methods buffer, collapse the "foo" class
7) move the cursor to the bottom of the file, hit Return

... at this point, after a short delay, I see "foo" expand.
(In fact, any change to the file will make it happen.)


Emacs  : GNU Emacs 22.3.1 (i386-mingw-nt5.1.2600)
  of 2008-09-06 on SOFT-MJASON
Package: ECB: 2.40, CEDET: 1.0pre6, semantic: 2.0pre6, eieio: 1.2,
speedbar: 1.0.2, JDEE: No JDEE

current state:
==============
(setq
  after-save-hook '(ecb-update-methods-after-saving)
  auto-mode-alist '(("\\.dz\\'" nil jka-compr)
("\\.g?z\\(~\\|\\.~[0-9]+~\\)?\\'" nil jka-compr)
                    ("\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'" nil jka-compr)
("\\.Z\\(~\\|\\.~[0-9]+~\\)?\\'" nil jka-compr)
                    ("\\.~?[0-9]+\\.[0-9][-.0-9]*~?\\'" nil t)
("\\.\\(?:orig\\|in\\|[bB][aA][kK]\\)\\'" nil t)
                    ("\\.lzx\\'" . laszlo-nxml-mumamo-mode)
("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . html-mumamo-mode)
                    ("\\.x[ms]l\\'" . nxml-mode)
("\\.\\(xml\\|xsl\\|rng\\|xul\\|rdf\\)\\'" . nxml-mode)
                    ("\\.xrc$" . nxml-mode) ("xml$" . nxml-mode)
("\\.rnc\\'" . rnc-mode)
                    ("\\.js\\'" . javascript-mode) ("\\.ghtml\\'" .
genshi-nxhtml-mumamo-mode)
                    ("\\.epl\\'" . embperl-nxhtml-mumamo-mode)
("\\.phps\\'" . smarty-nxhtml-mumamo-mode)
                    ("\\.erb\\'" . eruby-nxhtml-mumamo-mode)
("\\.rhtml\\'" . eruby-nxhtml-mumamo-mode)
                    ("\\.djhtml\\'" . django-nxhtml-mumamo-mode)
("\\.asp\\'" . asp-nxhtml-mumamo-mode)
                    ("\\.jsp\\'" . jsp-nxhtml-mumamo-mode)
("\\.phtml\\'" . nxhtml-mumamo-mode)
                    ("\\.php\\'" . nxhtml-mumamo-mode) ("\\.xhtmlf\\'" .
nxhtml-mumamo-mode)
                    ("\\.htmlf\\'" . nxhtml-mumamo-mode) ("\\.xhtml\\'"
. nxhtml-mumamo-mode)
                    ("\\.xhtm\\'" . nxhtml-mumamo-mode) ("\\.html\\'" .
nxhtml-mumamo-mode)
                    ("\\.htm\\'" . nxhtml-mumamo-mode)
("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . nxhtml-mumamo-mode)
                    ("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . nxhtml-mode)
("\\.gnus\\'" . emacs-lisp-mode)
                    ("\\.pyw?$" . python-mode) ("\\.spec$" .
python-mode) ("\\.nsi" . nsi-mode)
                    ("\\.mai$" . mail-mode) ("\\.cls$" .
visual-basic-mode) ("\\.bas$" . visual-basic-mode)
                    ("\\.frm$" . visual-basic-mode)
("\\.\\(xhtml\\|html\\|asp\\|htm\\)" . nxhtml-mode)
                    ("\\.tpl" . nxhtml-mumamo-mode) ("[^/]\\.dired$" .
dired-virtual-mode)
                    ("ProjStep\\.ede" . emacs-lisp-mode)
("Project\\.ede$" . emacs-lisp-mode)
                    ("\\.srt$" . srecode-template-mode) ("\\.wy$" .
wisent-grammar-mode)
                    ("\\.by$" . bovine-grammar-mode) ("\\.vr[hi]?\\'" .
vera-mode) ("\\.py\\'" . python-mode)
                    ("\\.mixal\\'" . mixal-mode) ("\\.x[bdsru]?[cn]?\\'"
. ld-script-mode)
                    ("\\.ld[si]?\\>" . ld-script-mode) ("\\.x[bp]m\\'" .
image-mode-maybe)
                    ("\\.p[bpgn]m\\'" . image-mode) ("\\.tiff?\\'" .
image-mode) ("\\.gif\\'" . image-mode)
                    ("\\.png\\'" . image-mode) ("\\.jpe?g\\'" .
image-mode) ("\\.[Pp][Rr][Oo]\\'" . idlwave-mode)
                    ("/\\.[a-z0-9-]*gdbinit" . gdb-script-mode)
("\\.soa\\'" . dns-mode) ("\\.css\\'" . css-mode)
                    ("\\.gcov\\'" . compilation-mode) ("\\.awk\\'" .
awk-mode)
                    ("\\.\\(u?lpc\\|pike\\|pmod\\(.in\\)?\\)\\'" .
pike-mode) ("\\.idl\\'" . idl-mode)
                    ("\\.java\\'" . java-mode) ("\\.m\\'" . objc-mode)
("\\.lex\\'" . c-mode)
                    ("\\.y\\(acc\\)?\\'" . c-mode) ("\\.[ch]\\'" .
c-mode) ("\\.\\(CC?\\|HH?\\)\\'" . c++-mode)
                    ("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . c++-mode)
("\\.\\(cc\\|hh\\)\\'" . c++-mode)
                    ("\\.bst\\'" . bibtex-style-mode)
("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . html-mode)
                    ("\\.te?xt\\'" . text-mode) ("\\.[tT]e[xX]\\'" .
tex-mode) ("\\.ins\\'" . tex-mode)
                    ("\\.ltx\\'" . latex-mode) ("\\.dtx\\'" .
doctex-mode) ("\\.el\\'" . emacs-lisp-mode)
                    ("\\.\\(scm\\|stk\\|ss\\|sch\\)\\'" . scheme-mode)
("\\.l\\'" . lisp-mode)
                    ("\\.li?sp\\'" . lisp-mode) ("\\.[fF]\\'" .
fortran-mode) ("\\.for\\'" . fortran-mode)
                    ("\\.p\\'" . pascal-mode) ("\\.pas\\'" .
pascal-mode) ("\\.ad[abs]\\'" . ada-mode)
                    ("\\.ad[bs].dg\\'" . ada-mode)
("\\.\\([pP]\\([Llm]\\|erl\\|od\\)\\|al\\)\\'" . perl-mode)
                    ("Imakefile\\'" . makefile-imake-mode)
("Makeppfile\\(?:\\.mk\\)?\\'" . makefile-makepp-mode)
                    ("\\.makepp\\'" . makefile-makepp-mode) ("\\.mk\\'"
. makefile-gmake-mode)
                    ("[Mm]akefile\\'" . makefile-gmake-mode) ("\\.am\\'"
. makefile-automake-mode)
                    ("\\.texinfo\\'" . texinfo-mode) ("\\.te?xi\\'" .
texinfo-mode) ("\\.[sS]\\'" . asm-mode)
                    ("\\.asm\\'" . asm-mode) ("[cC]hange\\.?[lL]og?\\'"
. change-log-mode)
                    ("[cC]hange[lL]og[-.][0-9]+\\'" . change-log-mode)
("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
                    ("\\.scm\\.[0-9]*\\'" . scheme-mode)
("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode)
                    ("\\.bash\\'" . sh-mode)
 
("\\(/\\|\\`\\)\\.\\(bash_profile\\|z?login\\|bash_login\\|z?logout\\)\\'"
. sh-mode)
 
("\\(/\\|\\`\\)\\.\\(bash_logout\\|shrc\\|[kz]shrc\\|bashrc\\|t?cshrc\\|esrc\\)\\'"
. sh-mode)
 
("\\(/\\|\\`\\)\\.\\([kz]shenv\\|xinitrc\\|startxrc\\|xsession\\)\\'" .
sh-mode)
                    ("\\.m?spec\\'" . sh-mode) ("\\.m[mes]\\'" .
nroff-mode) ("\\.man\\'" . nroff-mode)
                    ("\\.sty\\'" . latex-mode) ("\\.cl[so]\\'" .
latex-mode) ("\\.bbl\\'" . latex-mode)
                    ("\\.bib\\'" . bibtex-mode) ("\\.sql\\'" . sql-mode)
("\\.m[4c]\\'" . m4-mode)
                    ("\\.mf\\'" . metafont-mode) ("\\.mp\\'" .
metapost-mode) ("\\.vhdl?\\'" . vhdl-mode)
                    ("\\.article\\'" . text-mode) ("\\.letter\\'" .
text-mode) ("\\.i?tcl\\'" . tcl-mode)
                    ("\\.exp\\'" . tcl-mode) ("\\.itk\\'" . tcl-mode)
("\\.icn\\'" . icon-mode)
                    ("\\.sim\\'" . simula-mode) ("\\.mss\\'" .
scribe-mode) ("\\.f9[05]\\'" . f90-mode)
                    ("\\.indent\\.pro\\'" . fundamental-mode)
("\\.pro\\'" . idlwave-mode)
                    ("\\.prolog\\'" . prolog-mode) ("\\.tar\\'" . tar-mode)
 
("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\)\\'" . archive-mode)
 
("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . archive-mode)
                    ("\\.\\(sx[dmicw]\\|odt\\)\\'" . archive-mode)
("\\`/tmp/Re" . text-mode)
                    ("/Message[0-9]*\\'" . text-mode) ("\\.zone\\'" .
zone-mode) ("\\`/tmp/fol/" . text-mode)
                    ("\\.oak\\'" . scheme-mode) ("\\.sgml?\\'" .
sgml-mode) ("\\.x[ms]l\\'" . xml-mode)
                    ("\\.dtd\\'" . sgml-mode) ("\\.ds\\(ss\\)?l\\'" .
dsssl-mode) ("\\.js\\'" . java-mode)
                    ("\\.x[bp]m\\'" . c-mode) ("\\.d?v\\'" . verilog-mode)
                    ("[]>:/\\]\\..*\\(emacs\\|gnus\\|viper\\)\\'" .
emacs-lisp-mode)
                    ("\\`\\..*emacs\\'" . emacs-lisp-mode)
("[:/]_emacs\\'" . emacs-lisp-mode)
                    ("/crontab\\.X*[0-9]+\\'" . shell-script-mode)
("\\.ml\\'" . lisp-mode) ("\\.asd\\'" . lisp-mode)
                    ("\\.\\(asn\\|mib\\|smi\\)\\'" . snmp-mode)
("\\.\\(as\\|mi\\|sm\\)2\\'" . snmpv2-mode)
                    ("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode)
("\\.\\(dif\\|pat\\)\\'" . diff-mode)
                    ("\\.[eE]?[pP][sS]\\'" . ps-mode)
("configure\\.\\(ac\\|in\\)\\'" . autoconf-mode)
                    ("BROWSE\\'" . ebrowse-tree-mode) ("\\.ebrowse\\'" .
ebrowse-tree-mode)
                    ("#\\*mail\\*" . mail-mode) ("\\.g\\'" . antlr-mode)
("\\.ses\\'" . ses-mode)
                    ("\\.\\(soa\\|zone\\)\\'" . dns-mode)
("\\.docbook\\'" . sgml-mode) ("\\.com\\'" . dcl-mode)
                    ("/config\\.\\(?:bat\\|log\\)\\'" . fundamental-mode)
 
("\\.\\(?:[iI][nN][iI]\\|[lL][sS][tT]\\|[rR][eE][gG]\\|[sS][yY][sS]\\)\\'"
. conf-mode)
                    ("\\.\\(?:desktop\\|la\\)\\'" . conf-unix-mode)
("\\.ppd\\'" . conf-ppd-mode)
                    ("java.+\\.conf\\'" . conf-javaprop-mode)
                    ("\\.properties\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" .
conf-javaprop-mode)
 
("[/.]c\\(?:on\\)?f\\(?:i?g\\)?\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" .
conf-mode-maybe)
 
("\\`/etc/\\(?:DIR_COLORS\\|ethers\\|.?fstab\\|.*hosts\\|lesskey\\|login\\.?de\\(?:fs\\|vperm\\)\\|magic\\|mtab\\|pam\\.d/.*\\|permissions\\(?:\\.d/.+\\)?\\|protocols\\|rpc\\|services\\)\\'"
. conf-space-mode)
 
("\\`/etc/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'"
. conf-mode)
                    ("[cC]hange[lL]og[-.][-0-9a-z]+\\'" . change-log-mode)
 
("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode)
 
("/\\.\\(?:enigma\\|gltron\\|gtk\\|hxplayer\\|net\\|neverball\\|qt/.+\\|realplayer\\|scummvm\\|sversion\\|sylpheed/.+\\|xmp\\)rc\\'"
. conf-mode)
 
("/\\.\\(?:gdbtkinit\\|grip\\|orbital/.+txt\\|rhosts\\|tuxracer/options\\)\\'"
. conf-mode)
                    ("/\\.?X\\(?:default\\|resource\\|re\\)s\\>" .
conf-xdefaults-mode)
                    ("/X11.+app-defaults/" . conf-xdefaults-mode)
("/X11.+locale/.+/Compose\\'" . conf-colon-mode)
                    ("/X11.+locale/compose\\.dir\\'" .
conf-javaprop-mode) ("\\.[1-9]\\'" . nroff-mode)
                    ("\\.tgz\\'" . tar-mode) ("\\.tbz\\'" . tar-mode))
  c++-mode-hook '(semantic-default-c-setup)
  c-mode-common-hook nil
  c-mode-hook '(semantic-default-c-setup)
  compilation-mode-hook nil
  compilation-window-height nil
  ediff-quit-hook '(ediff-cleanup-mess ecb-ediff-quit-hook)
  help-mode-hook nil
  java-mode-hook '(wisent-java-default-setup)
  max-lisp-eval-depth 1000
  max-specpdl-size 3000
  post-command-hook '(global-font-lock-mode-check-buffers
mode-local-post-major-mode-change
                      nxhtml-global-minor-mode-check-buffers
ecb-handle-major-mode-visibilty
                      ecb-layout-post-command-hook)
  pre-command-hook '(ecb-layout-pre-command-hook tooltip-hide)
  system-type 'windows-nt
  temp-buffer-max-height '(lambda (buffer) (/ (- (frame-height) 2) 2))
  truncate-lines nil
  truncate-partial-width-windows t
  window-system 'w32
  semantic-after-partial-cache-change-hook
'(semanticdb-partial-synchronize-table ecb-update-after-partial-reparse)
  semantic-after-toplevel-cache-change-hook
'(semanticdb-synchronize-table ecb-rebuild-methods-buffer-with-tagcache)
  semantic-format-face-alist '((function . font-lock-function-name-face)
(variable . font-lock-variable-name-face)
                               (type . font-lock-type-face) (include .
font-lock-constant-face)
                               (package . font-lock-constant-face)
(label . font-lock-string-face)
                               (comment . font-lock-comment-face)
(keyword . font-lock-keyword-face)
                               (abstract . italic) (static . underline)
(documentation . font-lock-doc-face))
  semantic-orphaned-member-metaparent-type "class"
  semantic-uml-colon-string " : "
  speedbar-dynamic-tags-function-list '((semantic-sb-fetch-tag-table .
semantic-sb-insert-tag-table)
                                        (speedbar-fetch-dynamic-imenu .
speedbar-insert-imenu-list)
                                        (speedbar-fetch-dynamic-etags .
speedbar-insert-etags-list))
  speedbar-fetch-etags-arguments '("-D" "-I" "-o" "-")
  speedbar-fetch-etags-command "etags"
  speedbar-fetch-etags-parse-list
'(("\\.\\([cChH]\\|c\\+\\+\\|cpp\\|cc\\|hh\\|java\\|cxx\\|hxx\\)\\'" .
                                     speedbar-parse-c-or-c++tag)
                                    ("^\\.emacs$\\|.\\(el\\|l\\|lsp\\)\\'" .
 
"def[^i]+\\s-+\\(\\(\\w\\|[-_]\\)+\\)\\s-*")
                                    ("\\.tex\\'" .
speedbar-parse-tex-string)
                                    ("\\.p\\'" .
 
"\\(\\(FUNCTION\\|function\\|PROCEDURE\\|procedure\\)\\s-+\\([a-zA-Z0-9_.:]+\\)\\)\\s-*(?^?")
                                    )
  speedbar-tag-group-name-minimum-length 4
  speedbar-tag-hierarchy-method '(speedbar-prefix-group-tag-hierarchy
speedbar-trim-words-tag-hierarchy)
  speedbar-tag-regroup-maximum-length 10
  speedbar-tag-split-minimum-length 20
  ecb-adviced-function-sets '((ecb-compatibility-advices)
(ecb-winman-not-supported-function-advices)
                              (ecb-winman-winring-adviced-functions)
(ecb-winman-escreen-adviced-functions)
                              (ecb-eshell-adviced-functions)
(ecb-methods-browser-advices) (ecb-vc-advices)
                              (ecb-permanent-adviced-layout-functions)
(ecb-layout-basic-adviced-functions)
                              (ecb-speedbar-adviced-functions)
(ecb-always-disabled-advices))
  ecb-adviced-functions '((view-mode-exit . around) (tmm-prompt .
around) (scroll-all-function-all . around)
                          (count-windows . around) (master-says .
around) (electric-buffer-list . after)
                          (electric-buffer-list . before)
(electric-command-history . before)
                          (Electric-pop-up-window . around)
(one-window-p . around) (bs-show . before)
                          (winner-undo . before) (winner-redo . before)
(winner-mode . before)
                          (winring-initialize . after)
(winring-save-current-configuration . before)
                          (winring-restore-configuration . before)
(winring-duplicate-configuration . before)
                          (winring-set-name . after)
(escreen-save-current-screen-configuration . before)
                          (eshell . around) (custom-save-all . around)
(make-indirect-buffer . after)
                          (vc-checkin . after) (clearcase-sync-from-disk
. after) (set-window-configuration . after)
                          (current-window-configuration . after)
(balance-windows . around) (walk-windows . around)
                          (other-window-for-scrolling . around)
(switch-to-buffer . around)
                          (switch-to-buffer-other-window . around)
(split-window . around) (split-window . before)
                          (split-window-vertically . around)
(split-window-horizontally . around)
                          (delete-other-windows . around)
(delete-other-windows . before) (delete-window . around)
                          (delete-window . before) (delete-windows-on .
around) (other-window . around)
                          (display-buffer . around) (get-lru-window .
before) (get-largest-window . before)
                          (pop-to-buffer . around)
(resize-temp-buffer-window . around)
                          (shrink-window-if-larger-than-buffer . around)
(shrink-window . around)
                          (enlarge-window . around)
(mouse-drag-mode-line . around)
                          (mouse-drag-vertical-line . around)
(scroll-other-window . around)
                          (compilation-set-window-height . around)
(delete-frame . around)
                          (dframe-select-attached-frame . after)
(dframe-mouse-set-point . around)
                          (speedbar-get-focus . around)
(speedbar-frame-mode . around) (speedbar-click . around))
  ecb-autocontrol/sync-fcn-register '((ecb-symboldef-buffer-sync .
ecb-symboldef-buffer-name)
                                      (ecb-analyse-buffer-sync .
ecb-analyse-buffer-name) (ecb-eshell-buffer-sync)
                                      (ecb-tag-sync .
ecb-methods-buffer-name) (ecb-basic-buffer-sync)
 
(ecb-repair-only-ecb-window-layout) (ecb-layout-post-command-hook)
                                      (ecb-layout-pre-command-hook)
(ecb-handle-major-mode-visibilty)
 
(ecb-compilation-buffer-list-changed-p)
                                      (ecb-speedbar-buffer-sync .
ecb-speedbar-buffer-name) (ecb-stealthy-updates)
                                      (ecb-monitor-autocontrol-functions))
  ecb-buffer-setfunction-registration '((" *ECB History*" .
ecb-set-history-buffer)
                                        (" *ECB Methods*" .
ecb-set-methods-buffer)
                                        (" *ECB Sources*" .
ecb-set-sources-buffer)
                                        (" *ECB Directories*" .
ecb-set-directories-buffer))
  ecb-current-maximized-ecb-buffer-name nil
  ecb-edit-area-creators '((0 . split-window-vertically))
  ecb-idle-timer-alist '((ecb-stealthy-updates . [nil 0 1 0 t
ecb-stealthy-updates nil t])
                         (ecb-monitor-autocontrol-functions . [nil 0 1 0
t ecb-monitor-autocontrol-functions nil t])
                         (ecb-repair-only-ecb-window-layout . [t 0 0
500000 t ecb-repair-only-ecb-window-layout nil t])
                         (ecb-compilation-buffer-list-changed-p .
                          [t 0 0 250000 t
ecb-compilation-buffer-list-changed-p nil t])
                         (ecb-basic-buffer-sync . [t 0 0 250000 t
ecb-basic-buffer-sync nil t])
                         (ecb-tag-sync . [t 0 0 250000 t ecb-tag-sync
nil t]))
  ecb-last-window-config-before-deactivation nil
  ecb-minor-mode t
  ecb-path-selected-directory #("c:/Dwig/Scripts" 0 15 (help-echo
"Mouse-2 toggles maximizing, mouse-3 displays a popup-menu"))
  ecb-path-selected-source nil
  ecb-post-command-hooks '(ecb-handle-major-mode-visibilty
ecb-layout-post-command-hook)
  ecb-pre-command-hooks '(ecb-layout-pre-command-hook)
  ecb-special-ecb-buffers-of-current-layout '(" *ECB Directories*" "
*ECB Sources*" " *ECB Methods*" " *ECB History*")
  ecb-stealthy-function-list '(ecb-stealthy-vc-check-in-directories-buf
ecb-stealthy-vc-check-in-sources-buf
                               ecb-stealthy-vc-check-in-history-buf
ecb-stealthy-ro-check-in-sources-buf
                               ecb-stealthy-ro-check-in-directories-buf
ecb-stealthy-empty-dir-check)
  ecb-stealthy-function-state-alist
'((ecb-stealthy-vc-check-in-directories-buf . done)
 
(ecb-stealthy-vc-check-in-sources-buf . done)
 
(ecb-stealthy-vc-check-in-history-buf . done)
 
(ecb-stealthy-ro-check-in-sources-buf . done)
 
(ecb-stealthy-ro-check-in-directories-buf . done)
                                      (ecb-stealthy-empty-dir-check . done))
  ecb-toggle-layout-state 0
  ecb-tree-buffer-creators '((ecb-analyse-buffer-name .
ecb-create-analyse-tree-buffer)
                             (ecb-methods-buffer-name .
ecb-create-methods-tree-buffer)
                             (ecb-history-buffer-name .
ecb-create-history-tree-buffer)
                             (ecb-sources-buffer-name .
ecb-create-sources-tree-buffer)
                             (ecb-directories-buffer-name .
ecb-create-directories-tree-buffer))
  ecb-tree-buffers '((" *ECB Directories*" .
ecb-directories-buffer-name) (" *ECB Sources*" . ecb-sources-buffer-name)
                     (" *ECB History*" . ecb-history-buffer-name) ("
*ECB Methods*" . ecb-methods-buffer-name)
                     (" *ECB Analyse*" . ecb-analyse-buffer-name))
  ecb-windows-hidden nil
  ecb-activate-before-layout-draw-hook nil
  ecb-activate-before-new-frame-created-hook nil
  ecb-activate-hook '(ecb-eshell-auto-activate-hook)
  ecb-activation-selects-ecb-frame-if-already-active 'ask
  ecb-add-path-for-not-matching-files '(t)
  ecb-advice-window-functions-signal-error nil
  ecb-after-directory-change-hook nil
  ecb-analyse-bucket-element-face 'ecb-analyse-bucket-element-face
  ecb-analyse-bucket-node-face 'ecb-analyse-bucket-node-face
  ecb-analyse-buffer-after-create-hook nil
  ecb-analyse-buffer-name " *ECB Analyse*"
  ecb-analyse-buffer-sync 'basic
  ecb-analyse-buffer-sync-delay 2
  ecb-analyse-buffer-sync-hook nil
  ecb-analyse-collapsed-buckets nil
  ecb-analyse-face 'ecb-default-highlight-face
  ecb-analyse-fontified-buckets '("Context" "Function")
  ecb-analyse-gen-tag-info-fn nil
  ecb-analyse-general-face 'ecb-default-general-face
  ecb-analyse-show-node-info '(if-too-long . name)
  ecb-analyse-show-tag-info-fn 'message
  ecb-auto-activate nil
  ecb-auto-compatibility-check t
  ecb-auto-expand-directory-tree 'best
  ecb-auto-expand-tag-tree 'expand-spec
  ecb-auto-expand-tag-tree-collapse-other nil
  ecb-auto-save-before-etags-methods-rebuild t
  ecb-auto-update-methods-after-save t
  ecb-basic-buffer-sync '(Info-mode dired-mode)
  ecb-basic-buffer-sync-delay 0.25
  ecb-basic-buffer-sync-hook nil
  ecb-before-activate-hook nil
  ecb-before-deactivate-hook nil
  ecb-bucket-node-display '("" "" ecb-bucket-node-face)
  ecb-cache-directory-contents '(("^/\\([^:/]*@\\)?\\([^@:/]*\\):.*" .
0) (".*" . 50))
  ecb-cache-directory-contents-not nil
  ecb-change-layout-preserves-compwin-state t
  ecb-clear-caches-before-activate nil
  ecb-common-tree-buffer-after-create-hook nil
  ecb-compilation-buffer-names '(("*Calculator*") ("*vc*") ("*vc-diff*")
("*Apropos*") ("*Occur*") ("*shell*")
                                 ("\\*[cC]ompilation.*\\*" . t)
("\\*i?grep.*\\*" . t) ("*JDEE Compile Server*")
                                 ("*Help*") ("*Completions*")
("*Backtrace*") ("*Compile-log*") ("*bsh*")
                                 ("*Messages*"))
  ecb-compilation-major-modes '(compilation-mode)
  ecb-compilation-predicates '(comint-check-proc)
  ecb-compile-window-height nil
  ecb-compile-window-prevent-shrink-below-height t
  ecb-compile-window-temporally-enlarge 'after-display
  ecb-compile-window-width 'frame
  ecb-create-layout-file "~/.ecb-user-layouts.el"
  ecb-create-layout-frame-height 42
  ecb-create-layout-frame-width 110
  ecb-deactivate-hook nil
  ecb-debug-mode nil
  ecb-default-tag-filter nil
  ecb-directories-buffer-after-create-hook nil
  ecb-directories-buffer-name " *ECB Directories*"
  ecb-directories-general-face 'ecb-default-general-face
  ecb-directories-menu-sorter nil
  ecb-directories-menu-user-extension '(("Version Control"
(ecb-dir-popup-cvs-status "CVS Status")
                                         (ecb-dir-popup-cvs-examine "CVS
Examine")
                                         (ecb-dir-popup-cvs-update "CVS
Update"))
                                        )
  ecb-directories-menu-user-extension-function 'ignore
  ecb-directories-show-node-info '(if-too-long . path)
  ecb-directories-update-speedbar 'auto
  ecb-directory-face 'ecb-default-highlight-face
  ecb-directory-not-accessible-face 'ecb-directory-not-accessible-face
  ecb-display-default-dir-after-start t
  ecb-display-image-icons-for-semantic-tags t
  ecb-enlarged-compilation-window-max-height 'best
  ecb-eshell-auto-activate nil
  ecb-eshell-buffer-sync 'basic
  ecb-eshell-buffer-sync-delay 'basic
  ecb-eshell-enlarge-when-eshell t
  ecb-eshell-fit-window-to-command-output t
  ecb-exclude-parents-regexps nil
  ecb-excluded-directories-regexps '("^\\(CVS\\|\\.[^xX]*\\)$")
  ecb-expand-methods-switch-off-auto-expand t
  ecb-find-external-tag-functions '((default
ecb-search-tag-by-semantic-analyzer) (jde-mode ecb-jde-show-class-source))
  ecb-fix-window-size nil
  ecb-font-lock-tags t
  ecb-force-reparse-when-semantic-idle-scheduler-off nil
  ecb-grep-function 'lgrep
  ecb-grep-recursive-function 'rgrep
  ecb-help-html-path "./html-help/ecb.html"
  ecb-help-info-path "./info-help/ecb.info"
  ecb-hide-ecb-windows-after-hook nil
  ecb-hide-ecb-windows-before-hook nil
  ecb-highlight-tag-with-point 'highlight-scroll
  ecb-highlight-tag-with-point-delay 0.25
  ecb-history-bucket-node-face 'ecb-history-bucket-node-face
  ecb-history-buffer-after-create-hook nil
  ecb-history-buffer-name " *ECB History*"
  ecb-history-dead-buffer-face 'ecb-history-dead-buffer-face
  ecb-history-exclude-file-regexps '("TAGS$" "semantic\\.cache$")
  ecb-history-face 'ecb-default-highlight-face
  ecb-history-general-face 'ecb-default-general-face
  ecb-history-indirect-buffer-face 'ecb-history-indirect-buffer-face
  ecb-history-make-buckets 'directory
  ecb-history-menu-sorter nil
  ecb-history-menu-user-extension '(("Version control"
(ecb-file-popup-ediff-revision "Ediff against revision")
                                     ("---")
(ecb-file-popup-vc-next-action "Check In/Out")
                                     (ecb-file-popup-vc-log "Revision
history")
                                     (ecb-file-popup-vc-annotate "Annotate")
                                     (ecb-file-popup-vc-diff "Diff
against last version") ("---")
                                     (ecb-file-popup-vc-refresh-file
"Recompute state for file")
 
(ecb-file-popup-vc-refresh-all-files "Recompute state for whole history"))
                                    )
  ecb-history-menu-user-extension-function 'ignore
  ecb-history-show-node-info '(always . name-path)
  ecb-history-sort-ignore-case t
  ecb-history-sort-method 'name
  ecb-history-stick-indirect-buffers-to-basebuffer t
  ecb-host-accessible-check-valid-time nil
  ecb-ignore-display-buffer-function 'always
  ecb-ignore-pop-up-frames 'compile-window
  ecb-ignore-special-display 'compile-window
  ecb-jde-set-directories-buffer-to-jde-sourcepath nil
  ecb-key-map '("C-c ." (t "fh" ecb-history-filter) (t "fs"
ecb-sources-filter) (t "fm" ecb-methods-filter)
                (t "fr" ecb-methods-filter-regexp) (t "ft"
ecb-methods-filter-tagclass)
                (t "fc" ecb-methods-filter-current-type) (t "fp"
ecb-methods-filter-protection)
                (t "fn" ecb-methods-filter-nofilter) (t "fl"
ecb-methods-filter-delete-last)
                (t "ff" ecb-methods-filter-function) (t "p"
ecb-nav-goto-previous) (t "n" ecb-nav-goto-next)
                (t "lc" ecb-change-layout) (t "lr" ecb-redraw-layout) (t
"lw" ecb-toggle-ecb-windows)
                (t "lt" ecb-toggle-layout) (t "s" ecb-window-sync) (t
"r" ecb-rebuild-methods-buffer)
                (t "a" ecb-toggle-auto-expand-tag-tree) (t "x"
ecb-expand-methods-nodes) (t "h" ecb-show-help)
                (t "gl" ecb-goto-window-edit-last) (t "g1"
ecb-goto-window-edit1) (t "g2" ecb-goto-window-edit2)
                (t "gc" ecb-goto-window-compilation) (t "gd"
ecb-goto-window-directories)
                (t "gs" ecb-goto-window-sources) (t "gm"
ecb-goto-window-methods) (t "gh" ecb-goto-window-history)
                (t "ga" ecb-goto-window-analyse) (t "gb"
ecb-goto-window-speedbar)
                (t "md" ecb-maximize-window-directories) (t "ms"
ecb-maximize-window-sources)
                (t "mm" ecb-maximize-window-methods) (t "mh"
ecb-maximize-window-history)
                (t "ma" ecb-maximize-window-analyse) (t "mb"
ecb-maximize-window-speedbar) (t "e" eshell)
                (t "o" ecb-toggle-scroll-other-window-scrolls-compile)
(t "\\" ecb-toggle-compile-window)
                (t "/" ecb-toggle-compile-window-height) (t ","
ecb-cycle-maximized-ecb-buffers)
                (t "." ecb-cycle-through-compilation-buffers))
  ecb-kill-buffer-clears-history nil
  ecb-layout-always-operate-in-edit-window '(switch-to-buffer)
  ecb-layout-debug-mode nil
  ecb-layout-name "left8"
  ecb-layout-window-sizes '(("left8" (0.327683615819209 .
0.05263157894736842)
                             (0.327683615819209 . 0.07894736842105263)
(0.327683615819209 . 0.8026315789473685)
                             (0.327683615819209 . 0.05263157894736842))
                            )
  ecb-major-modes-show-or-hide '(nil)
  ecb-maximize-ecb-window-after-selection nil
  ecb-maximize-next-after-maximized-select nil
  ecb-method-face 'ecb-default-highlight-face
  ecb-method-non-semantic-face 'speedbar-tag-face
  ecb-methods-buffer-after-create-hook nil
  ecb-methods-buffer-name " *ECB Methods*"
  ecb-methods-filter-replace-existing 'never
  ecb-methods-general-face 'ecb-default-general-face
  ecb-methods-menu-sorter nil
  ecb-methods-menu-user-extension nil
  ecb-methods-menu-user-extension-function 'ignore
  ecb-methods-nodes-collapse-spec 'all
  ecb-methods-nodes-expand-spec '(type variable function section
nonterminal keyword token)
  ecb-methods-separate-prototypes t
  ecb-methods-show-node-info '(if-too-long . name+type)
  ecb-minor-mode-text ""
  ecb-mode-line-data '((ecb-directories-buffer-name . sel-dir)
(ecb-sources-buffer-name . sel-dir)
                       (ecb-methods-buffer-name . sel-source)
(ecb-analyse-buffer-name . sel-source)
                       (ecb-history-buffer-name .
                        #("History" 0 7 (help-echo "Mouse-2 toggles
maximizing, mouse-3 displays a popup-menu")))
                       )
  ecb-mode-line-data-face 'ecb-mode-line-data-face
  ecb-mode-line-display-window-number t
  ecb-mode-line-prefix-face 'ecb-mode-line-prefix-face
  ecb-mode-line-prefixes '((ecb-directories-buffer-name)
                           (ecb-sources-buffer-name .
ecb-sources-filter-modeline-prefix)
                           (ecb-methods-buffer-name .
ecb-methods-filter-modeline-prefix)
                           (ecb-history-buffer-name .
ecb-history-filter-modeline-prefix))
  ecb-mode-line-win-nr-face 'ecb-mode-line-win-nr-face
  ecb-mouse-click-destination 'last-point
  ecb-new-ecb-frame nil
  ecb-non-semantic-exclude-modes '(sh-mode fundamental-mode text-mode)
  ecb-non-semantic-methods-initial-expand nil
  ecb-non-semantic-parsing-function nil
  ecb-options-version "2.40"
  ecb-other-window-behavior 'smart
  ecb-ping-options '("-n" "2" "HOST")
  ecb-ping-program "ping"
  ecb-post-process-semantic-taglist '((c++-mode
ecb-group-function-tags-with-parents)
                                      (emacs-lisp-mode
ecb-group-function-tags-with-parents)
                                      (c-mode ecb-filter-c-prototype-tags))
  ecb-prescan-directories-exclude-regexps nil
  ecb-prescan-directories-for-emptyness 'unless-remote
  ecb-primary-secondary-mouse-buttons 'mouse-2--C-mouse-2
  ecb-process-non-semantic-files t
  ecb-read-only-check-exclude-regexps nil
  ecb-rebuild-non-semantic-methods-before-hook nil
  ecb-redraw-layout-after-hook '(ecb-eshell-recenter)
  ecb-redraw-layout-before-hook nil
  ecb-redraw-layout-quickly nil
  ecb-run-ediff-in-ecb-frame t
  ecb-scroll-other-window-scrolls-compile-window nil
  ecb-select-edit-window-on-redraw nil
  ecb-show-ecb-windows-after-hook nil
  ecb-show-ecb-windows-before-hook nil
  ecb-show-help-format 'info
  ecb-show-only-positioned-tags nil
  ecb-show-source-file-extension t
  ecb-show-sources-in-directories-buffer '("left7" "left13" "left14"
"left15")
  ecb-show-tags '((default (include collapsed nil) (parent collapsed
nil) (type flattened nil)
                   (variable collapsed access) (function flattened
access) (label hidden nil) (t collapsed nil))
                  (c++-mode (include collapsed nil) (parent collapsed
nil) (type flattened nil)
                   (variable collapsed access) (function flattened
access) (function collapsed access)
                   (label hidden nil) (t collapsed nil))
                  (c-mode (include collapsed nil) (parent collapsed nil)
(type flattened nil)
                   (variable collapsed access) (function flattened
access) (function collapsed access)
                   (label hidden nil) (t collapsed nil))
                  (bovine-grammar-mode (keyword collapsed name) (token
collapsed name) (nonterminal flattened name)
                   (rule flattened name) (t collapsed nil))
                  (wisent-grammar-mode (keyword collapsed name) (token
collapsed name) (nonterminal flattened name)
                   (rule flattened name) (t collapsed nil))
                  (texinfo-mode (section flattened nil) (def collapsed
name) (t collapsed nil)))
  ecb-source-face 'ecb-default-highlight-face
  ecb-source-file-regexps '((".*"
 
("\\(^\\(\\.\\|#\\)\\|\\(~$\\|\\.\\(elc\\|obj\\|o\\|class\\|lib\\|dll\\|a\\|so\\|cache\\)$\\)\\)")
                             ("^\\.\\(emacs\\|gnus\\)$"))
                            )
  ecb-source-in-directories-buffer-face
'ecb-source-in-directories-buffer-face
  ecb-source-path '("C:\\Dwig\\Falcon\\Development\\Client"
"C:\\Dwig\\Falcon\\Development\\Online"
                    "C:\\Dwig\\Projects"
"C:\\Dwig\\Falcon\\Development\\StandardDatabase\\DBSetup")
  ecb-source-read-only-face 'ecb-source-read-only-face
  ecb-sources-buffer-after-create-hook nil
  ecb-sources-buffer-name " *ECB Sources*"
  ecb-sources-exclude-cvsignore nil
  ecb-sources-general-face 'ecb-default-general-face
  ecb-sources-menu-sorter nil
  ecb-sources-menu-user-extension '(("Version control"
(ecb-file-popup-ediff-revision "Ediff against revision")
                                     ("---")
(ecb-file-popup-vc-next-action "Check In/Out")
                                     (ecb-file-popup-vc-log "Revision
history")
                                     (ecb-file-popup-vc-annotate "Annotate")
                                     (ecb-file-popup-vc-diff "Diff
against last version") ("---")
                                     (ecb-file-popup-vc-refresh-file
"Recompute state for file")
                                     (ecb-file-popup-vc-refresh-dir
"Recompute state for whole dir"))
                                    )
  ecb-sources-menu-user-extension-function 'ignore
  ecb-sources-perform-read-only-check 'unless-remote
  ecb-sources-show-node-info '(if-too-long . name)
  ecb-sources-sort-ignore-case t
  ecb-sources-sort-method 'name
  ecb-speedbar-before-activate-hook nil
  ecb-speedbar-buffer-sync 'basic
  ecb-speedbar-buffer-sync-delay 'basic
  ecb-speedbar-buffer-sync-hook nil
  ecb-split-edit-window-after-start 'before-deactivation
  ecb-stealthy-tasks-delay 1
  ecb-symboldef-buffer-name " *ECB Symboldefinition*"
  ecb-symboldef-buffer-sync 'basic
  ecb-symboldef-buffer-sync-delay 'basic
  ecb-symboldef-buffer-sync-hook nil
  ecb-symboldef-find-functions '((lisp-interaction-mode .
ecb-symboldef-find-lisp-doc)
                                 (lisp-mode . ecb-symboldef-find-lisp-doc)
                                 (emacs-lisp-mode .
ecb-symboldef-find-lisp-doc)
                                 (default . ecb-symboldef-find-definition))
  ecb-tag-display-function '((default . ecb-format-tag-uml-prototype))
  ecb-tag-header-face 'ecb-tag-header-face
  ecb-tag-jump-sets-mark t
  ecb-tag-visit-post-actions '((default ecb-tag-visit-smart-tag-start
ecb-tag-visit-highlight-tag-header)
                               (java-mode ecb-tag-visit-goto-doc-start)
(jde-mode ecb-tag-visit-goto-doc-start))
  ecb-tip-of-the-day t
  ecb-tip-of-the-day-file "~/.ecb-tip-of-day.el"
  ecb-toggle-layout-sequence '("left9" "left14")
  ecb-tree-buffer-style 'image
  ecb-tree-do-not-leave-window-after-select nil
  ecb-tree-easy-hor-scroll 5
  ecb-tree-expand-symbol-before t
  ecb-tree-guide-line-face 'ecb-tree-guide-line-face
  ecb-tree-image-icons-directories
'("c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb-images/default/height-17"
                                     (ecb-directories-buffer-name .
 
"c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb-images/directories/height-17")
                                     (ecb-sources-buffer-name .
 
"c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb-images/sources/height-14_to_21")
                                     (ecb-methods-buffer-name .
 
"c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb-images/methods/height-14_to_21")
                                     )
  ecb-tree-incremental-search 'prefix
  ecb-tree-indent 4
  ecb-tree-make-parent-node-sticky t
  ecb-tree-mouse-action-trigger 'button-release
  ecb-tree-navigation-by-arrow t
  ecb-tree-stickynode-indent-string " "
  ecb-tree-truncate-lines '(ecb-directories-buffer-name
ecb-sources-buffer-name ecb-methods-buffer-name
                            ecb-history-buffer-name ecb-analyse-buffer-name)
  ecb-truncate-long-names t
  ecb-type-tag-display nil
  ecb-type-tag-expansion '((default "class" "interface" "group"
"namespace") (c-mode "struct"))
  ecb-use-recursive-edit nil
  ecb-use-speedbar-instead-native-tree-buffer nil
  ecb-vc-directory-exclude-regexps nil
  ecb-vc-enable-support nil
  ecb-vc-state-mapping '((up-to-date . up-to-date) (edited . edited)
(locally-modified . edited)
                         (needs-patch . needs-patch) (needs-checkout .
needs-patch) (needs-merge . needs-merge)
                         (unlocked-changes . unlocked-changes) (added .
added) (locally-added . added)
                         (ignored . ignored) (unknown . unknown))
  ecb-vc-supported-backends nil
  ecb-version-check t
  ecb-windows-height 0.33
  ecb-windows-width 0.33
  ecb-winman-escreen-number 1
  ecb-winman-winring-name "ECB"
  )




-----------------------------------------------------
The attributes of the ECB-faces are:

ecb-mode-line-data-face: nil
ecb-mode-line-prefix-face: (:foreground forestgreen)
ecb-mode-line-win-nr-face: (:weight bold)
ecb-bucket-node-face: (:inherit ecb-default-general-face :weight bold)
ecb-type-tag-group-face: (:foreground dim gray :weight bold)
ecb-type-tag-enum-face: (:weight bold)
ecb-type-tag-union-face: (:weight bold)
ecb-type-tag-typedef-face: (:weight bold)
ecb-type-tag-struct-face: (:weight bold)
ecb-type-tag-interface-face: (:weight bold)
ecb-type-tag-class-face: (:weight bold)
ecb-directory-not-accessible-face: (:inherit
ecb-directories-general-face :foreground gray60)
ecb-source-read-only-face: (:inherit ecb-default-general-face :slant italic)
ecb-source-in-directories-buffer-face: (:inherit
ecb-directories-general-face :foreground medium blue)
ecb-tag-header-face: (:background SeaGreen1)
ecb-analyse-bucket-node-face: (:inherit ecb-bucket-node-face :weight bold)
ecb-analyse-bucket-element-face: (:inherit ecb-analyse-general-face
:foreground brown)
ecb-analyse-general-face: (:inherit ecb-default-general-face :height 1.0)
ecb-analyse-face: (:inherit ecb-default-highlight-face :background
cornflower blue :foreground yellow)
ecb-history-face: (:inherit ecb-default-highlight-face :background
cornflower blue :foreground yellow)
ecb-method-non-semantic-face: (:inherit ecb-methods-general-face
:foreground brown)
ecb-method-face: (:inherit ecb-default-highlight-face :background
cornflower blue :foreground yellow)
ecb-source-face: (:inherit ecb-default-highlight-face :background
cornflower blue :foreground yellow)
ecb-directory-face: (:inherit ecb-default-highlight-face :background
cornflower blue :foreground yellow)
ecb-default-highlight-face: (:background cornflower blue :foreground yellow)
ecb-history-dead-buffer-face: (:inherit ecb-history-general-face
:foreground gray60)
ecb-history-indirect-buffer-face: (:inherit ecb-history-general-face
:slant italic)
ecb-history-bucket-node-face: (:inherit ecb-bucket-node-face)
ecb-history-general-face: (:inherit ecb-default-general-face :height 1.0)
ecb-methods-general-face: (:inherit ecb-default-general-face :height 1.0)
ecb-sources-general-face: (:inherit ecb-default-general-face :height 1.0)
ecb-directories-general-face: (:inherit ecb-default-general-face :height
1.0)
ecb-tree-guide-line-face: (:inherit ecb-default-general-face :foreground
grey :height 1.0)
ecb-default-general-face: (:height 1.0)

-----------------------------------------------------



-----------------------------------------------------
There was no *ecb-tag-dump* buffer
-----------------------------------------------------



-----------------------------------------------------
There was no *Backtrace* buffer
-----------------------------------------------------

-----------------------------------------------------
The contents of the *Messages* buffer were

("C:\\ProgramFiles\\Emacs\\emacs-22.3\\bin\\emacs.exe")
Loading encoded-kb...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/cedet-1.0pre6/common/cedet.el
(source)...
Loading cl-macs...done
Loading byte-opt...done
Setting up CEDET packages...
Loading derived...done
Loading cl-seq...done
Loading ede-speedbar...done
Setting up CEDET packages...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/cedet-1.0pre6/common/cedet.el
(source)...done
Loading semantic-idle...done
Loading semanticdb-mode...done
Loading semantic-mru-bookmark...
Loading ring...done
Loading semantic-mru-bookmark...done
Loading senator...done
Loading avoid...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxml-mode-20041004/rng-auto.el
(source)...done
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/autostart.el
(source)...
Nxml/Nxhtml Autostart.el loading ...
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml-loaddefs.el
(source)...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml/nxhtml-menu.el
(source)...
Loading regexp-opt...done
Loading dired-x...done
Loading easy-mmode...done
Loading url-methods...done
html-site-current (information): No current site set
!! File mumamo uses old-style backquotes !!
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml/nxhtml-menu.el
(source)...done
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/autostart22.el
(source)...
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxml-mode-20041004/rng-auto.el
(source)...done
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/autostart22.el
(source)...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/etc/schema/schema-path-patch.el
(source)...done
xhtml-loader.rnc was ok
(No changes need to be saved)
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml/nxhtml-autoload.el
(source)...
nxhtml-autoload starting ... (hm, should maybe be renamed ...)
majmodpri-sort-lists running ...
nxhtml-autoload finished
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml/nxhtml-autoload.el
(source)...done
=== Loaded at nxhtml/autostart.el end:
(feature 'html-imenu)=t
(feature 'html-quote)=t
(feature 'html-site)=t
(feature 'html-upl)=t
(feature 'mumamo)=t
(feature 'nxhtml-menu)=t
(feature 'nxhtml-mode)=t
(feature 'rngalt)=t
(feature 'tidy-xhtml)=t
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/autostart.el
(source)...done
Loading utf-16...done
Package rsz-mini is obsolete
Loading server...done
Loading semantic-el...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb.el
(source)...
ECB 2.40 uses CEDET 1.0pre6 (contains semantic 2.0pre6, eieio 1.2,
speedbar 1.0.2).
Loading edmacro...done
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb.el
(source)...done
All requirements for ECB 2.40 fulfilled - Enjoy it!
Loading cl-extra...done
The ECB is now activated.
There are no NEWS to display.
Loading c:/Unix/.ecb-tip-of-day.el (source)...done
Making completion list...
Loading eieio-opt...done
Preparing problem report...
Loading sendmail...done
Formatting bug report buffer......................................

End Insert *Messages* buffer
-----------------------------------------------------



------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Well, then it#s clear - seems that python is not supported by semantic (but AFAIK current semantic has a python parser?! Eric?)
But if (semantic-active-p) is nil then semantic is not active...
What is the value of python-mode-hook in your setup??

Background: when semantic is not active then ECB can only uses etags or imenu-parser for the contents which is much much much less powerful then semantic-parser - with non-semantic-sources content display is quite rough in ECB because these parsers (etags and imenu) can not supply what ECB needs .... This is the reason for your expanding/collapsing problem...

So, here my recipe: Activate the semantic-python-parser for your code and bob will be your uncle ;-)

Klaus

-----Ursprüngliche Nachricht-----
Von: Don Dwiggins [mailto:ddwiggins@...]
Gesendet: Dienstag, 19. Mai 2009 18:26
An: ecb-list@...
Betreff: Re: [ECB-list] ECB 2.40 released!

klaus.berndl@... wrote:
> 1. please always send a problem-report with the command
> `ecb-submit-problem-report' - this includes all informations i need

Thanks for the reply; here 'tis:
---------------------------------------

Please enter the details of your bug report here:

When I first load a Python file (or JS file, or...) after activating, the methods buffer is empty.  I can get it to fill in the methods by doing M-x python-mode (which is redundant, the mode is already set in the buffer), or by setting the scratch buffer to python-mode before loading the file.  (I also ran into this problem earlier using ECB 2.32 with CEDET 1.0pre4.)

Answering your questions:
2. is semantic enables in your python-buffers (what does
(semantic-active-p) return if you call this with M-:)?
  It returns nil

3. Is semantic-idle-scheduler-mode active in your buffer?
I don't think so; in fact, the Senator menu item doesn't show up until I invoke python-mode.

4. What happens if you co not call pythom-mode but [C-c . r] or even [C-u][C-c . r]?
  Nothing.

One other thing: when I invoked python-mode, I noticed the following in the Messages buffer:
Cache Error:
[c:/Unix/.semanticdb/!drive_c!Dwig!Falcon!Development!Online!RCAServer!semantic.cache]
(invalid-read-syntax . in wrong context), Restart [2 times] ... but it didn't seem to hurt anything.

5. Collapsing: Hmm, maybe you should build up a small example file which you send to me and a step-by-step sceanrio what i must do, to reproduce the behavior (beginning with 1. Start Emacs, 2. activate
ECB...!)

OK:
1) paste the following into a file:
-------------------------------
class foo:
     def __init__(self):
         pass

     def foo1(self):
         pass

     def foo2(self):
         pass

class bar:
     def __init__(self):
         pass

     def bar1(self):
         pass

     def bar2(self):
         pass
-------------------------------
2) start Emacs,
3) activate ECB
4) load the file
5) do what you must to populate the methods buffer ;^)
6) in the methods buffer, collapse the "foo" class
7) move the cursor to the bottom of the file, hit Return

... at this point, after a short delay, I see "foo" expand.
(In fact, any change to the file will make it happen.)


Emacs  : GNU Emacs 22.3.1 (i386-mingw-nt5.1.2600)
  of 2008-09-06 on SOFT-MJASON
Package: ECB: 2.40, CEDET: 1.0pre6, semantic: 2.0pre6, eieio: 1.2,
speedbar: 1.0.2, JDEE: No JDEE

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

Attached you find a screenshot of my ECB 2.40 with Emacs 22.3 - all is working fine with python and "python-semantic" is also enabled ... Then your collapsing also works well - as with all semantic-supported sources...

BUT: semes that the auto-loading stuff is somehow broken for python in my Emacs... At least for my this works only when i explicitly load the library python.el, e.g. by (require 'python) in my .emacs... But then all is fine and ECB works smoothly with python-codes...

Does this help?
Klaus


-----Ursprüngliche Nachricht-----
Von: Don Dwiggins [mailto:ddwiggins@...]
Gesendet: Dienstag, 19. Mai 2009 18:26
An: ecb-list@...
Betreff: Re: [ECB-list] ECB 2.40 released!

klaus.berndl@... wrote:
> 1. please always send a problem-report with the command
> `ecb-submit-problem-report' - this includes all informations i need

Thanks for the reply; here 'tis:
---------------------------------------

Please enter the details of your bug report here:

When I first load a Python file (or JS file, or...) after activating, the methods buffer is empty.  I can get it to fill in the methods by doing M-x python-mode (which is redundant, the mode is already set in the buffer), or by setting the scratch buffer to python-mode before loading the file.  (I also ran into this problem earlier using ECB 2.32 with CEDET 1.0pre4.)

Answering your questions:
2. is semantic enables in your python-buffers (what does
(semantic-active-p) return if you call this with M-:)?
  It returns nil

3. Is semantic-idle-scheduler-mode active in your buffer?
I don't think so; in fact, the Senator menu item doesn't show up until I invoke python-mode.

4. What happens if you co not call pythom-mode but [C-c . r] or even [C-u][C-c . r]?
  Nothing.

One other thing: when I invoked python-mode, I noticed the following in the Messages buffer:
Cache Error:
[c:/Unix/.semanticdb/!drive_c!Dwig!Falcon!Development!Online!RCAServer!semantic.cache]
(invalid-read-syntax . in wrong context), Restart [2 times] ... but it didn't seem to hurt anything.

5. Collapsing: Hmm, maybe you should build up a small example file which you send to me and a step-by-step sceanrio what i must do, to reproduce the behavior (beginning with 1. Start Emacs, 2. activate
ECB...!)

OK:
1) paste the following into a file:
-------------------------------
class foo:
     def __init__(self):
         pass

     def foo1(self):
         pass

     def foo2(self):
         pass

class bar:
     def __init__(self):
         pass

     def bar1(self):
         pass

     def bar2(self):
         pass
-------------------------------
2) start Emacs,
3) activate ECB
4) load the file
5) do what you must to populate the methods buffer ;^)
6) in the methods buffer, collapse the "foo" class
7) move the cursor to the bottom of the file, hit Return

... at this point, after a short delay, I see "foo" expand.
(In fact, any change to the file will make it happen.)


Emacs  : GNU Emacs 22.3.1 (i386-mingw-nt5.1.2600)
  of 2008-09-06 on SOFT-MJASON
Package: ECB: 2.40, CEDET: 1.0pre6, semantic: 2.0pre6, eieio: 1.2,
speedbar: 1.0.2, JDEE: No JDEE

current state:
==============
(setq
  after-save-hook '(ecb-update-methods-after-saving)
  auto-mode-alist '(("\\.dz\\'" nil jka-compr) ("\\.g?z\\(~\\|\\.~[0-9]+~\\)?\\'" nil jka-compr)
                    ("\\.bz2\\(~\\|\\.~[0-9]+~\\)?\\'" nil jka-compr) ("\\.Z\\(~\\|\\.~[0-9]+~\\)?\\'" nil jka-compr)
                    ("\\.~?[0-9]+\\.[0-9][-.0-9]*~?\\'" nil t) ("\\.\\(?:orig\\|in\\|[bB][aA][kK]\\)\\'" nil t)
                    ("\\.lzx\\'" . laszlo-nxml-mumamo-mode) ("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . html-mumamo-mode)
                    ("\\.x[ms]l\\'" . nxml-mode) ("\\.\\(xml\\|xsl\\|rng\\|xul\\|rdf\\)\\'" . nxml-mode)
                    ("\\.xrc$" . nxml-mode) ("xml$" . nxml-mode) ("\\.rnc\\'" . rnc-mode)
                    ("\\.js\\'" . javascript-mode) ("\\.ghtml\\'" .
genshi-nxhtml-mumamo-mode)
                    ("\\.epl\\'" . embperl-nxhtml-mumamo-mode) ("\\.phps\\'" . smarty-nxhtml-mumamo-mode)
                    ("\\.erb\\'" . eruby-nxhtml-mumamo-mode) ("\\.rhtml\\'" . eruby-nxhtml-mumamo-mode)
                    ("\\.djhtml\\'" . django-nxhtml-mumamo-mode) ("\\.asp\\'" . asp-nxhtml-mumamo-mode)
                    ("\\.jsp\\'" . jsp-nxhtml-mumamo-mode) ("\\.phtml\\'" . nxhtml-mumamo-mode)
                    ("\\.php\\'" . nxhtml-mumamo-mode) ("\\.xhtmlf\\'" .
nxhtml-mumamo-mode)
                    ("\\.htmlf\\'" . nxhtml-mumamo-mode) ("\\.xhtml\\'"
. nxhtml-mumamo-mode)
                    ("\\.xhtm\\'" . nxhtml-mumamo-mode) ("\\.html\\'" .
nxhtml-mumamo-mode)
                    ("\\.htm\\'" . nxhtml-mumamo-mode) ("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . nxhtml-mumamo-mode)
                    ("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . nxhtml-mode) ("\\.gnus\\'" . emacs-lisp-mode)
                    ("\\.pyw?$" . python-mode) ("\\.spec$" .
python-mode) ("\\.nsi" . nsi-mode)
                    ("\\.mai$" . mail-mode) ("\\.cls$" .
visual-basic-mode) ("\\.bas$" . visual-basic-mode)
                    ("\\.frm$" . visual-basic-mode) ("\\.\\(xhtml\\|html\\|asp\\|htm\\)" . nxhtml-mode)
                    ("\\.tpl" . nxhtml-mumamo-mode) ("[^/]\\.dired$" .
dired-virtual-mode)
                    ("ProjStep\\.ede" . emacs-lisp-mode) ("Project\\.ede$" . emacs-lisp-mode)
                    ("\\.srt$" . srecode-template-mode) ("\\.wy$" .
wisent-grammar-mode)
                    ("\\.by$" . bovine-grammar-mode) ("\\.vr[hi]?\\'" .
vera-mode) ("\\.py\\'" . python-mode)
                    ("\\.mixal\\'" . mixal-mode) ("\\.x[bdsru]?[cn]?\\'"
. ld-script-mode)
                    ("\\.ld[si]?\\>" . ld-script-mode) ("\\.x[bp]m\\'" .
image-mode-maybe)
                    ("\\.p[bpgn]m\\'" . image-mode) ("\\.tiff?\\'" .
image-mode) ("\\.gif\\'" . image-mode)
                    ("\\.png\\'" . image-mode) ("\\.jpe?g\\'" .
image-mode) ("\\.[Pp][Rr][Oo]\\'" . idlwave-mode)
                    ("/\\.[a-z0-9-]*gdbinit" . gdb-script-mode) ("\\.soa\\'" . dns-mode) ("\\.css\\'" . css-mode)
                    ("\\.gcov\\'" . compilation-mode) ("\\.awk\\'" .
awk-mode)
                    ("\\.\\(u?lpc\\|pike\\|pmod\\(.in\\)?\\)\\'" .
pike-mode) ("\\.idl\\'" . idl-mode)
                    ("\\.java\\'" . java-mode) ("\\.m\\'" . objc-mode) ("\\.lex\\'" . c-mode)
                    ("\\.y\\(acc\\)?\\'" . c-mode) ("\\.[ch]\\'" .
c-mode) ("\\.\\(CC?\\|HH?\\)\\'" . c++-mode)
                    ("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . c++-mode) ("\\.\\(cc\\|hh\\)\\'" . c++-mode)
                    ("\\.bst\\'" . bibtex-style-mode) ("\\.s?html?\\(\\.[a-zA-Z_]+\\)?\\'" . html-mode)
                    ("\\.te?xt\\'" . text-mode) ("\\.[tT]e[xX]\\'" .
tex-mode) ("\\.ins\\'" . tex-mode)
                    ("\\.ltx\\'" . latex-mode) ("\\.dtx\\'" .
doctex-mode) ("\\.el\\'" . emacs-lisp-mode)
                    ("\\.\\(scm\\|stk\\|ss\\|sch\\)\\'" . scheme-mode) ("\\.l\\'" . lisp-mode)
                    ("\\.li?sp\\'" . lisp-mode) ("\\.[fF]\\'" .
fortran-mode) ("\\.for\\'" . fortran-mode)
                    ("\\.p\\'" . pascal-mode) ("\\.pas\\'" .
pascal-mode) ("\\.ad[abs]\\'" . ada-mode)
                    ("\\.ad[bs].dg\\'" . ada-mode) ("\\.\\([pP]\\([Llm]\\|erl\\|od\\)\\|al\\)\\'" . perl-mode)
                    ("Imakefile\\'" . makefile-imake-mode) ("Makeppfile\\(?:\\.mk\\)?\\'" . makefile-makepp-mode)
                    ("\\.makepp\\'" . makefile-makepp-mode) ("\\.mk\\'"
. makefile-gmake-mode)
                    ("[Mm]akefile\\'" . makefile-gmake-mode) ("\\.am\\'"
. makefile-automake-mode)
                    ("\\.texinfo\\'" . texinfo-mode) ("\\.te?xi\\'" .
texinfo-mode) ("\\.[sS]\\'" . asm-mode)
                    ("\\.asm\\'" . asm-mode) ("[cC]hange\\.?[lL]og?\\'"
. change-log-mode)
                    ("[cC]hange[lL]og[-.][0-9]+\\'" . change-log-mode) ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode)
                    ("\\.scm\\.[0-9]*\\'" . scheme-mode) ("\\.[ck]?sh\\'\\|\\.shar\\'\\|/\\.z?profile\\'" . sh-mode)
                    ("\\.bash\\'" . sh-mode)
 
("\\(/\\|\\`\\)\\.\\(bash_profile\\|z?login\\|bash_login\\|z?logout\\)\\'"
. sh-mode)
 
("\\(/\\|\\`\\)\\.\\(bash_logout\\|shrc\\|[kz]shrc\\|bashrc\\|t?cshrc\\|esrc\\)\\'"
. sh-mode)
 
("\\(/\\|\\`\\)\\.\\([kz]shenv\\|xinitrc\\|startxrc\\|xsession\\)\\'" .
sh-mode)
                    ("\\.m?spec\\'" . sh-mode) ("\\.m[mes]\\'" .
nroff-mode) ("\\.man\\'" . nroff-mode)
                    ("\\.sty\\'" . latex-mode) ("\\.cl[so]\\'" .
latex-mode) ("\\.bbl\\'" . latex-mode)
                    ("\\.bib\\'" . bibtex-mode) ("\\.sql\\'" . sql-mode) ("\\.m[4c]\\'" . m4-mode)
                    ("\\.mf\\'" . metafont-mode) ("\\.mp\\'" .
metapost-mode) ("\\.vhdl?\\'" . vhdl-mode)
                    ("\\.article\\'" . text-mode) ("\\.letter\\'" .
text-mode) ("\\.i?tcl\\'" . tcl-mode)
                    ("\\.exp\\'" . tcl-mode) ("\\.itk\\'" . tcl-mode) ("\\.icn\\'" . icon-mode)
                    ("\\.sim\\'" . simula-mode) ("\\.mss\\'" .
scribe-mode) ("\\.f9[05]\\'" . f90-mode)
                    ("\\.indent\\.pro\\'" . fundamental-mode) ("\\.pro\\'" . idlwave-mode)
                    ("\\.prolog\\'" . prolog-mode) ("\\.tar\\'" . tar-mode)
 
("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\)\\'" . archive-mode)
 
("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . archive-mode)
                    ("\\.\\(sx[dmicw]\\|odt\\)\\'" . archive-mode) ("\\`/tmp/Re" . text-mode)
                    ("/Message[0-9]*\\'" . text-mode) ("\\.zone\\'" .
zone-mode) ("\\`/tmp/fol/" . text-mode)
                    ("\\.oak\\'" . scheme-mode) ("\\.sgml?\\'" .
sgml-mode) ("\\.x[ms]l\\'" . xml-mode)
                    ("\\.dtd\\'" . sgml-mode) ("\\.ds\\(ss\\)?l\\'" .
dsssl-mode) ("\\.js\\'" . java-mode)
                    ("\\.x[bp]m\\'" . c-mode) ("\\.d?v\\'" . verilog-mode)
                    ("[]>:/\\]\\..*\\(emacs\\|gnus\\|viper\\)\\'" .
emacs-lisp-mode)
                    ("\\`\\..*emacs\\'" . emacs-lisp-mode) ("[:/]_emacs\\'" . emacs-lisp-mode)
                    ("/crontab\\.X*[0-9]+\\'" . shell-script-mode) ("\\.ml\\'" . lisp-mode) ("\\.asd\\'" . lisp-mode)
                    ("\\.\\(asn\\|mib\\|smi\\)\\'" . snmp-mode) ("\\.\\(as\\|mi\\|sm\\)2\\'" . snmpv2-mode)
                    ("\\.\\(diffs?\\|patch\\|rej\\)\\'" . diff-mode) ("\\.\\(dif\\|pat\\)\\'" . diff-mode)
                    ("\\.[eE]?[pP][sS]\\'" . ps-mode) ("configure\\.\\(ac\\|in\\)\\'" . autoconf-mode)
                    ("BROWSE\\'" . ebrowse-tree-mode) ("\\.ebrowse\\'" .
ebrowse-tree-mode)
                    ("#\\*mail\\*" . mail-mode) ("\\.g\\'" . antlr-mode) ("\\.ses\\'" . ses-mode)
                    ("\\.\\(soa\\|zone\\)\\'" . dns-mode) ("\\.docbook\\'" . sgml-mode) ("\\.com\\'" . dcl-mode)
                    ("/config\\.\\(?:bat\\|log\\)\\'" . fundamental-mode)
 
("\\.\\(?:[iI][nN][iI]\\|[lL][sS][tT]\\|[rR][eE][gG]\\|[sS][yY][sS]\\)\\'"
. conf-mode)
                    ("\\.\\(?:desktop\\|la\\)\\'" . conf-unix-mode) ("\\.ppd\\'" . conf-ppd-mode)
                    ("java.+\\.conf\\'" . conf-javaprop-mode)
                    ("\\.properties\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" .
conf-javaprop-mode)
 
("[/.]c\\(?:on\\)?f\\(?:i?g\\)?\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" .
conf-mode-maybe)
 
("\\`/etc/\\(?:DIR_COLORS\\|ethers\\|.?fstab\\|.*hosts\\|lesskey\\|login\\.?de\\(?:fs\\|vperm\\)\\|magic\\|mtab\\|pam\\.d/.*\\|permissions\\(?:\\.d/.+\\)?\\|protocols\\|rpc\\|services\\)\\'"
. conf-space-mode)
 
("\\`/etc/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'"
. conf-mode)
                    ("[cC]hange[lL]og[-.][-0-9a-z]+\\'" . change-log-mode)
 
("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode)
 
("/\\.\\(?:enigma\\|gltron\\|gtk\\|hxplayer\\|net\\|neverball\\|qt/.+\\|realplayer\\|scummvm\\|sversion\\|sylpheed/.+\\|xmp\\)rc\\'"
. conf-mode)
 
("/\\.\\(?:gdbtkinit\\|grip\\|orbital/.+txt\\|rhosts\\|tuxracer/options\\)\\'"
. conf-mode)
                    ("/\\.?X\\(?:default\\|resource\\|re\\)s\\>" .
conf-xdefaults-mode)
                    ("/X11.+app-defaults/" . conf-xdefaults-mode) ("/X11.+locale/.+/Compose\\'" . conf-colon-mode)
                    ("/X11.+locale/compose\\.dir\\'" .
conf-javaprop-mode) ("\\.[1-9]\\'" . nroff-mode)
                    ("\\.tgz\\'" . tar-mode) ("\\.tbz\\'" . tar-mode))
  c++-mode-hook '(semantic-default-c-setup)
  c-mode-common-hook nil
  c-mode-hook '(semantic-default-c-setup)
  compilation-mode-hook nil
  compilation-window-height nil
  ediff-quit-hook '(ediff-cleanup-mess ecb-ediff-quit-hook)
  help-mode-hook nil
  java-mode-hook '(wisent-java-default-setup)
  max-lisp-eval-depth 1000
  max-specpdl-size 3000
  post-command-hook '(global-font-lock-mode-check-buffers
mode-local-post-major-mode-change
                      nxhtml-global-minor-mode-check-buffers
ecb-handle-major-mode-visibilty
                      ecb-layout-post-command-hook)
  pre-command-hook '(ecb-layout-pre-command-hook tooltip-hide)
  system-type 'windows-nt
  temp-buffer-max-height '(lambda (buffer) (/ (- (frame-height) 2) 2))
  truncate-lines nil
  truncate-partial-width-windows t
  window-system 'w32
  semantic-after-partial-cache-change-hook
'(semanticdb-partial-synchronize-table ecb-update-after-partial-reparse)
  semantic-after-toplevel-cache-change-hook
'(semanticdb-synchronize-table ecb-rebuild-methods-buffer-with-tagcache)
  semantic-format-face-alist '((function . font-lock-function-name-face) (variable . font-lock-variable-name-face)
                               (type . font-lock-type-face) (include .
font-lock-constant-face)
                               (package . font-lock-constant-face) (label . font-lock-string-face)
                               (comment . font-lock-comment-face) (keyword . font-lock-keyword-face)
                               (abstract . italic) (static . underline) (documentation . font-lock-doc-face))
  semantic-orphaned-member-metaparent-type "class"
  semantic-uml-colon-string " : "
  speedbar-dynamic-tags-function-list '((semantic-sb-fetch-tag-table .
semantic-sb-insert-tag-table)
                                        (speedbar-fetch-dynamic-imenu .
speedbar-insert-imenu-list)
                                        (speedbar-fetch-dynamic-etags .
speedbar-insert-etags-list))
  speedbar-fetch-etags-arguments '("-D" "-I" "-o" "-")
  speedbar-fetch-etags-command "etags"
  speedbar-fetch-etags-parse-list
'(("\\.\\([cChH]\\|c\\+\\+\\|cpp\\|cc\\|hh\\|java\\|cxx\\|hxx\\)\\'" .
                                     speedbar-parse-c-or-c++tag)
                                    ("^\\.emacs$\\|.\\(el\\|l\\|lsp\\)\\'" .
 
"def[^i]+\\s-+\\(\\(\\w\\|[-_]\\)+\\)\\s-*")
                                    ("\\.tex\\'" .
speedbar-parse-tex-string)
                                    ("\\.p\\'" .
 
"\\(\\(FUNCTION\\|function\\|PROCEDURE\\|procedure\\)\\s-+\\([a-zA-Z0-9_.:]+\\)\\)\\s-*(?^?")
                                    )
  speedbar-tag-group-name-minimum-length 4
  speedbar-tag-hierarchy-method '(speedbar-prefix-group-tag-hierarchy
speedbar-trim-words-tag-hierarchy)
  speedbar-tag-regroup-maximum-length 10
  speedbar-tag-split-minimum-length 20
  ecb-adviced-function-sets '((ecb-compatibility-advices)
(ecb-winman-not-supported-function-advices)
                              (ecb-winman-winring-adviced-functions)
(ecb-winman-escreen-adviced-functions)
                              (ecb-eshell-adviced-functions)
(ecb-methods-browser-advices) (ecb-vc-advices)
                              (ecb-permanent-adviced-layout-functions)
(ecb-layout-basic-adviced-functions)
                              (ecb-speedbar-adviced-functions)
(ecb-always-disabled-advices))
  ecb-adviced-functions '((view-mode-exit . around) (tmm-prompt .
around) (scroll-all-function-all . around)
                          (count-windows . around) (master-says .
around) (electric-buffer-list . after)
                          (electric-buffer-list . before) (electric-command-history . before)
                          (Electric-pop-up-window . around) (one-window-p . around) (bs-show . before)
                          (winner-undo . before) (winner-redo . before) (winner-mode . before)
                          (winring-initialize . after) (winring-save-current-configuration . before)
                          (winring-restore-configuration . before) (winring-duplicate-configuration . before)
                          (winring-set-name . after) (escreen-save-current-screen-configuration . before)
                          (eshell . around) (custom-save-all . around) (make-indirect-buffer . after)
                          (vc-checkin . after) (clearcase-sync-from-disk . after) (set-window-configuration . after)
                          (current-window-configuration . after) (balance-windows . around) (walk-windows . around)
                          (other-window-for-scrolling . around) (switch-to-buffer . around)
                          (switch-to-buffer-other-window . around) (split-window . around) (split-window . before)
                          (split-window-vertically . around) (split-window-horizontally . around)
                          (delete-other-windows . around) (delete-other-windows . before) (delete-window . around)
                          (delete-window . before) (delete-windows-on .
around) (other-window . around)
                          (display-buffer . around) (get-lru-window .
before) (get-largest-window . before)
                          (pop-to-buffer . around) (resize-temp-buffer-window . around)
                          (shrink-window-if-larger-than-buffer . around) (shrink-window . around)
                          (enlarge-window . around) (mouse-drag-mode-line . around)
                          (mouse-drag-vertical-line . around) (scroll-other-window . around)
                          (compilation-set-window-height . around) (delete-frame . around)
                          (dframe-select-attached-frame . after) (dframe-mouse-set-point . around)
                          (speedbar-get-focus . around) (speedbar-frame-mode . around) (speedbar-click . around))
  ecb-autocontrol/sync-fcn-register '((ecb-symboldef-buffer-sync .
ecb-symboldef-buffer-name)
                                      (ecb-analyse-buffer-sync .
ecb-analyse-buffer-name) (ecb-eshell-buffer-sync)
                                      (ecb-tag-sync .
ecb-methods-buffer-name) (ecb-basic-buffer-sync)
 
(ecb-repair-only-ecb-window-layout) (ecb-layout-post-command-hook)
                                      (ecb-layout-pre-command-hook)
(ecb-handle-major-mode-visibilty)
 
(ecb-compilation-buffer-list-changed-p)
                                      (ecb-speedbar-buffer-sync .
ecb-speedbar-buffer-name) (ecb-stealthy-updates)
                                      (ecb-monitor-autocontrol-functions))
  ecb-buffer-setfunction-registration '((" *ECB History*" .
ecb-set-history-buffer)
                                        (" *ECB Methods*" .
ecb-set-methods-buffer)
                                        (" *ECB Sources*" .
ecb-set-sources-buffer)
                                        (" *ECB Directories*" .
ecb-set-directories-buffer))
  ecb-current-maximized-ecb-buffer-name nil
  ecb-edit-area-creators '((0 . split-window-vertically))
  ecb-idle-timer-alist '((ecb-stealthy-updates . [nil 0 1 0 t ecb-stealthy-updates nil t])
                         (ecb-monitor-autocontrol-functions . [nil 0 1 0 t ecb-monitor-autocontrol-functions nil t])
                         (ecb-repair-only-ecb-window-layout . [t 0 0 500000 t ecb-repair-only-ecb-window-layout nil t])
                         (ecb-compilation-buffer-list-changed-p .
                          [t 0 0 250000 t ecb-compilation-buffer-list-changed-p nil t])
                         (ecb-basic-buffer-sync . [t 0 0 250000 t ecb-basic-buffer-sync nil t])
                         (ecb-tag-sync . [t 0 0 250000 t ecb-tag-sync nil t]))
  ecb-last-window-config-before-deactivation nil
  ecb-minor-mode t
  ecb-path-selected-directory #("c:/Dwig/Scripts" 0 15 (help-echo
"Mouse-2 toggles maximizing, mouse-3 displays a popup-menu"))
  ecb-path-selected-source nil
  ecb-post-command-hooks '(ecb-handle-major-mode-visibilty
ecb-layout-post-command-hook)
  ecb-pre-command-hooks '(ecb-layout-pre-command-hook)
  ecb-special-ecb-buffers-of-current-layout '(" *ECB Directories*" "
*ECB Sources*" " *ECB Methods*" " *ECB History*")
  ecb-stealthy-function-list '(ecb-stealthy-vc-check-in-directories-buf
ecb-stealthy-vc-check-in-sources-buf
                               ecb-stealthy-vc-check-in-history-buf
ecb-stealthy-ro-check-in-sources-buf
                               ecb-stealthy-ro-check-in-directories-buf
ecb-stealthy-empty-dir-check)
  ecb-stealthy-function-state-alist
'((ecb-stealthy-vc-check-in-directories-buf . done)
 
(ecb-stealthy-vc-check-in-sources-buf . done)
 
(ecb-stealthy-vc-check-in-history-buf . done)
 
(ecb-stealthy-ro-check-in-sources-buf . done)
 
(ecb-stealthy-ro-check-in-directories-buf . done)
                                      (ecb-stealthy-empty-dir-check . done))
  ecb-toggle-layout-state 0
  ecb-tree-buffer-creators '((ecb-analyse-buffer-name .
ecb-create-analyse-tree-buffer)
                             (ecb-methods-buffer-name .
ecb-create-methods-tree-buffer)
                             (ecb-history-buffer-name .
ecb-create-history-tree-buffer)
                             (ecb-sources-buffer-name .
ecb-create-sources-tree-buffer)
                             (ecb-directories-buffer-name .
ecb-create-directories-tree-buffer))
  ecb-tree-buffers '((" *ECB Directories*" .
ecb-directories-buffer-name) (" *ECB Sources*" . ecb-sources-buffer-name)
                     (" *ECB History*" . ecb-history-buffer-name) ("
*ECB Methods*" . ecb-methods-buffer-name)
                     (" *ECB Analyse*" . ecb-analyse-buffer-name))
  ecb-windows-hidden nil
  ecb-activate-before-layout-draw-hook nil
  ecb-activate-before-new-frame-created-hook nil
  ecb-activate-hook '(ecb-eshell-auto-activate-hook)
  ecb-activation-selects-ecb-frame-if-already-active 'ask
  ecb-add-path-for-not-matching-files '(t)
  ecb-advice-window-functions-signal-error nil
  ecb-after-directory-change-hook nil
  ecb-analyse-bucket-element-face 'ecb-analyse-bucket-element-face
  ecb-analyse-bucket-node-face 'ecb-analyse-bucket-node-face
  ecb-analyse-buffer-after-create-hook nil
  ecb-analyse-buffer-name " *ECB Analyse*"
  ecb-analyse-buffer-sync 'basic
  ecb-analyse-buffer-sync-delay 2
  ecb-analyse-buffer-sync-hook nil
  ecb-analyse-collapsed-buckets nil
  ecb-analyse-face 'ecb-default-highlight-face
  ecb-analyse-fontified-buckets '("Context" "Function")
  ecb-analyse-gen-tag-info-fn nil
  ecb-analyse-general-face 'ecb-default-general-face
  ecb-analyse-show-node-info '(if-too-long . name)
  ecb-analyse-show-tag-info-fn 'message
  ecb-auto-activate nil
  ecb-auto-compatibility-check t
  ecb-auto-expand-directory-tree 'best
  ecb-auto-expand-tag-tree 'expand-spec
  ecb-auto-expand-tag-tree-collapse-other nil
  ecb-auto-save-before-etags-methods-rebuild t
  ecb-auto-update-methods-after-save t
  ecb-basic-buffer-sync '(Info-mode dired-mode)
  ecb-basic-buffer-sync-delay 0.25
  ecb-basic-buffer-sync-hook nil
  ecb-before-activate-hook nil
  ecb-before-deactivate-hook nil
  ecb-bucket-node-display '("" "" ecb-bucket-node-face)
  ecb-cache-directory-contents '(("^/\\([^:/]*@\\)?\\([^@:/]*\\):.*" .
0) (".*" . 50))
  ecb-cache-directory-contents-not nil
  ecb-change-layout-preserves-compwin-state t
  ecb-clear-caches-before-activate nil
  ecb-common-tree-buffer-after-create-hook nil
  ecb-compilation-buffer-names '(("*Calculator*") ("*vc*") ("*vc-diff*")
("*Apropos*") ("*Occur*") ("*shell*")
                                 ("\\*[cC]ompilation.*\\*" . t) ("\\*i?grep.*\\*" . t) ("*JDEE Compile Server*")
                                 ("*Help*") ("*Completions*")
("*Backtrace*") ("*Compile-log*") ("*bsh*")
                                 ("*Messages*"))
  ecb-compilation-major-modes '(compilation-mode)
  ecb-compilation-predicates '(comint-check-proc)
  ecb-compile-window-height nil
  ecb-compile-window-prevent-shrink-below-height t
  ecb-compile-window-temporally-enlarge 'after-display
  ecb-compile-window-width 'frame
  ecb-create-layout-file "~/.ecb-user-layouts.el"
  ecb-create-layout-frame-height 42
  ecb-create-layout-frame-width 110
  ecb-deactivate-hook nil
  ecb-debug-mode nil
  ecb-default-tag-filter nil
  ecb-directories-buffer-after-create-hook nil
  ecb-directories-buffer-name " *ECB Directories*"
  ecb-directories-general-face 'ecb-default-general-face
  ecb-directories-menu-sorter nil
  ecb-directories-menu-user-extension '(("Version Control"
(ecb-dir-popup-cvs-status "CVS Status")
                                         (ecb-dir-popup-cvs-examine "CVS
Examine")
                                         (ecb-dir-popup-cvs-update "CVS
Update"))
                                        )
  ecb-directories-menu-user-extension-function 'ignore
  ecb-directories-show-node-info '(if-too-long . path)
  ecb-directories-update-speedbar 'auto
  ecb-directory-face 'ecb-default-highlight-face
  ecb-directory-not-accessible-face 'ecb-directory-not-accessible-face
  ecb-display-default-dir-after-start t
  ecb-display-image-icons-for-semantic-tags t
  ecb-enlarged-compilation-window-max-height 'best
  ecb-eshell-auto-activate nil
  ecb-eshell-buffer-sync 'basic
  ecb-eshell-buffer-sync-delay 'basic
  ecb-eshell-enlarge-when-eshell t
  ecb-eshell-fit-window-to-command-output t
  ecb-exclude-parents-regexps nil
  ecb-excluded-directories-regexps '("^\\(CVS\\|\\.[^xX]*\\)$")
  ecb-expand-methods-switch-off-auto-expand t
  ecb-find-external-tag-functions '((default
ecb-search-tag-by-semantic-analyzer) (jde-mode ecb-jde-show-class-source))
  ecb-fix-window-size nil
  ecb-font-lock-tags t
  ecb-force-reparse-when-semantic-idle-scheduler-off nil
  ecb-grep-function 'lgrep
  ecb-grep-recursive-function 'rgrep
  ecb-help-html-path "./html-help/ecb.html"
  ecb-help-info-path "./info-help/ecb.info"
  ecb-hide-ecb-windows-after-hook nil
  ecb-hide-ecb-windows-before-hook nil
  ecb-highlight-tag-with-point 'highlight-scroll
  ecb-highlight-tag-with-point-delay 0.25
  ecb-history-bucket-node-face 'ecb-history-bucket-node-face
  ecb-history-buffer-after-create-hook nil
  ecb-history-buffer-name " *ECB History*"
  ecb-history-dead-buffer-face 'ecb-history-dead-buffer-face
  ecb-history-exclude-file-regexps '("TAGS$" "semantic\\.cache$")
  ecb-history-face 'ecb-default-highlight-face
  ecb-history-general-face 'ecb-default-general-face
  ecb-history-indirect-buffer-face 'ecb-history-indirect-buffer-face
  ecb-history-make-buckets 'directory
  ecb-history-menu-sorter nil
  ecb-history-menu-user-extension '(("Version control"
(ecb-file-popup-ediff-revision "Ediff against revision")
                                     ("---") (ecb-file-popup-vc-next-action "Check In/Out")
                                     (ecb-file-popup-vc-log "Revision
history")
                                     (ecb-file-popup-vc-annotate "Annotate")
                                     (ecb-file-popup-vc-diff "Diff against last version") ("---")
                                     (ecb-file-popup-vc-refresh-file "Recompute state for file")
 
(ecb-file-popup-vc-refresh-all-files "Recompute state for whole history"))
                                    )
  ecb-history-menu-user-extension-function 'ignore
  ecb-history-show-node-info '(always . name-path)
  ecb-history-sort-ignore-case t
  ecb-history-sort-method 'name
  ecb-history-stick-indirect-buffers-to-basebuffer t
  ecb-host-accessible-check-valid-time nil
  ecb-ignore-display-buffer-function 'always
  ecb-ignore-pop-up-frames 'compile-window
  ecb-ignore-special-display 'compile-window
  ecb-jde-set-directories-buffer-to-jde-sourcepath nil
  ecb-key-map '("C-c ." (t "fh" ecb-history-filter) (t "fs"
ecb-sources-filter) (t "fm" ecb-methods-filter)
                (t "fr" ecb-methods-filter-regexp) (t "ft"
ecb-methods-filter-tagclass)
                (t "fc" ecb-methods-filter-current-type) (t "fp"
ecb-methods-filter-protection)
                (t "fn" ecb-methods-filter-nofilter) (t "fl"
ecb-methods-filter-delete-last)
                (t "ff" ecb-methods-filter-function) (t "p"
ecb-nav-goto-previous) (t "n" ecb-nav-goto-next)
                (t "lc" ecb-change-layout) (t "lr" ecb-redraw-layout) (t "lw" ecb-toggle-ecb-windows)
                (t "lt" ecb-toggle-layout) (t "s" ecb-window-sync) (t "r" ecb-rebuild-methods-buffer)
                (t "a" ecb-toggle-auto-expand-tag-tree) (t "x"
ecb-expand-methods-nodes) (t "h" ecb-show-help)
                (t "gl" ecb-goto-window-edit-last) (t "g1"
ecb-goto-window-edit1) (t "g2" ecb-goto-window-edit2)
                (t "gc" ecb-goto-window-compilation) (t "gd"
ecb-goto-window-directories)
                (t "gs" ecb-goto-window-sources) (t "gm"
ecb-goto-window-methods) (t "gh" ecb-goto-window-history)
                (t "ga" ecb-goto-window-analyse) (t "gb"
ecb-goto-window-speedbar)
                (t "md" ecb-maximize-window-directories) (t "ms"
ecb-maximize-window-sources)
                (t "mm" ecb-maximize-window-methods) (t "mh"
ecb-maximize-window-history)
                (t "ma" ecb-maximize-window-analyse) (t "mb"
ecb-maximize-window-speedbar) (t "e" eshell)
                (t "o" ecb-toggle-scroll-other-window-scrolls-compile)
(t "\\" ecb-toggle-compile-window)
                (t "/" ecb-toggle-compile-window-height) (t ","
ecb-cycle-maximized-ecb-buffers)
                (t "." ecb-cycle-through-compilation-buffers))
  ecb-kill-buffer-clears-history nil
  ecb-layout-always-operate-in-edit-window '(switch-to-buffer)
  ecb-layout-debug-mode nil
  ecb-layout-name "left8"
  ecb-layout-window-sizes '(("left8" (0.327683615819209 .
0.05263157894736842)
                             (0.327683615819209 . 0.07894736842105263)
(0.327683615819209 . 0.8026315789473685)
                             (0.327683615819209 . 0.05263157894736842))
                            )
  ecb-major-modes-show-or-hide '(nil)
  ecb-maximize-ecb-window-after-selection nil
  ecb-maximize-next-after-maximized-select nil
  ecb-method-face 'ecb-default-highlight-face
  ecb-method-non-semantic-face 'speedbar-tag-face
  ecb-methods-buffer-after-create-hook nil
  ecb-methods-buffer-name " *ECB Methods*"
  ecb-methods-filter-replace-existing 'never
  ecb-methods-general-face 'ecb-default-general-face
  ecb-methods-menu-sorter nil
  ecb-methods-menu-user-extension nil
  ecb-methods-menu-user-extension-function 'ignore
  ecb-methods-nodes-collapse-spec 'all
  ecb-methods-nodes-expand-spec '(type variable function section nonterminal keyword token)
  ecb-methods-separate-prototypes t
  ecb-methods-show-node-info '(if-too-long . name+type)
  ecb-minor-mode-text ""
  ecb-mode-line-data '((ecb-directories-buffer-name . sel-dir) (ecb-sources-buffer-name . sel-dir)
                       (ecb-methods-buffer-name . sel-source) (ecb-analyse-buffer-name . sel-source)
                       (ecb-history-buffer-name .
                        #("History" 0 7 (help-echo "Mouse-2 toggles maximizing, mouse-3 displays a popup-menu")))
                       )
  ecb-mode-line-data-face 'ecb-mode-line-data-face
  ecb-mode-line-display-window-number t
  ecb-mode-line-prefix-face 'ecb-mode-line-prefix-face
  ecb-mode-line-prefixes '((ecb-directories-buffer-name)
                           (ecb-sources-buffer-name .
ecb-sources-filter-modeline-prefix)
                           (ecb-methods-buffer-name .
ecb-methods-filter-modeline-prefix)
                           (ecb-history-buffer-name .
ecb-history-filter-modeline-prefix))
  ecb-mode-line-win-nr-face 'ecb-mode-line-win-nr-face
  ecb-mouse-click-destination 'last-point
  ecb-new-ecb-frame nil
  ecb-non-semantic-exclude-modes '(sh-mode fundamental-mode text-mode)
  ecb-non-semantic-methods-initial-expand nil
  ecb-non-semantic-parsing-function nil
  ecb-options-version "2.40"
  ecb-other-window-behavior 'smart
  ecb-ping-options '("-n" "2" "HOST")
  ecb-ping-program "ping"
  ecb-post-process-semantic-taglist '((c++-mode
ecb-group-function-tags-with-parents)
                                      (emacs-lisp-mode
ecb-group-function-tags-with-parents)
                                      (c-mode ecb-filter-c-prototype-tags))
  ecb-prescan-directories-exclude-regexps nil
  ecb-prescan-directories-for-emptyness 'unless-remote
  ecb-primary-secondary-mouse-buttons 'mouse-2--C-mouse-2
  ecb-process-non-semantic-files t
  ecb-read-only-check-exclude-regexps nil
  ecb-rebuild-non-semantic-methods-before-hook nil
  ecb-redraw-layout-after-hook '(ecb-eshell-recenter)
  ecb-redraw-layout-before-hook nil
  ecb-redraw-layout-quickly nil
  ecb-run-ediff-in-ecb-frame t
  ecb-scroll-other-window-scrolls-compile-window nil
  ecb-select-edit-window-on-redraw nil
  ecb-show-ecb-windows-after-hook nil
  ecb-show-ecb-windows-before-hook nil
  ecb-show-help-format 'info
  ecb-show-only-positioned-tags nil
  ecb-show-source-file-extension t
  ecb-show-sources-in-directories-buffer '("left7" "left13" "left14"
"left15")
  ecb-show-tags '((default (include collapsed nil) (parent collapsed
nil) (type flattened nil)
                   (variable collapsed access) (function flattened
access) (label hidden nil) (t collapsed nil))
                  (c++-mode (include collapsed nil) (parent collapsed
nil) (type flattened nil)
                   (variable collapsed access) (function flattened
access) (function collapsed access)
                   (label hidden nil) (t collapsed nil))
                  (c-mode (include collapsed nil) (parent collapsed nil) (type flattened nil)
                   (variable collapsed access) (function flattened
access) (function collapsed access)
                   (label hidden nil) (t collapsed nil))
                  (bovine-grammar-mode (keyword collapsed name) (token collapsed name) (nonterminal flattened name)
                   (rule flattened name) (t collapsed nil))
                  (wisent-grammar-mode (keyword collapsed name) (token collapsed name) (nonterminal flattened name)
                   (rule flattened name) (t collapsed nil))
                  (texinfo-mode (section flattened nil) (def collapsed
name) (t collapsed nil)))
  ecb-source-face 'ecb-default-highlight-face
  ecb-source-file-regexps '((".*"
 
("\\(^\\(\\.\\|#\\)\\|\\(~$\\|\\.\\(elc\\|obj\\|o\\|class\\|lib\\|dll\\|a\\|so\\|cache\\)$\\)\\)")
                             ("^\\.\\(emacs\\|gnus\\)$"))
                            )
  ecb-source-in-directories-buffer-face
'ecb-source-in-directories-buffer-face
  ecb-source-path '("C:\\Dwig\\Falcon\\Development\\Client"
"C:\\Dwig\\Falcon\\Development\\Online"
                    "C:\\Dwig\\Projects"
"C:\\Dwig\\Falcon\\Development\\StandardDatabase\\DBSetup")
  ecb-source-read-only-face 'ecb-source-read-only-face
  ecb-sources-buffer-after-create-hook nil
  ecb-sources-buffer-name " *ECB Sources*"
  ecb-sources-exclude-cvsignore nil
  ecb-sources-general-face 'ecb-default-general-face
  ecb-sources-menu-sorter nil
  ecb-sources-menu-user-extension '(("Version control"
(ecb-file-popup-ediff-revision "Ediff against revision")
                                     ("---") (ecb-file-popup-vc-next-action "Check In/Out")
                                     (ecb-file-popup-vc-log "Revision
history")
                                     (ecb-file-popup-vc-annotate "Annotate")
                                     (ecb-file-popup-vc-diff "Diff against last version") ("---")
                                     (ecb-file-popup-vc-refresh-file "Recompute state for file")
                                     (ecb-file-popup-vc-refresh-dir "Recompute state for whole dir"))
                                    )
  ecb-sources-menu-user-extension-function 'ignore
  ecb-sources-perform-read-only-check 'unless-remote
  ecb-sources-show-node-info '(if-too-long . name)
  ecb-sources-sort-ignore-case t
  ecb-sources-sort-method 'name
  ecb-speedbar-before-activate-hook nil
  ecb-speedbar-buffer-sync 'basic
  ecb-speedbar-buffer-sync-delay 'basic
  ecb-speedbar-buffer-sync-hook nil
  ecb-split-edit-window-after-start 'before-deactivation
  ecb-stealthy-tasks-delay 1
  ecb-symboldef-buffer-name " *ECB Symboldefinition*"
  ecb-symboldef-buffer-sync 'basic
  ecb-symboldef-buffer-sync-delay 'basic
  ecb-symboldef-buffer-sync-hook nil
  ecb-symboldef-find-functions '((lisp-interaction-mode .
ecb-symboldef-find-lisp-doc)
                                 (lisp-mode . ecb-symboldef-find-lisp-doc)
                                 (emacs-lisp-mode .
ecb-symboldef-find-lisp-doc)
                                 (default . ecb-symboldef-find-definition))
  ecb-tag-display-function '((default . ecb-format-tag-uml-prototype))
  ecb-tag-header-face 'ecb-tag-header-face
  ecb-tag-jump-sets-mark t
  ecb-tag-visit-post-actions '((default ecb-tag-visit-smart-tag-start
ecb-tag-visit-highlight-tag-header)
                               (java-mode ecb-tag-visit-goto-doc-start) (jde-mode ecb-tag-visit-goto-doc-start))
  ecb-tip-of-the-day t
  ecb-tip-of-the-day-file "~/.ecb-tip-of-day.el"
  ecb-toggle-layout-sequence '("left9" "left14")
  ecb-tree-buffer-style 'image
  ecb-tree-do-not-leave-window-after-select nil
  ecb-tree-easy-hor-scroll 5
  ecb-tree-expand-symbol-before t
  ecb-tree-guide-line-face 'ecb-tree-guide-line-face
  ecb-tree-image-icons-directories
'("c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb-images/default/height-17"
                                     (ecb-directories-buffer-name .
 
"c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb-images/directories/height-17")
                                     (ecb-sources-buffer-name .
 
"c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb-images/sources/height-14_to_21")
                                     (ecb-methods-buffer-name .
 
"c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb-images/methods/height-14_to_21")
                                     )
  ecb-tree-incremental-search 'prefix
  ecb-tree-indent 4
  ecb-tree-make-parent-node-sticky t
  ecb-tree-mouse-action-trigger 'button-release
  ecb-tree-navigation-by-arrow t
  ecb-tree-stickynode-indent-string " "
  ecb-tree-truncate-lines '(ecb-directories-buffer-name ecb-sources-buffer-name ecb-methods-buffer-name
                            ecb-history-buffer-name ecb-analyse-buffer-name)
  ecb-truncate-long-names t
  ecb-type-tag-display nil
  ecb-type-tag-expansion '((default "class" "interface" "group"
"namespace") (c-mode "struct"))
  ecb-use-recursive-edit nil
  ecb-use-speedbar-instead-native-tree-buffer nil
  ecb-vc-directory-exclude-regexps nil
  ecb-vc-enable-support nil
  ecb-vc-state-mapping '((up-to-date . up-to-date) (edited . edited) (locally-modified . edited)
                         (needs-patch . needs-patch) (needs-checkout .
needs-patch) (needs-merge . needs-merge)
                         (unlocked-changes . unlocked-changes) (added .
added) (locally-added . added)
                         (ignored . ignored) (unknown . unknown))
  ecb-vc-supported-backends nil
  ecb-version-check t
  ecb-windows-height 0.33
  ecb-windows-width 0.33
  ecb-winman-escreen-number 1
  ecb-winman-winring-name "ECB"
  )




-----------------------------------------------------
The attributes of the ECB-faces are:

ecb-mode-line-data-face: nil
ecb-mode-line-prefix-face: (:foreground forestgreen)
ecb-mode-line-win-nr-face: (:weight bold)
ecb-bucket-node-face: (:inherit ecb-default-general-face :weight bold)
ecb-type-tag-group-face: (:foreground dim gray :weight bold)
ecb-type-tag-enum-face: (:weight bold)
ecb-type-tag-union-face: (:weight bold)
ecb-type-tag-typedef-face: (:weight bold)
ecb-type-tag-struct-face: (:weight bold)
ecb-type-tag-interface-face: (:weight bold)
ecb-type-tag-class-face: (:weight bold)
ecb-directory-not-accessible-face: (:inherit ecb-directories-general-face :foreground gray60)
ecb-source-read-only-face: (:inherit ecb-default-general-face :slant italic)
ecb-source-in-directories-buffer-face: (:inherit ecb-directories-general-face :foreground medium blue)
ecb-tag-header-face: (:background SeaGreen1)
ecb-analyse-bucket-node-face: (:inherit ecb-bucket-node-face :weight bold)
ecb-analyse-bucket-element-face: (:inherit ecb-analyse-general-face :foreground brown)
ecb-analyse-general-face: (:inherit ecb-default-general-face :height 1.0)
ecb-analyse-face: (:inherit ecb-default-highlight-face :background cornflower blue :foreground yellow)
ecb-history-face: (:inherit ecb-default-highlight-face :background cornflower blue :foreground yellow)
ecb-method-non-semantic-face: (:inherit ecb-methods-general-face :foreground brown)
ecb-method-face: (:inherit ecb-default-highlight-face :background cornflower blue :foreground yellow)
ecb-source-face: (:inherit ecb-default-highlight-face :background cornflower blue :foreground yellow)
ecb-directory-face: (:inherit ecb-default-highlight-face :background cornflower blue :foreground yellow)
ecb-default-highlight-face: (:background cornflower blue :foreground yellow)
ecb-history-dead-buffer-face: (:inherit ecb-history-general-face :foreground gray60)
ecb-history-indirect-buffer-face: (:inherit ecb-history-general-face :slant italic)
ecb-history-bucket-node-face: (:inherit ecb-bucket-node-face)
ecb-history-general-face: (:inherit ecb-default-general-face :height 1.0)
ecb-methods-general-face: (:inherit ecb-default-general-face :height 1.0)
ecb-sources-general-face: (:inherit ecb-default-general-face :height 1.0)
ecb-directories-general-face: (:inherit ecb-default-general-face :height
1.0)
ecb-tree-guide-line-face: (:inherit ecb-default-general-face :foreground grey :height 1.0)
ecb-default-general-face: (:height 1.0)

-----------------------------------------------------



-----------------------------------------------------
There was no *ecb-tag-dump* buffer
-----------------------------------------------------



-----------------------------------------------------
There was no *Backtrace* buffer
-----------------------------------------------------

-----------------------------------------------------
The contents of the *Messages* buffer were

("C:\\ProgramFiles\\Emacs\\emacs-22.3\\bin\\emacs.exe")
Loading encoded-kb...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/cedet-1.0pre6/common/cedet.el
(source)...
Loading cl-macs...done
Loading byte-opt...done
Setting up CEDET packages...
Loading derived...done
Loading cl-seq...done
Loading ede-speedbar...done
Setting up CEDET packages...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/cedet-1.0pre6/common/cedet.el
(source)...done
Loading semantic-idle...done
Loading semanticdb-mode...done
Loading semantic-mru-bookmark...
Loading ring...done
Loading semantic-mru-bookmark...done
Loading senator...done
Loading avoid...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxml-mode-20041004/rng-auto.el
(source)...done
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/autostart.el
(source)...
Nxml/Nxhtml Autostart.el loading ...
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml-loaddefs.el
(source)...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml/nxhtml-menu.el
(source)...
Loading regexp-opt...done
Loading dired-x...done
Loading easy-mmode...done
Loading url-methods...done
html-site-current (information): No current site set !! File mumamo uses old-style backquotes !!
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml/nxhtml-menu.el
(source)...done
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/autostart22.el
(source)...
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxml-mode-20041004/rng-auto.el
(source)...done
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/autostart22.el
(source)...done
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/etc/schema/schema-path-patch.el
(source)...done
xhtml-loader.rnc was ok
(No changes need to be saved)
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml/nxhtml-autoload.el
(source)...
nxhtml-autoload starting ... (hm, should maybe be renamed ...) majmodpri-sort-lists running ...
nxhtml-autoload finished
Loading
c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/nxhtml/nxhtml-autoload.el
(source)...done
=== Loaded at nxhtml/autostart.el end:
(feature 'html-imenu)=t
(feature 'html-quote)=t
(feature 'html-site)=t
(feature 'html-upl)=t
(feature 'mumamo)=t
(feature 'nxhtml-menu)=t
(feature 'nxhtml-mode)=t
(feature 'rngalt)=t
(feature 'tidy-xhtml)=t
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/nxhtml/autostart.el
(source)...done
Loading utf-16...done
Package rsz-mini is obsolete
Loading server...done
Loading semantic-el...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb.el
(source)...
ECB 2.40 uses CEDET 1.0pre6 (contains semantic 2.0pre6, eieio 1.2, speedbar 1.0.2).
Loading edmacro...done
Loading c:/ProgramFiles/Emacs/emacs-22.3/site-lisp/ecb-2.40/ecb.el
(source)...done
All requirements for ECB 2.40 fulfilled - Enjoy it!
Loading cl-extra...done
The ECB is now activated.
There are no NEWS to display.
Loading c:/Unix/.ecb-tip-of-day.el (source)...done Making completion list...
Loading eieio-opt...done
Preparing problem report...
Loading sendmail...done
Formatting bug report buffer......................................

End Insert *Messages* buffer
-----------------------------------------------------



------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

python-test.jpg (106K) Download Attachment

Re: [CEDET-devel] ECB 2.40 released!

by Eric M. Ludlam :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

   It does seem like the python initialization is having some trouble  
loading old cache files.  I'd like to recommend Don try the following:

1) Erase the contents of ~/.semanticdb
    If this is on windows, Emacs can expand that path for you.

2) Start Emacs (w/out ECB) and load in a python file that has trouble.  
  Does it initialize ok?

3) If so (I'm guessing it will) exit Emacs.

4) Start Emacs again.  Does it now have the problem?  If so, do:

M-x toggle-debug-on-error RET
M-x python-mode RET

and if that is ok, kill the buffer, and reload it now that the debug  
on error is on.

Eric

klaus.berndl@... seems to think that:

> Well, then it#s clear - seems that python is not supported by  
> semantic (but AFAIK current semantic has a python parser?! Eric?)
> But if (semantic-active-p) is nil then semantic is not active...
> What is the value of python-mode-hook in your setup??
>
> Background: when semantic is not active then ECB can only uses etags  
>  or imenu-parser for the contents which is much much much less  
> powerful then semantic-parser - with non-semantic-sources content  
> display is quite rough in ECB because these parsers (etags and  
> imenu) can not supply what ECB needs .... This is the reason for  
> your expanding/collapsing problem...
>
> So, here my recipe: Activate the semantic-python-parser for your  
> code and bob will be your uncle ;-)
>
> Klaus
>
> -----Ursprüngliche Nachricht-----
> Von: Don Dwiggins [mailto:ddwiggins@...]
> Gesendet: Dienstag, 19. Mai 2009 18:26
> An: ecb-list@...
> Betreff: Re: [ECB-list] ECB 2.40 released!
>
> klaus.berndl@... wrote:
>> 1. please always send a problem-report with the command
>> `ecb-submit-problem-report' - this includes all informations i need
>
> Thanks for the reply; here 'tis:
> ---------------------------------------
>
> Please enter the details of your bug report here:
>
> When I first load a Python file (or JS file, or...) after  
> activating, the methods buffer is empty.  I can get it to fill in  
> the methods by doing M-x python-mode (which is redundant, the mode  
> is already set in the buffer), or by setting the scratch buffer to  
> python-mode before loading the file.  (I also ran into this problem  
> earlier using ECB 2.32 with CEDET 1.0pre4.)
>
> Answering your questions:
> 2. is semantic enables in your python-buffers (what does
> (semantic-active-p) return if you call this with M-:)?
>   It returns nil
>
> 3. Is semantic-idle-scheduler-mode active in your buffer?
> I don't think so; in fact, the Senator menu item doesn't show up  
> until I invoke python-mode.
>
> 4. What happens if you co not call pythom-mode but [C-c . r] or even  
>  [C-u][C-c . r]?
>   Nothing.
>
> One other thing: when I invoked python-mode, I noticed the following  
>  in the Messages buffer:
> Cache Error:
> [c:/Unix/.semanticdb/!drive_c!Dwig!Falcon!Development!Online!RCAServer!semantic.cache]
> (invalid-read-syntax . in wrong context), Restart [2 times] ... but  
> it didn't seem to hurt anything.
>
> 5. Collapsing: Hmm, maybe you should build up a small example file  
> which you send to me and a step-by-step sceanrio what i must do, to  
> reproduce the behavior (beginning with 1. Start Emacs, 2. activate
> ECB...!)
>
> OK:
> 1) paste the following into a file:
> -------------------------------
> class foo:
>      def __init__(self):
>          pass
>
>      def foo1(self):
>          pass
>
>      def foo2(self):
>          pass
>
> class bar:
>      def __init__(self):
>          pass
>
>      def bar1(self):
>          pass
>
>      def bar2(self):
>          pass
> -------------------------------
> 2) start Emacs,
> 3) activate ECB
> 4) load the file
> 5) do what you must to populate the methods buffer ;^)
> 6) in the methods buffer, collapse the "foo" class
> 7) move the cursor to the bottom of the file, hit Return
>
> ... at this point, after a short delay, I see "foo" expand.
> (In fact, any change to the file will make it happen.)
>
>
> Emacs  : GNU Emacs 22.3.1 (i386-mingw-nt5.1.2600)
>   of 2008-09-06 on SOFT-MJASON
> Package: ECB: 2.40, CEDET: 1.0pre6, semantic: 2.0pre6, eieio: 1.2,
> speedbar: 1.0.2, JDEE: No JDEE
>
> ------------------------------------------------------------------------------
> Crystal Reports - New Free Runtime and 30 Day Trial
> Check out the new simplified licensing option that enables
> unlimited royalty-free distribution of the report engine
> for externally facing server and web deployment.
> http://p.sf.net/sfu/businessobjects
> _______________________________________________
> Cedet-devel mailing list
> Cedet-devel@...
> https://lists.sourceforge.net/lists/listinfo/cedet-devel
>



------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by Don Dwiggins-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

klaus.berndl@... wrote:
 > So, here my recipe: Activate the semantic-python-parser for your code
 > and bob will be your uncle ;-)

I have to admit, I haven't figured out how to "Activate the
semantic-python-parser".  I see that there's a wisent parser for python,
and I've tried a few things, but nothing seems to do the trick.

I noted the following in the Messages buffer, FWIW (this comes during
loading of my Python file):
 > Language Python exists, assuming attribute modification
 > Loading wisent-python...
 > Loading semantic-decorate-include...done
 > Loading wisent-python...done
 > Loading semantic-edit...done
 > Loading semanticdb-file...done
 > Cache Error:
[c:/Unix/.semanticdb/!drive_c!Dwig!Falcon!Development!Online!RCAServer!semantic.cache]
(invalid-read-syntax . in wrong context), Restart [2 times]
Also:
> At least for my this works only when i explicitly load the library python.el, e.g. by (require 'python) in my .emacs

I tried that (tried putting it before and after the CEDET and ECB
stuff), with no difference.

BTW, I'm working with PHP and Javascript files as well; will I have to
do something special for them?

Eric, thanks for chiming in.  I'll try your "script" and reply.

--

Don Dwiggins
Advanced Publishing Technology


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: ECB 2.40 released!

by Don Dwiggins-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

eric@... wrote:
> Hi,
>
>    It does seem like the python initialization is having some trouble  
> loading old cache files.  I'd like to recommend Don try the following:
>
> 1) Erase the contents of ~/.semanticdb
>     If this is on windows, Emacs can expand that path for you.

Hmm, the ~ directory doesn't have a .semanticdb; there is a
.semantic-cache, though; I deleted it.

>
> 2) Start Emacs (w/out ECB) and load in a python file that has trouble.  
>   Does it initialize ok?

Yes, it does.

> 3) If so (I'm guessing it will) exit Emacs.
>
> 4) Start Emacs again.  Does it now have the problem?  If so, do:

No, no problem.

I did find a different problem, however: I was using the ELSE package
(Emacs language-sensitive editor) for templating; I disabled it, and I'm
getting the methods buffer loaded with no problem.  (I notice that
there's a templating facility in CEDET; maybe I'll try to make it work.)

I also found, though, that I had (imenu-add-menubar-index) in my
python-mode-hook, and it seemed to mess up the methods buffer; when I
disabled it, the buffer worked with no problem.  I'd like to have that
menu back, but I'm guessing I have to set something in semantic or ECB.

So, the only remaining problem is that the methods buffer still expands
whenever I start to edit.  (Adding (require 'python) doesn't help.)

Thanks for the help,
--
Don Dwiggins
Advanced Publishing Technology


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Using the partial reparse hook within ECB! (was: AW: ECB 2.40 released!)

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi

@Eric: i added you to this thread because IMHO we need your expertice and knowledge and advice ...

>So, the only remaining problem is that the methods buffer still expands whenever I start to edit.  (Adding (require
>'python) doesn't help.)

Well, the (require 'python) was only meant to setup python-mode correctly fopr you...

Collapsing/expanding tags when you are editing:

Each time semantic decides that the buffer has to be reparsed to update the current tag-list to the current buffer contents semantic calls a hook which then in turn updates the ECB-methods window and rebuilds it completely which in turn displays all tags with their default-expand-state (which can be influenced by the options `ecb-type-tag-expansion' and `ecb-show-tags' - see the docstrings)...

BUT: To be honest, concerning this topic the problem is in ECB not in semantic, at least partly (Eric, nice to hear, isn't it? ;-)...the description above is only half of the story: semantic offers two hooks where tools like ECB can hook in to update their stuff when semantic performs a reparse, one of them is the `semantic-after-partial-cache-change-hook'. And now we came to one of the biggest TODOs on my TODO-list, unfortunately i have no really good idea about a solution - and now Eric, you can chip in ;-)

This partial-hook of semantic offers exactly these tags which must be updated not the whole tag-list of the whole buffer - fine - exactly what we would need not to update the whole ecb-window but only these nodes which represent the updated tags - if this would work the collapse-state of all other nodes would be untouched and the problem of Don would have been gone...unfortunately it's quite impossible for ECB to identify these nodes in ist ECB-window which represent the new update-tag-list offered by the partial hook.

@Don: probably the rest isn't very intersting for you, therefore here one short fact for you: your collaps/expand-problem is a known annoying behavior in current ECB and there is no solution - but maybe in the njext releases - but for this i have to discuss with Eric.....

@Eric: maybe it's the best i show you the current function ECB adds to the partial-reparse hook, because there are already some comments about the problem:

(defun ecb-update-after-partial-reparse (updated-tags)
  "Updates the method buffer and all internal ECB-caches after a partial
semantic-reparse. This function is added to the hook
`semantic-after-partial-cache-change-hook'."
  ;; TODO: Currently we get simply the whole cache from semantic (already up
  ;; to date at this time!) and then we rebuild the whole tree-buffer with
  ;; this cache-contents. This is slow for big sources. We should implement
  ;; a mechanism where only the UPDATED-TAGS are used and only this ones are
  ;; updated.

  ;; TODO: Klaus Berndl <klaus.berndl@...>: here we could check if
  ;; UPDATED-TAGS contains only one tag and if this tag contains no childrens
  ;; then we could use the new function `tree-buffer-update-node' to simply
  ;; updating the associated node instead of a full reparse and then full
  ;; tree-buffer-update.
  (if (and (= 1 (length updated-tags))
           (null (ecb-children-tags (car updated-tags))))
      ;; TODO: Klaus Berndl <klaus.berndl@...>:
      ;; we could update this single node if we can find this node. But this
      ;; could be difficult (or impossible?) because here we only know the new
      ;; semantic-tag but our nodes contain only outdated semantic-tags as
      ;; data so how to find the associated node??!!
      ;; Maybe we could search the node which contaisn the parent-tag of the
      ;; updated tag and then we compute the position p of this tag in the list
      ;; of the children of its parent-tag and then we update that node which
      ;; comes on the same position p in the list of childrens of the
      ;; associated parent-node - hmm, but can we be sure that the sequence of
      ;; children-tags and children-nodes is the same?? probably not because
      ;; the nodes are ordered alphabetically and the tags are are ordered in
      ;; that sequence they are code in the source-buffer! Hmmm...........
      ;; Until this question is solved we must use the full reparse/rebuild
      ;; :-( One possible solution: tempor. ordering the
      ;; semantic-tag-childrens by name and getting the position p of the
      ;; updated tag in that ordered tag-sequence...
      (ecb-rebuild-methods-buffer-with-tagcache (ecb-fetch-semantic-tags))
    (ecb-rebuild-methods-buffer-with-tagcache (ecb-fetch-semantic-tags))))

You see what is my problem?`How to identify these nodes in the methods-tree-buffer which holds as data an *OLD* outdated semantic-tag but should be updated with a new reparsed tag supplied by your partial-hook?
Example: let's say the buffer contains a function named "XXX" which has been renamed to "XXXX" - then i suppose semamtic runs only a partial reparse and the partial hook would suply exactly this new tag with a new tag-name "XXX" - how could ECB know that for this tag the tree-buffer-node representing the old tag "XXX" should be updated with new tag-data "XXXX"??? IMHO quite impossible  at least not really reliable...

The only solution which came in my mind is: Could semantic supply not only the new tags but also the old ones which have been infected by the partial reparse. In our example: semantic would not only supply the new tag "XXXX" but additionaly the old one "XXX" too. Would this be possible (AFAICS semantic should be able to access to old tag, right or false)? If possible then the next question is: what is the best data-structure?
A) simply a new optional argument old-updated-tags for partial-hook functions which contains the old tags for these tags which have been reparsed - complete new added tags (for which no old one has existed) would have no equivalent in this new optional argument...
B) a complete new structure for update-tags, e.g. a cons: where the car is a new tag and the cdr is the old equivalent, where the cdr can be nil for complete new tags (e.g. added function)..

Advantage of B) the exact correlation between new tag and old tag is much easier...

Eric, two questions?
1) Is my description of the problem understandable for you?
2) Can we solve this problem?

Thanks!

Ciao,
Klaus

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: Using the partial reparse hook within ECB! (was: AW: ECB2.40 released!)

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Another idea for the problem: maybe we could add to a semantic-tag a new slot :tag-id which would be a generated unique (within the full taglist of a buffer) ID (e.g. a number) - this ID would and MUST be unchanged even if the tag itself has been reparsed and so e.g. a new tag-name -

Example: suppose we have a class CCC with two methods MM1 and MM2.

Tag for CCC has :tag-id 1, MM1 has :tag-id 2 and MM2 has :tag-id 3

Now we rename method MM1 to MM2, this means that method MM1 will be reparsed an gets a new tag-name MM2 but the :tag-id is still 2
Or we add a new parameter to MM1, here the same, MM1 must be reparsed but :tag-id is still 2...

If we add a new method MM3 then this new method gets a :tag-id 4. But in this case the class CCC itself is reparsed and the tag must be updated because it has a new function-children... But the :tag_id of CCC is still 1...

Then there is no need to change the semanztic of the partial-reparse hook: still only one argument: the list of updated tags - but now ECB can check the :tag-id of each tag and search in ist tree-buffer for a tree-node which has as data a semantic-tag which has the same :tag-id as a new updated tag - this tree-node must be updated....

The only things we would need:
- An ID-generator in semantc (should not be so hard)
- a new tag-slot :tag-id and a getter and setter-method (should be simple)
- some changes in the tag-fetching/creating/updating-mechanism within semantic (can not judge the needed effort)
- some small changes in ECB - but should be not so hard, most things i need are already there...

Eric, please tell me (in a hard and direct manner ;-) if this is nonsense what i have suggested? I'm not deep enough in your reparse/update-mechanism but currently this sounds good in my ears ;-)

Thoughts?

BTW: how speedbar deals with partial hook-updates (e.g. triggered by the idle-scheduler)??

Ciao,
klaus

-----Ursprüngliche Nachricht-----
Von: klaus.berndl@... [mailto:klaus.berndl@...]
Gesendet: Mittwoch, 20. Mai 2009 09:30
An: ddwiggins@...; ecb-list@...; eric@...
Cc: cedet-devel@...
Betreff: [ECB-list] Using the partial reparse hook within ECB! (was: AW: ECB2.40 released!)

Hi

@Eric: i added you to this thread because IMHO we need your expertice and knowledge and advice ...

>So, the only remaining problem is that the methods buffer still expands
>whenever I start to edit.  (Adding (require
>'python) doesn't help.)

Well, the (require 'python) was only meant to setup python-mode correctly fopr you...

Collapsing/expanding tags when you are editing:

Each time semantic decides that the buffer has to be reparsed to update the current tag-list to the current buffer contents semantic calls a hook which then in turn updates the ECB-methods window and rebuilds it completely which in turn displays all tags with their default-expand-state (which can be influenced by the options `ecb-type-tag-expansion' and `ecb-show-tags' - see the docstrings)...

BUT: To be honest, concerning this topic the problem is in ECB not in semantic, at least partly (Eric, nice to hear, isn't it? ;-)...the description above is only half of the story: semantic offers two hooks where tools like ECB can hook in to update their stuff when semantic performs a reparse, one of them is the `semantic-after-partial-cache-change-hook'. And now we came to one of the biggest TODOs on my TODO-list, unfortunately i have no really good idea about a solution - and now Eric, you can chip in ;-)

This partial-hook of semantic offers exactly these tags which must be updated not the whole tag-list of the whole buffer - fine - exactly what we would need not to update the whole ecb-window but only these nodes which represent the updated tags - if this would work the collapse-state of all other nodes would be untouched and the problem of Don would have been gone...unfortunately it's quite impossible for ECB to identify these nodes in ist ECB-window which represent the new update-tag-list offered by the partial hook.

@Don: probably the rest isn't very intersting for you, therefore here one short fact for you: your collaps/expand-problem is a known annoying behavior in current ECB and there is no solution - but maybe in the njext releases - but for this i have to discuss with Eric.....

@Eric: maybe it's the best i show you the current function ECB adds to the partial-reparse hook, because there are already some comments about the problem:

(defun ecb-update-after-partial-reparse (updated-tags)
  "Updates the method buffer and all internal ECB-caches after a partial semantic-reparse. This function is added to the hook `semantic-after-partial-cache-change-hook'."
  ;; TODO: Currently we get simply the whole cache from semantic (already up
  ;; to date at this time!) and then we rebuild the whole tree-buffer with
  ;; this cache-contents. This is slow for big sources. We should implement
  ;; a mechanism where only the UPDATED-TAGS are used and only this ones are
  ;; updated.

  ;; TODO: Klaus Berndl <klaus.berndl@...>: here we could check if
  ;; UPDATED-TAGS contains only one tag and if this tag contains no childrens
  ;; then we could use the new function `tree-buffer-update-node' to simply
  ;; updating the associated node instead of a full reparse and then full
  ;; tree-buffer-update.
  (if (and (= 1 (length updated-tags))
           (null (ecb-children-tags (car updated-tags))))
      ;; TODO: Klaus Berndl <klaus.berndl@...>:
      ;; we could update this single node if we can find this node. But this
      ;; could be difficult (or impossible?) because here we only know the new
      ;; semantic-tag but our nodes contain only outdated semantic-tags as
      ;; data so how to find the associated node??!!
      ;; Maybe we could search the node which contaisn the parent-tag of the
      ;; updated tag and then we compute the position p of this tag in the list
      ;; of the children of its parent-tag and then we update that node which
      ;; comes on the same position p in the list of childrens of the
      ;; associated parent-node - hmm, but can we be sure that the sequence of
      ;; children-tags and children-nodes is the same?? probably not because
      ;; the nodes are ordered alphabetically and the tags are are ordered in
      ;; that sequence they are code in the source-buffer! Hmmm...........
      ;; Until this question is solved we must use the full reparse/rebuild
      ;; :-( One possible solution: tempor. ordering the
      ;; semantic-tag-childrens by name and getting the position p of the
      ;; updated tag in that ordered tag-sequence...
      (ecb-rebuild-methods-buffer-with-tagcache (ecb-fetch-semantic-tags))
    (ecb-rebuild-methods-buffer-with-tagcache (ecb-fetch-semantic-tags))))

You see what is my problem?`How to identify these nodes in the methods-tree-buffer which holds as data an *OLD* outdated semantic-tag but should be updated with a new reparsed tag supplied by your partial-hook?
Example: let's say the buffer contains a function named "XXX" which has been renamed to "XXXX" - then i suppose semamtic runs only a partial reparse and the partial hook would suply exactly this new tag with a new tag-name "XXX" - how could ECB know that for this tag the tree-buffer-node representing the old tag "XXX" should be updated with new tag-data "XXXX"??? IMHO quite impossible  at least not really reliable...

The only solution which came in my mind is: Could semantic supply not only the new tags but also the old ones which have been infected by the partial reparse. In our example: semantic would not only supply the new tag "XXXX" but additionaly the old one "XXX" too. Would this be possible (AFAICS semantic should be able to access to old tag, right or false)? If possible then the next question is: what is the best data-structure?
A) simply a new optional argument old-updated-tags for partial-hook functions which contains the old tags for these tags which have been reparsed - complete new added tags (for which no old one has existed) would have no equivalent in this new optional argument...
B) a complete new structure for update-tags, e.g. a cons: where the car is a new tag and the cdr is the old equivalent, where the cdr can be nil for complete new tags (e.g. added function)..

Advantage of B) the exact correlation between new tag and old tag is much easier...

Eric, two questions?
1) Is my description of the problem understandable for you?
2) Can we solve this problem?

Thanks!

Ciao,
Klaus

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: Using the partial reparse hook within ECB! (was: AW: ECB2.40 released!)

by Eric M. Ludlam :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Klaus,

  On tag IDs, there is something like the tag ID, though much more
subtle.  It is the cons cell that is the tag.  When a tag is reparsed,
the cons cell is recycled, so you can ask is this tag T eq to stored tag
sT.

  The tag id would be a challenge to keep straight, since you can't
associated a number a names (names change), and you can't associate them
with tag order, since new tags are inserted frequently, and you can't
associate them with buffer position, since that certainly moves around a
lot.

  What you can do, that might be quite easy for ECB, is you can store
your own ECB data as a property on the tag.  Properties are available
for applications to use to keep track of things, and are kept whenever a
tag is recycled.  Thus, you could put a property into a tag saying "I'm
open" so when a refresh occurs, you can keep it open or closed.  This is
even better than using the cons cell, since you would know if a tag was
seen by you before.

Does that help?  Dave P. and I debated how to track this info many
times, and found no happy solution.  Speedbar just keeps it's old cache
around until you ask it to refresh the tags.

I think this might also help with your other question too.  The partial
reparse hook is good when your application treats each tag as an
individual.  (ie, tag decoration mode).  You would need to use tag
properties to keep track of your tags if you want to use it for the tag
list as a group.

Eric

On Wed, 2009-05-20 at 11:11 +0200, klaus.berndl@... wrote:

> Another idea for the problem: maybe we could add to a semantic-tag a new slot :tag-id which would be a generated unique (within the full taglist of a buffer) ID (e.g. a number) - this ID would and MUST be unchanged even if the tag itself has been reparsed and so e.g. a new tag-name -
>
> Example: suppose we have a class CCC with two methods MM1 and MM2.
>
> Tag for CCC has :tag-id 1, MM1 has :tag-id 2 and MM2 has :tag-id 3
>
> Now we rename method MM1 to MM2, this means that method MM1 will be reparsed an gets a new tag-name MM2 but the :tag-id is still 2
> Or we add a new parameter to MM1, here the same, MM1 must be reparsed but :tag-id is still 2...
>
> If we add a new method MM3 then this new method gets a :tag-id 4. But in this case the class CCC itself is reparsed and the tag must be updated because it has a new function-children... But the :tag_id of CCC is still 1...
>
> Then there is no need to change the semanztic of the partial-reparse hook: still only one argument: the list of updated tags - but now ECB can check the :tag-id of each tag and search in ist tree-buffer for a tree-node which has as data a semantic-tag which has the same :tag-id as a new updated tag - this tree-node must be updated....
>
> The only things we would need:
> - An ID-generator in semantc (should not be so hard)
> - a new tag-slot :tag-id and a getter and setter-method (should be simple)
> - some changes in the tag-fetching/creating/updating-mechanism within semantic (can not judge the needed effort)
> - some small changes in ECB - but should be not so hard, most things i need are already there...
>
> Eric, please tell me (in a hard and direct manner ;-) if this is nonsense what i have suggested? I'm not deep enough in your reparse/update-mechanism but currently this sounds good in my ears ;-)
>
> Thoughts?
>
> BTW: how speedbar deals with partial hook-updates (e.g. triggered by the idle-scheduler)??
>
> Ciao,
> klaus
>
> -----Ursprüngliche Nachricht-----
> Von: klaus.berndl@... [mailto:klaus.berndl@...]
> Gesendet: Mittwoch, 20. Mai 2009 09:30
> An: ddwiggins@...; ecb-list@...; eric@...
> Cc: cedet-devel@...
> Betreff: [ECB-list] Using the partial reparse hook within ECB! (was: AW: ECB2.40 released!)
>
> Hi
>
> @Eric: i added you to this thread because IMHO we need your expertice and knowledge and advice ...
>
> >So, the only remaining problem is that the methods buffer still expands
> >whenever I start to edit.  (Adding (require
> >'python) doesn't help.)
>
> Well, the (require 'python) was only meant to setup python-mode correctly fopr you...
>
> Collapsing/expanding tags when you are editing:
>
> Each time semantic decides that the buffer has to be reparsed to update the current tag-list to the current buffer contents semantic calls a hook which then in turn updates the ECB-methods window and rebuilds it completely which in turn displays all tags with their default-expand-state (which can be influenced by the options `ecb-type-tag-expansion' and `ecb-show-tags' - see the docstrings)...
>
> BUT: To be honest, concerning this topic the problem is in ECB not in semantic, at least partly (Eric, nice to hear, isn't it? ;-)...the description above is only half of the story: semantic offers two hooks where tools like ECB can hook in to update their stuff when semantic performs a reparse, one of them is the `semantic-after-partial-cache-change-hook'. And now we came to one of the biggest TODOs on my TODO-list, unfortunately i have no really good idea about a solution - and now Eric, you can chip in ;-)
>
> This partial-hook of semantic offers exactly these tags which must be updated not the whole tag-list of the whole buffer - fine - exactly what we would need not to update the whole ecb-window but only these nodes which represent the updated tags - if this would work the collapse-state of all other nodes would be untouched and the problem of Don would have been gone...unfortunately it's quite impossible for ECB to identify these nodes in ist ECB-window which represent the new update-tag-list offered by the partial hook.
>
> @Don: probably the rest isn't very intersting for you, therefore here one short fact for you: your collaps/expand-problem is a known annoying behavior in current ECB and there is no solution - but maybe in the njext releases - but for this i have to discuss with Eric.....
>
> @Eric: maybe it's the best i show you the current function ECB adds to the partial-reparse hook, because there are already some comments about the problem:
>
> (defun ecb-update-after-partial-reparse (updated-tags)
>   "Updates the method buffer and all internal ECB-caches after a partial semantic-reparse. This function is added to the hook `semantic-after-partial-cache-change-hook'."
>   ;; TODO: Currently we get simply the whole cache from semantic (already up
>   ;; to date at this time!) and then we rebuild the whole tree-buffer with
>   ;; this cache-contents. This is slow for big sources. We should implement
>   ;; a mechanism where only the UPDATED-TAGS are used and only this ones are
>   ;; updated.
>
>   ;; TODO: Klaus Berndl <klaus.berndl@...>: here we could check if
>   ;; UPDATED-TAGS contains only one tag and if this tag contains no childrens
>   ;; then we could use the new function `tree-buffer-update-node' to simply
>   ;; updating the associated node instead of a full reparse and then full
>   ;; tree-buffer-update.
>   (if (and (= 1 (length updated-tags))
>            (null (ecb-children-tags (car updated-tags))))
>       ;; TODO: Klaus Berndl <klaus.berndl@...>:
>       ;; we could update this single node if we can find this node. But this
>       ;; could be difficult (or impossible?) because here we only know the new
>       ;; semantic-tag but our nodes contain only outdated semantic-tags as
>       ;; data so how to find the associated node??!!
>       ;; Maybe we could search the node which contaisn the parent-tag of the
>       ;; updated tag and then we compute the position p of this tag in the list
>       ;; of the children of its parent-tag and then we update that node which
>       ;; comes on the same position p in the list of childrens of the
>       ;; associated parent-node - hmm, but can we be sure that the sequence of
>       ;; children-tags and children-nodes is the same?? probably not because
>       ;; the nodes are ordered alphabetically and the tags are are ordered in
>       ;; that sequence they are code in the source-buffer! Hmmm...........
>       ;; Until this question is solved we must use the full reparse/rebuild
>       ;; :-( One possible solution: tempor. ordering the
>       ;; semantic-tag-childrens by name and getting the position p of the
>       ;; updated tag in that ordered tag-sequence...
>       (ecb-rebuild-methods-buffer-with-tagcache (ecb-fetch-semantic-tags))
>     (ecb-rebuild-methods-buffer-with-tagcache (ecb-fetch-semantic-tags))))
>
> You see what is my problem?`How to identify these nodes in the methods-tree-buffer which holds as data an *OLD* outdated semantic-tag but should be updated with a new reparsed tag supplied by your partial-hook?
> Example: let's say the buffer contains a function named "XXX" which has been renamed to "XXXX" - then i suppose semamtic runs only a partial reparse and the partial hook would suply exactly this new tag with a new tag-name "XXX" - how could ECB know that for this tag the tree-buffer-node representing the old tag "XXX" should be updated with new tag-data "XXXX"??? IMHO quite impossible  at least not really reliable...
>
> The only solution which came in my mind is: Could semantic supply not only the new tags but also the old ones which have been infected by the partial reparse. In our example: semantic would not only supply the new tag "XXXX" but additionaly the old one "XXX" too. Would this be possible (AFAICS semantic should be able to access to old tag, right or false)? If possible then the next question is: what is the best data-structure?
> A) simply a new optional argument old-updated-tags for partial-hook functions which contains the old tags for these tags which have been reparsed - complete new added tags (for which no old one has existed) would have no equivalent in this new optional argument...
> B) a complete new structure for update-tags, e.g. a cons: where the car is a new tag and the cdr is the old equivalent, where the cdr can be nil for complete new tags (e.g. added function)..
>
> Advantage of B) the exact correlation between new tag and old tag is much easier...
>
> Eric, two questions?
> 1) Is my description of the problem understandable for you?
> 2) Can we solve this problem?
>
> Thanks!
>
> Ciao,
> Klaus
>
> ------------------------------------------------------------------------------
> Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
> http://p.sf.net/sfu/businessobjects
> _______________________________________________
> Ecb-list mailing list
> Ecb-list@...
> https://lists.sourceforge.net/lists/listinfo/ecb-list

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list

Re: Using the partial reparse hook within ECB! (was: AW: ECB2.40 released!)

by klaus.berndl-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Eric,

Wow, sounds pretty good... But first some questions:

I found these function in semantic-tag.el
;; These functions are for internal use only!
(defsubst semantic--tag-properties-cdr (tag)
)

(defun semantic--tag-put-property (tag property value)
)

(defun semantic--tag-put-property-no-side-effect (tag property value)
)

(defsubst semantic--tag-get-property (tag property)
)

(defun semantic-tag-file-name (tag)
)

Q1: There is a comment that these functions are for internal use only - what does this mean for ECB? Is it reliable when ECB uses these functions for that needs you suggested??

Q2: Are these the right functions - which ones i would need - i assume semantic--tag-put-property and semantic--tag-get-property - what about semantic--tag-put-property-no-side-effect? If i have undrestood you in the right way, this is not the right one for my needs, right?

Q3: are properties stored permanantly in the semanticdb and semantic.caches? I assume not. So when a buffer is opened then all tags are without any private properties right? Just to get sure, is fine for me and ECB

Q4: is there any example out for the right usage of these functions, ie. A "real live" example? ;-) In the info-manual of semantic i fund only the function-description, i.e. there docstrings....

Q5: my approach would be:
1. i add to semantic-after-partial-cache-change-hook and semantic-after-cache-change-hook the same function which always gets the full tag-list after a reparse (maybe from the semantic-cache or fully reparsed, anyway)
2. This function creates for each tag an appropriate tree-node and adds the identifier for this tree-node as property-value for a new ECB-property like 'ECB-tree-node which indicates, that this tag is displayed in the tree-buffer and in which tree-node. After that this property is stored in the tag itself, right? The modified tag is stored in the :data-slot the tree-node itself.
3. Then i build up the tree-buffer of ECB based on the tree-nodes of step 2 und display the tree-buffer
<4. the user does some editing>
5. some tags are updated by semantic
6. The hooks of step 1 above are called and ECB gets again the full tag-list for current source-buffer
7. i check if a tag contains the ECB-property 'ECB-tree-node and get so the information if the tag is currently already represented by a tree-node and by which tree-node - if yes, then i can easily update the tree-node with the modified tag-data ....

Is this somehow right, is it that what you want to suggest? If yes, then this is pretty cool idea and should be not so hard to implement...

Thanks a lot for your prompt help!
Klaus

-----Ursprüngliche Nachricht-----
Von: Eric M. Ludlam [mailto:eric@...]
Gesendet: Mittwoch, 20. Mai 2009 13:22
An: Berndl, Klaus
Cc: ddwiggins@...; ecb-list@...; cedet-devel@...
Betreff: Re: AW: [ECB-list] Using the partial reparse hook within ECB! (was: AW: ECB2.40 released!)

Hi Klaus,

  On tag IDs, there is something like the tag ID, though much more subtle.  It is the cons cell that is the tag.  When a tag is reparsed, the cons cell is recycled, so you can ask is this tag T eq to stored tag sT.

  The tag id would be a challenge to keep straight, since you can't associated a number a names (names change), and you can't associate them with tag order, since new tags are inserted frequently, and you can't associate them with buffer position, since that certainly moves around a lot.

  What you can do, that might be quite easy for ECB, is you can store your own ECB data as a property on the tag.  Properties are available for applications to use to keep track of things, and are kept whenever a tag is recycled.  Thus, you could put a property into a tag saying "I'm open" so when a refresh occurs, you can keep it open or closed.  This is even better than using the cons cell, since you would know if a tag was seen by you before.

Does that help?  Dave P. and I debated how to track this info many times, and found no happy solution.  Speedbar just keeps it's old cache around until you ask it to refresh the tags.

I think this might also help with your other question too.  The partial reparse hook is good when your application treats each tag as an individual.  (ie, tag decoration mode).  You would need to use tag properties to keep track of your tags if you want to use it for the tag list as a group.

Eric

On Wed, 2009-05-20 at 11:11 +0200, klaus.berndl@... wrote:

> Another idea for the problem: maybe we could add to a semantic-tag a
> new slot :tag-id which would be a generated unique (within the full
> taglist of a buffer) ID (e.g. a number) - this ID would and MUST be
> unchanged even if the tag itself has been reparsed and so e.g. a new
> tag-name -
>
> Example: suppose we have a class CCC with two methods MM1 and MM2.
>
> Tag for CCC has :tag-id 1, MM1 has :tag-id 2 and MM2 has :tag-id 3
>
> Now we rename method MM1 to MM2, this means that method MM1 will be
> reparsed an gets a new tag-name MM2 but the :tag-id is still 2 Or we add a new parameter to MM1, here the same, MM1 must be reparsed but :tag-id is still 2...
>
> If we add a new method MM3 then this new method gets a :tag-id 4. But in this case the class CCC itself is reparsed and the tag must be updated because it has a new function-children... But the :tag_id of CCC is still 1...
>
> Then there is no need to change the semanztic of the partial-reparse hook: still only one argument: the list of updated tags - but now ECB can check the :tag-id of each tag and search in ist tree-buffer for a tree-node which has as data a semantic-tag which has the same :tag-id as a new updated tag - this tree-node must be updated....
>
> The only things we would need:
> - An ID-generator in semantc (should not be so hard)
> - a new tag-slot :tag-id and a getter and setter-method (should be
> simple)
> - some changes in the tag-fetching/creating/updating-mechanism within
> semantic (can not judge the needed effort)
> - some small changes in ECB - but should be not so hard, most things i need are already there...
>
> Eric, please tell me (in a hard and direct manner ;-) if this is
> nonsense what i have suggested? I'm not deep enough in your
> reparse/update-mechanism but currently this sounds good in my ears ;-)
>
> Thoughts?
>
> BTW: how speedbar deals with partial hook-updates (e.g. triggered by the idle-scheduler)??
>
> Ciao,
> klaus
>
> -----Ursprüngliche Nachricht-----
> Von: klaus.berndl@...
> [mailto:klaus.berndl@...]
> Gesendet: Mittwoch, 20. Mai 2009 09:30
> An: ddwiggins@...; ecb-list@...;
> eric@...
> Cc: cedet-devel@...
> Betreff: [ECB-list] Using the partial reparse hook within ECB! (was:
> AW: ECB2.40 released!)
>
> Hi
>
> @Eric: i added you to this thread because IMHO we need your expertice and knowledge and advice ...
>
> >So, the only remaining problem is that the methods buffer still
> >expands whenever I start to edit.  (Adding (require
> >'python) doesn't help.)
>
> Well, the (require 'python) was only meant to setup python-mode correctly fopr you...
>
> Collapsing/expanding tags when you are editing:
>
> Each time semantic decides that the buffer has to be reparsed to update the current tag-list to the current buffer contents semantic calls a hook which then in turn updates the ECB-methods window and rebuilds it completely which in turn displays all tags with their default-expand-state (which can be influenced by the options `ecb-type-tag-expansion' and `ecb-show-tags' - see the docstrings)...
>
> BUT: To be honest, concerning this topic the problem is in ECB not in
> semantic, at least partly (Eric, nice to hear, isn't it? ;-)...the
> description above is only half of the story: semantic offers two hooks
> where tools like ECB can hook in to update their stuff when semantic
> performs a reparse, one of them is the
> `semantic-after-partial-cache-change-hook'. And now we came to one of
> the biggest TODOs on my TODO-list, unfortunately i have no really good
> idea about a solution - and now Eric, you can chip in ;-)
>
> This partial-hook of semantic offers exactly these tags which must be updated not the whole tag-list of the whole buffer - fine - exactly what we would need not to update the whole ecb-window but only these nodes which represent the updated tags - if this would work the collapse-state of all other nodes would be untouched and the problem of Don would have been gone...unfortunately it's quite impossible for ECB to identify these nodes in ist ECB-window which represent the new update-tag-list offered by the partial hook.
>
> @Don: probably the rest isn't very intersting for you, therefore here one short fact for you: your collaps/expand-problem is a known annoying behavior in current ECB and there is no solution - but maybe in the njext releases - but for this i have to discuss with Eric.....
>
> @Eric: maybe it's the best i show you the current function ECB adds to the partial-reparse hook, because there are already some comments about the problem:
>
> (defun ecb-update-after-partial-reparse (updated-tags)
>   "Updates the method buffer and all internal ECB-caches after a partial semantic-reparse. This function is added to the hook `semantic-after-partial-cache-change-hook'."
>   ;; TODO: Currently we get simply the whole cache from semantic (already up
>   ;; to date at this time!) and then we rebuild the whole tree-buffer with
>   ;; this cache-contents. This is slow for big sources. We should implement
>   ;; a mechanism where only the UPDATED-TAGS are used and only this ones are
>   ;; updated.
>
>   ;; TODO: Klaus Berndl <klaus.berndl@...>: here we could check if
>   ;; UPDATED-TAGS contains only one tag and if this tag contains no childrens
>   ;; then we could use the new function `tree-buffer-update-node' to simply
>   ;; updating the associated node instead of a full reparse and then full
>   ;; tree-buffer-update.
>   (if (and (= 1 (length updated-tags))
>            (null (ecb-children-tags (car updated-tags))))
>       ;; TODO: Klaus Berndl <klaus.berndl@...>:
>       ;; we could update this single node if we can find this node. But this
>       ;; could be difficult (or impossible?) because here we only know the new
>       ;; semantic-tag but our nodes contain only outdated semantic-tags as
>       ;; data so how to find the associated node??!!
>       ;; Maybe we could search the node which contaisn the parent-tag of the
>       ;; updated tag and then we compute the position p of this tag in the list
>       ;; of the children of its parent-tag and then we update that node which
>       ;; comes on the same position p in the list of childrens of the
>       ;; associated parent-node - hmm, but can we be sure that the sequence of
>       ;; children-tags and children-nodes is the same?? probably not because
>       ;; the nodes are ordered alphabetically and the tags are are ordered in
>       ;; that sequence they are code in the source-buffer! Hmmm...........
>       ;; Until this question is solved we must use the full reparse/rebuild
>       ;; :-( One possible solution: tempor. ordering the
>       ;; semantic-tag-childrens by name and getting the position p of the
>       ;; updated tag in that ordered tag-sequence...
>       (ecb-rebuild-methods-buffer-with-tagcache (ecb-fetch-semantic-tags))
>     (ecb-rebuild-methods-buffer-with-tagcache
> (ecb-fetch-semantic-tags))))
>
> You see what is my problem?`How to identify these nodes in the methods-tree-buffer which holds as data an *OLD* outdated semantic-tag but should be updated with a new reparsed tag supplied by your partial-hook?
> Example: let's say the buffer contains a function named "XXX" which has been renamed to "XXXX" - then i suppose semamtic runs only a partial reparse and the partial hook would suply exactly this new tag with a new tag-name "XXX" - how could ECB know that for this tag the tree-buffer-node representing the old tag "XXX" should be updated with new tag-data "XXXX"??? IMHO quite impossible  at least not really reliable...
>
> The only solution which came in my mind is: Could semantic supply not only the new tags but also the old ones which have been infected by the partial reparse. In our example: semantic would not only supply the new tag "XXXX" but additionaly the old one "XXX" too. Would this be possible (AFAICS semantic should be able to access to old tag, right or false)? If possible then the next question is: what is the best data-structure?
> A) simply a new optional argument old-updated-tags for partial-hook functions which contains the old tags for these tags which have been reparsed - complete new added tags (for which no old one has existed) would have no equivalent in this new optional argument...
> B) a complete new structure for update-tags, e.g. a cons: where the car is a new tag and the cdr is the old equivalent, where the cdr can be nil for complete new tags (e.g. added function)..
>
> Advantage of B) the exact correlation between new tag and old tag is much easier...
>
> Eric, two questions?
> 1) Is my description of the problem understandable for you?
> 2) Can we solve this problem?
>
> Thanks!
>
> Ciao,
> Klaus
>
> ----------------------------------------------------------------------
> -------- Crystal Reports - New Free Runtime and 30 Day Trial Check out
> the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
> http://p.sf.net/sfu/businessobjects
> _______________________________________________
> Ecb-list mailing list
> Ecb-list@...
> https://lists.sourceforge.net/lists/listinfo/ecb-list

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ecb-list mailing list
Ecb-list@...
https://lists.sourceforge.net/lists/listinfo/ecb-list
< Prev | 1 - 2 | Next >