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: Tue, 13 Oct 2015 22:45:30 -0400 Message-ID: <561DC1CA.6090901@siege-engine.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> <831td3t62e.fsf@gnu.org> <561A6199.1020901@cumego.com> <561B9D87.70504@yandex.ru> <561C2C17.3090503@cumego.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1444790858 23425 80.91.229.3 (14 Oct 2015 02:47:38 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 14 Oct 2015 02:47:38 +0000 (UTC) Cc: emacs-devel@gnu.org To: =?UTF-8?Q?Przemys=c5=82aw_Wojnowski?= , Dmitry Gutov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Oct 14 04:47:30 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 1ZmC6D-0000Q9-AZ for ged-emacs-devel@m.gmane.org; Wed, 14 Oct 2015 04:47:29 +0200 Original-Received: from localhost ([::1]:40261 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmC6C-0007h8-PB for ged-emacs-devel@m.gmane.org; Tue, 13 Oct 2015 22:47:28 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58555) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmC4k-0007RR-Al for emacs-devel@gnu.org; Tue, 13 Oct 2015 22:46:33 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZmC4K-0004fg-Qt for emacs-devel@gnu.org; Tue, 13 Oct 2015 22:45:58 -0400 Original-Received: from mail-qg0-f50.google.com ([209.85.192.50]:36304) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmC4K-0004fb-It for emacs-devel@gnu.org; Tue, 13 Oct 2015 22:45:32 -0400 Original-Received: by qgx61 with SMTP id 61so32105145qgx.3 for ; Tue, 13 Oct 2015 19:45:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-type:content-transfer-encoding; bh=EcgP9CQj93sxEAhixItIzlCE4HW87Kvt9Hmy55QOAKo=; b=Ai0G9BfuwryRRpNL0ysGVt8oAOEq6pW6MCCkiY5Ej2vSY77EJDNLwCJ1v2mHbsOgQS LZknKzSMEICvlf5P/9vQ4U7oN4/Z/SG7ZY43GxFLKPPXZzMo23xD6R33myVKVATtXnGa Rjq+dRbTLRg/u7kj7O27O2hDUeWkG5prZJdzix24i1D+oix89CFEyfAMCl6x/9jipAi2 Fzvnx3kq9tW72ne2ZAR3g9Uc2jBRXKCOeWwogLkDBe6GLslU98IurUZVKKj/j95XUXen KugSpVnd7z6EamEsTqAdNZFevuRFtYSmxUUsD0jemehH2qIz6bSFxBKs1E5JP8AMXVXN cQLA== X-Received: by 10.140.148.203 with SMTP id 194mr914509qhu.102.1444790732221; Tue, 13 Oct 2015 19:45:32 -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 o9sm2537062qkh.17.2015.10.13.19.45.31 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Oct 2015 19:45:31 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 In-Reply-To: <561C2C17.3090503@cumego.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.192.50 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:191525 Archived-At: On 10/12/2015 05:54 PM, Przemysław Wojnowski wrote: > IMHO defining relations between project elements should be delegated > to each type of project. For example Java Project knows where are > sources/tests/resources and can setup that using Project API. > > Moreover in one project (lets call it Meta Project) there > should be a way to configure a set of language specific > subprojects, each one having its own backend(s) setup > (for code completion, docs, etc.). > A backend would be chosen by a mode in the current buffer (region?). > > For example in a common "Java" webapp, the Meta Project setup could be: > { languages: > { java: {backend: classpath-indexer, build-tool: gradle, > other-options: ...} > javascript: {backend: tags-backend, build-tool: npm, ...} > groovy: ...} } > >> Support for build tools seems more straightforward, someone should >> just collect an overview of how users interact with different ones, >> like Make, Maven, Gradle, Rake, etc, to firmly establish the common >> ground. > IMHO better approach would be to provide an API that could be > used by build tool specific plugins to add build tasks > (in a Command Pattern manner). Such registered commands could be > presented to a user in some uniform form. For example: > In Maven plugin: > (build-api-add-command > {name: "compile", command: function-ref}) > > When user selects a command the unified build tools runner does: > (defun build-api-run (command) > (apply command.function-ref)) > > Of course, there can be more than one build tool in a project, > so, if windows/menus were presented, the user would see for each of them > or maybe depending on current buffer's mode. > But the point is to provide an API not an implementation. This is how EDE (a part of CEDET) is setup and works. There are "projects", and in projects there are "targets". There are project build commands, and target build commands. Each project or target can have language specific features for setting up CEDET's parsers. There is a set of different base classes for projects, and many specializations for various flavors of java projects such as maven and ant, C++ projects, lisp projects, and more. Many folks besides myself have built support for different kinds of projects, so extending to new types isn't too hard. Eric