Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

What really kills me with vim/emacs is that if I want to search for users of a struct field (e.g: named "count") on a large code-base, there's really no practical way of going about it.


Vim and Emacs are first and foremost text editors, and they're really, really good at that. Each can do a small bit of passable project management.

IDEs are project managers [1], and they're really, really good at that. They generally have passable editors.

IDEs are built with enough project management to satisfy the immediate needs of 80% of developers, and more can be added through plugins, if you or someone else have built the plugin. That probably gets you to 95% or so of developers' project management needs.

Vim, Emacs and other power editors are built with very few project management tools relative to an IDE (Emacs maybe more than others), but can use plugins. But Vim and Emacs exist within or close to the command line, and from there you have a wealth of almost infinitely composable text and file query and manipulation tools.

For example, relative to your complaint, both editors have significant levels of integration with or implemenation of ctags or its descendants: https://en.wikipedia.org/wiki/Ctags

"Ctags is a program that generates an index (or tag) file of names found in source and header files of various programming languages. Depending on the language, functions, variables, class members, macros and so on may be indexed. These tags allow definitions to be quickly and easily located by a text editor or other utility. Alternatively, there is also an output mode that generates a cross reference file, listing information about various names found in a set of language files in human-readable form."

This may not be as out-of-the-box convenient as specifically targeted, belled and whistled IDE implementations of the same functionality, but they are there, they're flexible, and they can be used with or without an editor.

The fundamental difference is excellent project management plus "other," or excellent text manipulation plus "other." I suppose as each side gains more functionality from the other, expectations rise, but it's probably best to remember what each is best at.

[1] By project management I mean from a developer's point of view. How to get at and understand all the code, project-wide.


As far as I know, none of ctags, etags, or cscope can handle searching for a specific struct member. For example, you cannot find all uses of the Linux kernel's scsi_device's "vendor" field without getting a whole lot of other uses of the field "vendor" of other structs as noise.


Semantic/CEDET is now part of Emacs and does a little bit of that job. I haven't explored the all the features beyond the smart "find tag" (semantic-ia-jump) in C++ feature, though, so I don't know if it may meet your expectations.


CEDET seems really promising, thanks! Will try it soon...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: