emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: IDE


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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]