On 12/02/2011 08:48 PM, Brendan Miller wrote:
> I'm trying to get a handle on the architecture of cedet and have some
> questions about how the various bits relate to one another.
> 1. How are senator and semantic-ia related?
> Both packages seem to have some overlap in functionality, e.g. jump to
> definition and completion. Personally, I've had better luck with
> semantic-ia. How are they different, and what is one good for vs
The difference is mainly historical. Senator came first, and some
simple completion and jumping mechanisms were created there.
As the "smart completion" engine slowly started forming, that utility
was wrapped up in semantic-ia. The idea was that the functions in
semantic-ia would be super-simple examples on how to use the analyzer to
accomplish different tasks. Unfortunately, those functions turned into
the features of choice, and slowly gained features, making them less
simple from a learning perspective.
I then wrote semantic-complete.el, the home of complex completion
commands. Senator was adapted to start using some of those.
So now there is a mix of odd stuff, and no unified view.
> 2. Same question, but with semantic-complete
> The semantic complete-package also seems to overlap with the last
> two... How does this fit in the architecture relative to them?
My goal was to create a library so someone else could create cool
commands and programs that had symbol completion, and smart code
analysis. My simple examples turned into those commands for most.
> 3. Mark rings.
> In etags, I find-tag in conjunction with pop-tag-mark to navigate.
> etags uses an underlying mark ring, find-tag-marker-ring, to allow
> this. Are there any mark rings in any of the jump to definition
> facilities that I just haven't seen?
> My above questions were motivated partially wondering what the best
> location to add this mark tracking to is. I'm wondering if I need to
> add it to both senator and semantic-ia functions.
Ideally there would be a function for pushing a new tag mark, but there
isn't one in Emacs, but there is one in XEmacs. In Emacs, I think the
feature is buried in the etags code, and I never dug in to see if I
could join in the fun with Semantic commands.
It would be nice if that could be done. In place of the tag ring, the
global mark ring can be used instead, or you can try