From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: A unified project root interface Date: Sun, 10 Mar 2013 00:38:12 -0500 Message-ID: References: <20130309174419.6e1cadb4@forcix.kollektiv-hamburg.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1362893899 22972 80.91.229.3 (10 Mar 2013 05:38:19 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 10 Mar 2013 05:38:19 +0000 (UTC) Cc: emacs-devel@gnu.org To: Jorgen Schaefer Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Mar 10 06:38:44 2013 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 1UEYy2-0008CO-2S for ged-emacs-devel@m.gmane.org; Sun, 10 Mar 2013 06:38:42 +0100 Original-Received: from localhost ([::1]:40184 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UEYxg-0006Em-3Q for ged-emacs-devel@m.gmane.org; Sun, 10 Mar 2013 00:38:20 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:41801) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UEYxb-0006AS-A3 for emacs-devel@gnu.org; Sun, 10 Mar 2013 00:38:17 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UEYxa-0003xN-7P for emacs-devel@gnu.org; Sun, 10 Mar 2013 00:38:15 -0500 Original-Received: from ironport2-out.teksavvy.com ([206.248.154.182]:5633) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UEYxa-0003x9-2o for emacs-devel@gnu.org; Sun, 10 Mar 2013 00:38:14 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EABK/CFFsoXZ8/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDiYSFBgNJC6HcAbBLZEKA4hhlwAEhRWBXoMV X-IPAS-Result: Av4EABK/CFFsoXZ8/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDiYSFBgNJC6HcAbBLZEKA4hhlwAEhRWBXoMV X-IronPort-AV: E=Sophos;i="4.84,565,1355115600"; d="scan'208";a="3648322" Original-Received: from 108-161-118-124.dsl.teksavvy.com (HELO fmsmemgm.homelinux.net) ([108.161.118.124]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 10 Mar 2013 00:38:11 -0500 Original-Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id D1C95AE18E; Sun, 10 Mar 2013 00:38:12 -0500 (EST) In-Reply-To: <20130309174419.6e1cadb4@forcix.kollektiv-hamburg.de> (Jorgen Schaefer's message of "Sat, 9 Mar 2013 17:44:19 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.248.154.182 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:157682 Archived-At: > So this is my somewhat verbose request to say "yes, let's do this" and > pick a library to provide the functionality. Agreed. There are already different such things distributed with Emacs: .dir-locals.el is one of them. CEDET has its own notion. As mentioned .dir-local.el often acts as a project root, but it can also appear in sub-directories of a project, so it's not sufficient. It should at least be augmented so that some .dir-locals.el can be flagged as "non-root". If the only need is to figure out the "root directory of the project", then maybe a simple solution is: (defvar project-root-predicate (lambda () (file-exists-p ".dir-locals.el"))) (defun project-root () (locate-dominating-file default-directory project-root-predicate)) where packages can (add-function :until-before (default-value project-root-predicate) ) to recognize other "tell tale sign" of a project root (e.g. a Tupfile). Stefan