Subject: RE: [hackers-il] Long Live the Minute Difference

From: Omer Musaev <[email-masked]>
Date: Wed, 19 Dec 2001 14:04:53 +0200

> -----Original Message-----
> From: Oleg Goldshmidt [mailto:[email-masked]]
> Sent: Wednesday, December 19, 2001 1:02 PM
> To: [email-masked]
> Subject: Re: [hackers-il] Long Live the Minute Difference
> 
> 
> Omer Musaev <[email-masked]> writes:
> 
> > Project management and code browsing extensions for XEmacs. 
> > ECB is in right direction, but lacks power:((
> 
> Maybe you can enlighten me regarding the itch? I recall looking
> at ECB a while ago, and deciding I was quite happy with dired
> and function menu (XEmacs is my development environment). I don't
> want the extra windows take up the screen real estate from code...
> 
> Does ECB have a C++ class browser? That might be useful.
> 

Yes, but there is a catch.  ECB uses "semantic" as code parser, 
which, in its current incarnation doe's not cope well with 
C++, especially with templates. 

> What did you mean by "project management"?

Warning: long description of ultimate IDE by my views and 
desires follows. It is possible to implement all this in 
XEmacs. However, it may take a lot of time, and I am not 
going to do this by myself.... simply because I can not:(

Note: When I refer to XEmacs, I do that just because I do
not consider XEmacs/Emacs compatibility a goal. 

What I mean by "project management"?  Here comes the point. 

Suppose you are working on a number of projects simultaneously, 
and suppose you want to be able to define various operations 
on project and its contents.

For example - checkout the whole project, check in the whole project,
rollback the whole project, or roll-forward it after you had rolled 
it back. In addition, various projects have ( usually ) various build 
options - so one-click-build procedure is supposed to change 
according to what project you are working right now.

In addition, there are plenty of operations on file level - source 
control operations, annotations ( if those are stored in external 
files, or in DB, or whatever - implementation of logic should not 
be concerned with that ).

Having cleared the "project management" point, there are additional 
properties of "code browsing":

* Cross referencing - etags is an example of cross referencing, 
  although I would be happier to have something like SNiFF/Retriever.

* Class browsing: what is in some class? 

* Hierarchy browsing: what is relationship of my class in whole system?

* Concept/models browsing: What concept is implemented by my template? Is 
  there any concept coercion? What templates implement my concept? 

In addition to that, I would like to see code metrics of my code:  

* How many coupling ( in some metric ) there is in my project?

* How those metrics will be affected by refactoring ?

In addition to that, I would like to use refactoring browser - like xref.

In addition to that, I would like to have this ultimate thing making
hints to XEmacs to show me information about my code, just like 
Visual Assistant does for Visual Studio.

In addition to that, I want the whole thing be as modular as it can be...

Following projects had been undertaken in past :

EDE - emacs development environment - which should provide the "project
management" part of the story

X/Refactory ( xref ) - which is supposed to be refactoring browser 

Speedbar - ultimate tree widget for XEmacs

ECB - Emacs Code Browser - which is nice code browser for C, but is 
limited for code browsing only. No hierarchies or such.

> 
> -- 
> Oleg Goldshmidt | [email-masked] 
> "If it ain't broken, it has not got enough features yet."
> 
> ------------------------ Yahoo! Groups Sponsor 
> ---------------------~-->

-- 
Omer Mussaev
Software Developer
Mercury Interactive / Topaz Prism R&D
Application Team

---

From: Oleg Goldshmidt <[email-masked]>
Date: 19 Dec 2001 17:39:03 +0200

Omer Musaev <[email-masked]> writes:

> it back. 

This is CVS for me. I know as well as I do that there is a nice XEmacs
interface to CVS - pcl-cvs

> In addition, various projects have ( usually ) various build 

For me, each project has its own Makefile. Moreover, I noticed long
ago that 90+% of operations I do on each project are common to all or
most of the projects. So I have a separate "project" under CVS control
that contains boilerplate Makefile that are included in individual
projects' Makefiles.

Different build options are handled via different make targets. Most
are also common to various projects. I managed - with a small effort,
really - to make my boilerplate targets flexible enough that
individual projects (or a particular build) can modify the details
without changing the boilerplate Makefiles.

Of course, make runs quite nicely from inside XEmacs.

> be concerned with that ).

Source control is really on a project level for me, via CVS. Actually,
I have a bunch of make targets that roll development and production 
releases back and forth nicely. I am not sure what you mean by
annotations - CVS has its log and annotation facilities, so it's there.

>   although I would be happier to have something like SNiFF/Retriever.

I use etags, I have to look at SNiFF/Retriever.

>   there any concept coercion? What templates implement my concept? 

These are lacking

> * How those metrics will be affected by refactoring ?

And so are these
 
> In addition to that, I would like to use refactoring browser - like

It's there, isn't it? Oh, did you mean for C++? Does XCScope help a
bit?