From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eric Ludlam Newsgroups: gmane.emacs.devel Subject: Re: IDE Date: Thu, 15 Oct 2015 08:57:07 -0400 Message-ID: <561FA2A3.9030409@gmail.com> References: <5610207A.2000300@harpegolden.net> <83fv1r3gzp.fsf@gnu.org> <83bncf3f9k.fsf@gnu.org> <5610E0BC.8090902@online.de> <83si5r106e.fsf@gnu.org> <831td9z18h.fsf@gnu.org> <5612E996.7090700@yandex.ru> <83bnc7tavr.fsf@gnu.org> <5618C92A.3040207@yandex.ru> <83a8rrt9ag.fsf@gnu.org> <5618D376.1080700@yandex.ru> <56194171.1080006@siege-engine.com> <5619E7C7.5000401@yandex.ru> <561A9E6D.8080403@gmail.com> <561BCF54.7060000@yandex.ru> <561D85DE.4090304@gmail.com> <561F1A75.1000909@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1444913907 5005 80.91.229.3 (15 Oct 2015 12:58:27 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 15 Oct 2015 12:58:27 +0000 (UTC) Cc: adatgyujto@gmail.com, emacs-devel@gnu.org To: Dmitry Gutov , Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Oct 15 14:58:18 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Zmi6j-0005ZX-8e for ged-emacs-devel@m.gmane.org; Thu, 15 Oct 2015 14:58:09 +0200 Original-Received: from localhost ([::1]:47366 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zmi6i-0002ae-8n for ged-emacs-devel@m.gmane.org; Thu, 15 Oct 2015 08:58:08 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:60539) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zmi5s-0002YN-9n for emacs-devel@gnu.org; Thu, 15 Oct 2015 08:57:17 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zmi5n-000402-0a for emacs-devel@gnu.org; Thu, 15 Oct 2015 08:57:16 -0400 Original-Received: from mail-qg0-x232.google.com ([2607:f8b0:400d:c04::232]:36272) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zmi5m-0003zy-Sm; Thu, 15 Oct 2015 08:57:10 -0400 Original-Received: by qgx61 with SMTP id 61so69639226qgx.3; Thu, 15 Oct 2015 05:57:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-type:content-transfer-encoding; bh=iKEYOwVOzt2cEjL9jEMv+m5C8D7kiZYm5vX2E+Q+yIA=; b=J6KpEGAMAWF1IERxsU0edLbi8DdWRnhdKPDjCIBzJdi4Gf0hbabMZCDkMhg7Te6Llj J4GpOvMToXaKmfFFZFobfKfRJllYwZK+L4jaSt1HpjI8UGlAIfMpnzv98RGg1AzgVFgX p4f0cjm0b6Ja8FwEyrKflfgmmYjri5Qh3Lk/LydpNjpQhbqG8GfJXFGT6qEUENL6x6Ra Z+29EhAmsviAu9dFCX3DkdrC31pWOc268+GOfBAWx6J+G2hrsqz9SRHmhg0dLV7w00Fs 6fKptsJ9HYPFV6CGF+aImWM2BP3BsXCcXj4Fi2tSowf7Q7gyBzbOKYMWzOctqCBLfAE/ QvEg== X-Received: by 10.141.23.19 with SMTP id z19mr12066408qhd.39.1444913830459; Thu, 15 Oct 2015 05:57:10 -0700 (PDT) Original-Received: from [192.168.1.202] (pool-71-184-198-118.bstnma.fios.verizon.net. [71.184.198.118]) by smtp.googlemail.com with ESMTPSA id k4sm5407633qkl.26.2015.10.15.05.57.09 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Oct 2015 05:57:09 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 In-Reply-To: <561F1A75.1000909@yandex.ru> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400d:c04::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:191635 Archived-At: 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