[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [cdt-ui-dev] Discussion: the outline view
|
>
> I've written down some of my thoughts about the outline view in CDT into a
> wish-list. (http://bugs.eclipse.org/bugs/show_bug.cgi?id=26482)
> I think the overview is a important area where CDT has one of its greatest
> chances to prove its superiority over other IDEs and editors. Since this
> list has been rather quiet, I thought perhaps I could start a discussion of
> what kinds of features that would be interesting and nice to have in the
> outline view.
>
> This is my current, personal wish-list (directly copied from the feature
> request on bugzilla):
>
> The outline view is one of the absolute strength of the JDT, which I've
> been using a lot. I'd really love to see a outline view as good as the JDT
> one in CDT. (Note: I'm using C so not all of this is relevant to C++).
>
> Some things that I'm missing:
> * The icons from JDT. Perhaps I'm biased by using the JDT for so long,
> but I find the JDT icons much more expressive, easier to understand and
> (sorry to say) more aesthetically pleasing to look at. Some features of the
> JDT icons I miss:
> - The distinction red square/green circle between public/private
> (corresponding to static/non static in C).
> - The distinction between fields/methods (variables/functions in C) by
> using a "hole" in the icon.
>
> * It would be nice to have different icons for different kinds of
> declarations (not only struct and union), such as:
> - variable definition
> - typedef definition
> - variables defined within a struct or union
> Also, having different icons for "pure" defines and macro definitions would
> be helpful, since they often have different purposes.
>
> * Also, in JDT, when a method declared in an interface is implemented, a
> small triangle appears as a icon "decoration". Even though the concept of
> implementation in Java doesn't exist in C, a definition of a previously
> declared function is similar to "implementation" in Java. I believe that
> showing this "implementation triangle" on functions in the CDT overview
> would be very helpful. (It helps you catch declaration problems, such as
> non-static methods not declared in the corresponding .h file, or when you
> by mistake name a function the same as a function already declared in a
> included .h file.)
>
> * In JDT, the type of a variable is shown in the outline, e.g. "foo :
> int". I miss this in the CDT outline view. Also, the type of the arguments
> to a function is shown in the declaration. In Java, this is more or less
> required, since you can overload the same method name with different
> arguments, which you can't in C (ignoring C++ for now :)). But it would
> still be very informative and useful in the CDT view.
>
> * In JDT, declaration attributes such as "static", "synchronized" etc are
> shown as icon "decorations". It would be great if C attributes such as
> "volatile" etc are represented in the same way.
>
> * The #include icon is, imho, really ugly and not especially
> representative, in contrast to the clear and slick import icon in JDT.
> (Includes are not so important, and should not draw the users attention, as
> the big blue icon does.)
> Also, it would be nice if the common practice import statements at the top
> of the source code could be grouped together, similar to the JDT outline.
> (Even if this is a language requirement in Java, but not in C, making it
> easier to represent in the JDT.) Perhaps also showing slightly different
> icons for system includes (<...>) and user includes ("...").
>
> In short, the overview should give the user a clear, concise view of all
> relevant structural features of the code.
>
Agree 200%.
The problem is to gather the information, C/C++ is not as "easy" as Java
in term of parsing. Just to give you a taste of the difficulty:
most of the time the declaration of a variable, say a structure, is
in a header somewhere and the header is PCH(Precompiled Header, not text)
glossing over the trouble of all the macro definitions, #ifdef's etc ...
And this has to work for Windows, GNU/Linux, QnX, etc ...
Good news, we are working on it 8-) .. albeit slowly.