From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: John Wiegley Newsgroups: gmane.emacs.devel Subject: Re: project.el semantics Date: Wed, 11 Nov 2015 09:22:02 -0800 Message-ID: References: <86pp1j4ejm.fsf@stephe-leake.org> <86bnd21q0r.fsf@stephe-leake.org> <55F97EA2.9000408@yandex.ru> <86mvwmz58h.fsf@stephe-leake.org> <55F9A5F8.1030505@yandex.ru> <86pp1ixem2.fsf@stephe-leake.org> <55FAFC36.5010506@yandex.ru> <86twqrww0u.fsf_-_@stephe-leake.org> <563EA9B9.5080404@yandex.ru> <86vb9dufs0.fsf@stephe-leake.org> <563F4915.1080008@yandex.ru> <867flrbksb.fsf@stephe-leake.org> <56409F2D.9060300@yandex.ru> <86mvun9gz7.fsf@stephe-leake.org> <56415902.90103@yandex.ru> <86h9ktah9x.fsf@stephe-leake.org> <56429025.3070008@yandex.ru> <86r3jw4yrf.fsf@stephe-leake.org> <564340DC.5020008@yandex.ru> <564374E7.50600@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1447263012 28068 80.91.229.3 (11 Nov 2015 17:30:12 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 11 Nov 2015 17:30:12 +0000 (UTC) Cc: Stephen Leake , emacs-devel@gnu.org To: Dmitry Gutov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Nov 11 18:30:08 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 1ZwZDj-0005s4-0P for ged-emacs-devel@m.gmane.org; Wed, 11 Nov 2015 18:30:07 +0100 Original-Received: from localhost ([::1]:42068 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZwZDi-0002Wz-82 for ged-emacs-devel@m.gmane.org; Wed, 11 Nov 2015 12:30:06 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:60964) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZwZBD-0000rx-Qp for emacs-devel@gnu.org; Wed, 11 Nov 2015 12:29:29 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZwZ9W-0003Jb-N9 for emacs-devel@gnu.org; Wed, 11 Nov 2015 12:27:31 -0500 Original-Received: from mail-pa0-x22d.google.com ([2607:f8b0:400e:c03::22d]:35249) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZwZ9W-0003JK-Es for emacs-devel@gnu.org; Wed, 11 Nov 2015 12:25:46 -0500 Original-Received: by pasz6 with SMTP id z6so37579917pas.2 for ; Wed, 11 Nov 2015 09:25:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:in-reply-to:date:message-id:references :user-agent:mail-followup-to:mime-version:content-type; bh=811qQ1WvC0UG2cNKOZ39LkMjigbv4RqCKaB0sVeVT3Q=; b=Jg2azrlvKoyTMUZ7E92vPJbpHb1e0V0NyVizwTUdVKoCDyIV1eHT+28ptR3lD+y7ti O3lk6mGKvAX2xC2VrC2l0qMXWz0ZIQzZwcZ6CEOpdtFk0gpRrYGHO0qTLfN52kTZQjJb hBYpE1p7yiKNCIMhtvLnxElivhY7gfrsZs0E9EsJ8stFns6nyO5QRzOC1sclEQf+jj8a YbTBWeOZklsk1+fknuYwQkApOrelz1Ggu3WJjhj0voUNIQAC5DacKqV3IzhOZ+s+2rNC ArD3Kbo2EufjIupq16VePDpLp0fFk4b9JQgEqZydFRcoeW2tojStlbjw2vqUqYzyhbJ2 7DAA== X-Received: by 10.68.178.229 with SMTP id db5mr16193148pbc.79.1447262745391; Wed, 11 Nov 2015 09:25:45 -0800 (PST) Original-Received: from Vulcan.attlocal.net (76-234-68-79.lightspeed.frokca.sbcglobal.net. [76.234.68.79]) by smtp.gmail.com with ESMTPSA id fl1sm10398028pab.10.2015.11.11.09.25.43 (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 11 Nov 2015 09:25:43 -0800 (PST) X-Google-Original-From: "John Wiegley" Original-Received: by Vulcan.attlocal.net (Postfix, from userid 501) id 017D7105463E2; Wed, 11 Nov 2015 09:25:42 -0800 (PST) In-Reply-To: <564374E7.50600@yandex.ru> (Dmitry Gutov's message of "Wed, 11 Nov 2015 19:03:35 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (darwin) Mail-Followup-To: Dmitry Gutov , Stephen Leake , emacs-devel@gnu.org X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c03::22d 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:194109 Archived-At: >>>>> Dmitry Gutov writes: > It's supposed to be a generic replacement for the top-level EDE ede-project > class, more or less. Except I don't know what that is. :( > Those are outside. Does "external to the project" sound better? Ah, I think so, yes. "Ancillary roots" might be even better. > Since you both don't understand the few sentences that seem clear to me, I'm > apparently an utter failure of a technical writer. Which is not terribly > surprising, considering it's my second language. I don't mean to criticize your writing. It's hard to speak at the level of precise specification. > Not "within the project", but related to the project. Does the term > "library" sound familiar? OK, this is starting to make more sense now. So, you're saying that *within* a project there are both distinguished directories, and file subsets with common meaning; and *outside* the project (say, in "/usr/include"), that are likewise distinguished directories and file subsets with common meaning. What we may want to do is avoid the concept "root" entirely, and talk instead about general "filesets": That is, every "project" would have 0 or more associated filesets, and a way to identify which project (perhaps multiple!) that a given buffer is associated with. A fileset could be defined as: Everything within a directory Everything within a directory tree Everything within a directory or tree matching a predicate In the most general case, a fileset is determined by whatever function the user provides in .dir-locals.el. Filesets in turn have an extensible set of attributes: Is the file part of the project, or external to it? Is it under version control? Is it a build product? Should it be searched, tagged, presented in various contexts, etc.? (This itself might be an extensible sublist) This way we can talk in general terms, and not about concrete roots or directories. In the most abstract case, the notion of "project" should be entirely definable by the user, and may look nothing like what we presently have in mind. It's even possible that a buffer without an associated file, say a *Compilation* buffer, could momentarily be considered part of a project, and as a candidate for cross-buffer searching within that project. John