From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Evgeniy Dushistov Newsgroups: gmane.emacs.devel Subject: Re: Project detection and configuration (Was: IDE) Date: Thu, 15 Oct 2015 02:34:11 +0300 Message-ID: <20151014233410.GA10264@whiterain> References: <87a8rlcuhu.fsf@fimbulvetr.bsc.es> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1444865735 32380 80.91.229.3 (14 Oct 2015 23:35:35 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 14 Oct 2015 23:35:35 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Oct 15 01:35:27 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 1ZmVZt-0004Dl-4B for ged-emacs-devel@m.gmane.org; Thu, 15 Oct 2015 01:35:25 +0200 Original-Received: from localhost ([::1]:45032 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmVZs-0007Ca-EK for ged-emacs-devel@m.gmane.org; Wed, 14 Oct 2015 19:35:24 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35749) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmVYq-0007Ag-Sm for emacs-devel@gnu.org; Wed, 14 Oct 2015 19:34:21 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZmVYn-0002HU-KQ for emacs-devel@gnu.org; Wed, 14 Oct 2015 19:34:20 -0400 Original-Received: from smtp32.i.mail.ru ([94.100.177.92]:59407) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZmVYn-0002Gs-4P for emacs-devel@gnu.org; Wed, 14 Oct 2015 19:34:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mail.ru; s=mail2; h=In-Reply-To:Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID:Subject:To:From:Date; bh=Hbc4bIFgc7LfRXGBDVb5bdBKrr1HGHvMr6l/ofaQsss=; b=qsXP8BnIHPH6A2rNwSp/voPnxLq9Jpvm/y7KLW8JCek/OcJ7OoNa+WFy3q8STBinrlC2tEx2jeAm644LwehwFuQUeT03aRdzImnaz67ElNGkEjJfpxEjnuriiUtfdeQjhaQF8kXF6v5+RNg19ckIligsTQHd6AHiFAgN51/cRrk=; Original-Received: from [89.23.194.117] (port=40554 helo=whiterain) by smtp32.i.mail.ru with esmtpa (envelope-from ) id 1ZmVYj-00028I-MC for emacs-devel@gnu.org; Thu, 15 Oct 2015 02:34:13 +0300 Content-Disposition: inline In-Reply-To: <87a8rlcuhu.fsf@fimbulvetr.bsc.es> User-Agent: Mutt/1.5.24 (2015-08-30) X-Mras: Ok X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 94.100.177.92 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:191598 Archived-At: On Wed, Oct 14, 2015 at 05:58:21PM +0200, LluĂ­s wrote: > > As Eric pointed out, most of the user-facing features of an IDE depend on some > underlying support to detect and configure projects. > > Now, it is not clear what "detect and configure" really means, but it seems that > EDE (CEDET's project management component) is not fully satisfying or simple > enough to extend/configure at this point in time. > > I've formed my own opinions on how this could be improved, but I would like to > hear what others think before discussing how to do it. So, what is required from > "project management"? A few things quickly come into mind: > > * Repository > ** Detect the root directory that conforms a checked-out repository > ** Ignore repository-specific files on other components > ** Interact with repo-management tools? > "magit" detect repo root automatically, you just call "magit-status" in buffer mapped to file/directory inside repo and it show right stuff, may be just create "vc-status" that call "vc-dir" with relevant dir? Anyway why do something about this, "vc-" and "magit-" good enough, is any IDE do better stuff using information about project? > * Project information > ** Name, version, homepage, etc > IMHO, never used this information in any IDE, except name. > * Build system Actually if we talk about C/C++ open source project this is a key for all other features. Almost all C/C++ open source project have makefile/cmake file/scons etc, and thats all. IDE must parse them and exctract information about: - how to compile exactly one source file (to get auto completion, refactoring, right syntax highlight, warning/errors during typing [like flymake] etc) - what executable files was created (to make possible click Debug/Run, to run valgrind with it, excract gcov information etc) And cedet have framework for this, it can parse makefile/cmake, plus you can easily extend it to support new build system, writing something like this: (defclass my-ede-cpp-root-project (ede-cpp-root-project eieio-instance-tracker) ( (custom_build_cmd :initarg :custom_build_cmd :initform "" :type string :custom string :documentation "Set this field to shell command for build your project") (path_to_exe :initarg :path_to_exe :initfrom "" :type string :custom string :documentation "This field hold path to your project") ) "My class for ede projects" :method-invocation-order :depth-first ) So it would be great to finish makefile/cmake support in EDE, plus some easy way to get from EDE information about exact file: includes, defines, plus flags like -std=c++11 -- /Evgeniy