|
From: | Eric Ludlam |
Subject: | Re: IDE |
Date: | Thu, 15 Oct 2015 08:57:07 -0400 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
On 10/14/2015 11:16 PM, Dmitry Gutov wrote:
On 10/14/2015 01:29 AM, Eric Ludlam wrote:Simple things like showing the function you are editing, highlighting tags with various features in different ways,or knowing what class the method you are in are handy and quick little features that can be built generically on top of CEDET, but which require piles of code to do individually without that type of support. imenu, etags, ctags, global, ident, etc all exist because it is useful, but none of those tools get bound into a buffer, so their level of usefulness is limited to "jump to a location" instead of handy inline features.Not sure what you mean by "bound into a buffer", but IMenu, in general, only requires a few regexps, and once you have those in place, which-func-mode can show up in which "tag" you are.
CEDET will store tags into a set of overlays in the buffer. That means figuring out what tag the cursor is in is as fast as asking for what overlay the cursor is in.
Imenu stores it's tags in a list, so you need to scan the list to figure it out. Imenu's tags are also weak, so the elisp knows very little about the tag, only where it is, and enough to queue the reader.
And ctags can be used for "a database of tags across a project". You require it either way, since only open buffers are parsed by Semantic.
Yes. There are other tools that do different pieces of what CEDET does.
> 3) a standard way of knowing where you are in relation to other tags How does that help?
* It lets you 'copy' a tag, and 'yank' it somewhere else. * It provides an accurate 'beginning of defun', 'end of defun', 'narrow to defun' * srecode can programmatically insert new tags between other tags using a hueristic. * It can figure out where to place or find a header comment. * You can decorate the tags accurately * Provides a starting symbol for some commands, such as symref. * Adding folding of tags to a buffer is pretty easy (though that contribution didn't get a release. :( ) * The stuff imenu / which-func does but with more options such as breadcrumb type format. * You can parse the local context more quickly determining nesting context (ie - method in a class) for decoding symbols (like "this") * There's a mode that tracks what tag you are in as you edit so you can jump through your history by name. * From a self-dependency point of view, it enables incremental reparsing of a buffer. -Eric
[Prev in Thread] | Current Thread | [Next in Thread] |