Re: C Integrated Development Environment
> On Fri, Feb 01, 2002 at 09:09:34AM +1000, john wrote:
> | dman wrote:
> | > On Thu, Jan 31, 2002 at 01:35:38AM -0500, Scott Henson wrote:
> | > | Im setting up a machine for a friend and he needs an IDE for developing
> | > | C and C++. Anyone have a recomendation on a good one he could use.
> | >
> | > I recommend Debian for the IDE!!
> | >
> | > What do I mean by that? Well, here is a major difference between MS
> | > Windows and UNIX (others have contributed to this conclusion as well) :
> | <snip>
> | > The moral of the story : learn to use UNIX to its full extent and
> | > you'll need nothing else. As a bonus, all those utilities are useful
> | > even when you're not coding!
> | Actually, as much as it shames me to admit it, there is one feature
> | in the VC6 M$ bloat thing IDE I really want to see on a Unix
> | platform, and that's the incredibly powerful way it can back
> | reference callers, classes etc. Perhaps it's me, but I just can't
> | get ctags etc to work the same way, and my LISP is too weak to make
> | emacs do it.
> Is this what you're looking for?
> You have some file open in a buffer and it contains the following
> snippet of C code :
> local_var = my_function( an_argument ) ;
> You want to see what 'my_function' looks like.
> If so, ctags is your man.
> Here's how I use it :
> Sit in "$my_proj_dir" and run
> ctags --recurse=yes --extra=+q --excmd=pattern src
> (well, the options are really in ~/.ctags)
> Now you have a file named "tags" that contains the tags.
> Start up gvim or vim *with $my_proj_dir as $PWD*. If you want to go
> to a tag
> :tag <name>
> (with tab-completion)
> If you have the above senario, press ^] to jump to the tag matching
> the text under the cursor. Press ^T to jump back to the previous tag
> on the tag stack (ie after you've press ^] a few times).
> The key issues I ran into are
> 1) the tags file contains paths relative to the directory ctags
> was run from
> 2) your editor must be able to find the tags file
> You can have multiple tags files, one for each subdirectory or
> whatever, but that seems to me like it would be harder to manage. Get
> used to the commands so that you can just use tags or :e to open files
> and keep the current directory always at the top of your project
> directory. (if you google a bit you'll surely come across an article
> I read a while back explaining techniques for managing tags in a
What VC6 does (and I stress this is the ONLY thing I like about it!!).
I right click on a function call in the source code, and I get a pop-up list of
all objects and methods that call it. This list is in a treeview, so I can see
full dependency information. If the method I chose is overloaded, or the class
in question has multiple inhertance it may add a list to allow me to refine the
search before I get the dependency tree.
Not only that, but I can then open a file up the 'stack hierarchy' at exactly
the line where the method (or it's referrer) is called.
Now, to be even more cool, if I do exactly the same thing in the 'Object
Browser' window I can navigate in the other direction. (ie who this method
calls, who they call etc etc all in a treeview.)
This is incredibly useful when re-factoring legacy code, or when checking that a
new name/method doesnt hide another name we need.
ctags doesnt cut it, it's not good enough for C++ as far as I can tell - it
doesnt understand the C++ language, although it is great for C.
And having had a look at Eclipse I cant be bothered at this point to work out
how to make the damn thing run properly. I suspect it wants an entire JDK
installation under it's own directory!!
If you know a way to get Ctags or some other tagging system to play nice please
let me know. Even better if it integrates with Emacs.
John P Foster
Senoir Research Scientist
Golden Orb Pty Ltd