From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.devel Subject: Re: progmodes/project.el and search paths Date: Sat, 15 Aug 2015 01:30:41 +0300 Message-ID: <55CE6C11.5070606@yandex.ru> References: <55BE209F.1000009@siege-engine.com> <55BE509B.2080307@yandex.ru> <55BEC1B5.6060204@gmail.com> <86twsgfiuc.fsf@stephe-leake.org> <87mvy2kjxa.fsf@esperi.org.uk> <86si7t11li.fsf@stephe-leake.org> <87lhdkzmdv.fsf@isaac.fritz.box> <86pp2wzcaa.fsf@stephe-leake.org> <877fp3z8i7.fsf@isaac.fritz.box> <86bnefyu0b.fsf@stephe-leake.org> <87k2t0yfz9.fsf@isaac.fritz.box> <86tws4wrar.fsf@stephe-leake.org> <87egj8y0wi.fsf@isaac.fritz.box> <87lhdf1k2a.fsf@esperi.org.uk> <55CC880C.4010008@yandex.ru> <55CDD66F.2080005@siege-engine.com> 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 1439591464 22351 80.91.229.3 (14 Aug 2015 22:31:04 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 14 Aug 2015 22:31:04 +0000 (UTC) Cc: Stephen Leake , emacs-devel@gnu.org To: Eric Ludlam , Nix , David Engster Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Aug 15 00:31:03 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 1ZQNV4-0003t4-Bi for ged-emacs-devel@m.gmane.org; Sat, 15 Aug 2015 00:30:58 +0200 Original-Received: from localhost ([::1]:48510 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZQNV3-000363-LV for ged-emacs-devel@m.gmane.org; Fri, 14 Aug 2015 18:30:57 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:54252) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZQNUy-00035E-NG for emacs-devel@gnu.org; Fri, 14 Aug 2015 18:30:53 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZQNUv-0001TC-H9 for emacs-devel@gnu.org; Fri, 14 Aug 2015 18:30:52 -0400 Original-Received: from mail-wi0-x231.google.com ([2a00:1450:400c:c05::231]:37072) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZQNUv-0001Rn-9P for emacs-devel@gnu.org; Fri, 14 Aug 2015 18:30:49 -0400 Original-Received: by wibhh20 with SMTP id hh20so34344747wib.0 for ; Fri, 14 Aug 2015 15:30:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-type:content-transfer-encoding; bh=f3oA1JKm+0hjmOqDBGV2jIls/0Fj+ts1msQFP04QgkM=; b=AJMvBirW26I0NSiA7ikVWYyanJSmJZVKhSNDPG00AeF25MUfq2XkYZMRhKpLB+4Zbd HPLAiKxH0vNL58pupu/0dDKTNz+omq6cyBKVdm8ukRLD56XE64JN4WQQIBV+rc4k2vb1 wcEJs7bP53GLvPEf4iEu1q+5j6tt+0SMTew28uAsLrUiml9iNAJ/Iewpq7ZseSHndg7q 2J7f08cmQcOqFN97VUzsx+IC5/lUXVvhIi5MBngJrMJ+mGzRfe11o0zWGIs+x1Ook5tY 7O2S689+Qna3XZA20Q7xPAZOHXTYzZ7htykG6cqDTygSFFnWxiLHkbQO+QcoTmyS+wzc thKA== X-Received: by 10.180.108.103 with SMTP id hj7mr10622610wib.11.1439591448212; Fri, 14 Aug 2015 15:30:48 -0700 (PDT) Original-Received: from [10.9.0.103] (nat.webazilla.com. [78.140.128.228]) by smtp.googlemail.com with ESMTPSA id f7sm1164867wij.17.2015.08.14.15.30.46 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 14 Aug 2015 15:30:47 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:40.0) Gecko/20100101 Thunderbird/40.0 In-Reply-To: <55CDD66F.2080005@siege-engine.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:400c:c05::231 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:188803 Archived-At: On 08/14/2015 02:52 PM, Eric Ludlam wrote: > 2) Parsers don't check types, etc as they go, and are flexible about the > symbols they accept. > > This means you can get irrational tags. This is for a combination of > handling incomplete code, speed (less to do) and because most folks just > go an run their compiler at some point anyway. Doesn't that mean that code completion at the end of a chain of calls can be inaccurate (with e.g. lots of false positives), even if code is otherwise valid? > 3) Iterative parsing, so each invocation of the parser only executes > across a single tag. > > This means that if parsing fails, we just move forward one lexical token > and try again. This lets the parser just wash over anything it doesn't > get. AFAIK, parsers in general try to ignore errors, or else you wouldn't be able to get any useful information, after compilation fails, about any errors after the first one. > 4) Incremental parser > > Emacs watches you edit, tracks your changes, and matches it up against > previously parsed tags. If things are 'broken' in the code you edit, > but you didn't touch the boundaries of the other nearby tags, it lets it > be until next time. This means all the previously captured data is > available for use, including the active broken tag you might be editing. That sounds useful. > It also has the typical bison error handling, but that tends not to be > necessary. > > In summary; Semantic can extract useful data out of pretty badly trashed > code, and track your changes while you edit in a robust way. It seems I stand corrected, thanks. However, it would be interesting to do a comparison on some real file, against a widely used compiler, such as Clang.