From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: David Engster Newsgroups: gmane.emacs.devel Subject: Re: A unified project root interface Date: Sat, 16 Mar 2013 15:18:50 +0100 Message-ID: <87sj3vv35h.fsf@engster.org> References: <20130309174419.6e1cadb4@forcix.kollektiv-hamburg.de> <87hakh2299.fsf@fimbulvetr.bsc.es> <513FBA1C.5040100@siege-engine.com> <87vc8vyy66.fsf@engster.org> <5143C11D.8070705@siege-engine.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1363443564 24354 80.91.229.3 (16 Mar 2013 14:19:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 16 Mar 2013 14:19:24 +0000 (UTC) Cc: emacs-devel@gnu.org To: "Eric M. Ludlam" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Mar 16 15:19:47 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 1UGrxa-0001o6-Ql for ged-emacs-devel@m.gmane.org; Sat, 16 Mar 2013 15:19:46 +0100 Original-Received: from localhost ([::1]:42571 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UGrxE-0001qi-02 for ged-emacs-devel@m.gmane.org; Sat, 16 Mar 2013 10:19:24 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:39227) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UGrx9-0001nl-Qk for emacs-devel@gnu.org; Sat, 16 Mar 2013 10:19:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UGrx7-0004cq-UW for emacs-devel@gnu.org; Sat, 16 Mar 2013 10:19:19 -0400 Original-Received: from randomsample.de ([83.169.19.17]:51983) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UGrx7-0004cY-2t for emacs-devel@gnu.org; Sat, 16 Mar 2013 10:19:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=S4doAikLXVD4gFzUUyxp0phHpJWkdaXAW8VlnbgFyDI=; b=kxIpMkGfzO4zxnLSXQe/+hwtgIUcWNgrZsxQkCodFyh88KfnTBUtxZwWPo0r4sFjahwtUWwdgznGbERvAuOTBX+kAskF5ebU/4MiMEuhBTIq/dCrOUt61rbh7FX7rRp6; Original-Received: from dslc-082-083-050-059.pools.arcor-ip.net ([82.83.50.59] helo=spaten) by randomsample.de with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1UGrwn-0000na-2N; Sat, 16 Mar 2013 15:19:12 +0100 In-Reply-To: <5143C11D.8070705@siege-engine.com> (Eric M. Ludlam's message of "Fri, 15 Mar 2013 20:47:25 -0400") User-Agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.2.93 (gnu/linux) Mail-Followup-To: "Eric M. Ludlam" , emacs-devel@gnu.org X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 83.169.19.17 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:157902 Archived-At: Eric M. Ludlam writes: > On 03/13/2013 02:03 PM, David Engster wrote: >> There's no doubt that EDE can do all what's needed, but is has to be >> wrapped in something that's easier to use, at least for simple stuff >> like what project-roots.el does. > > Ok, I can buy that. EDE was never simple. I just know that if an > "official" project mechanism is built, I'll have some work to do. ;) I think we don't need another project mechanism in Emacs. EDE and dir-locals should be enough. What we have to do however is to develop at least one very basic project type in EDE which can be used similar to project-root.el. I think what Sudish Joseph explained in this thread is pretty typical: - Recognizing projects based on some files or directories which are in the current directory or further up the tree. - The ability to ask Emacs of what project the current buffer is part of. - Automatic setting of variables based on the current project. The user should be able to configure this in a variable, similar to how project-root.el does it. For example: ("Perl Project" :root-contains ("t" "lib") :on-load 'some-function :variable-settings '((tab-width . 4) (fill-column . 79))) This is easy to implement with EDE. I can work on this, but I'd like to finish my five other things which are 90% finished first... > Also be aware that I ran into a lot of performance issues I had to > work through with EDE project detection. Once other code starts > asking where it is in a project, it's amazing how often that stuff > gets called. A project cache is a super handy thing, and was one of > the key performance improvements I made back when i was trying to > speed up smart completion. Yes, I know. This is why I think EDE should be the framework on which those things are built. -David