unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Eric M. Ludlam" <eric@siege-engine.com>
To: joakim@verona.se
Cc: tromey@redhat.com, emacs-devel@gnu.org
Subject: Re[2]: Updated project-specific settings patch
Date: Mon, 19 May 2008 16:11:38 -0400	[thread overview]
Message-ID: <200805192011.m4JKBcOC016137@projectile.siege-engine.com> (raw)
In-Reply-To: <m3ej7yf5u0.fsf@verona.se> (joakim@verona.se)

>>> joakim@verona.se seems to think that:
>Funnily I was making a list of what features Id like in an emacs project
>facility today:
>
>Whats there already:
>- JDEE, for java projects
>- cedet proj facility EDE, mostly for makefile based projects
>- some project dirvars implementations, such as .dir-settings.el
>
>What I'd really like:
>- find file in project, only src not .o files etc
>- specify some different build commands for a project
>- specify some different debug targets
>
>What would be nice
>- recursive inheritable proj defs
>- use the customize gui for proj settings, like JDEE

EDE does all the things you mention above except it wants to also
build Makefiles.  The features you list, however, are not dependent on
the Makefile build system.  It would be a matter of coding a new EDE
project style that excludes the Makefile construction, and wraps up
the other concepts to simple string configurations.  The machinery to
do the other stuff would be inherited.

The SRC find problem, however, gets a little dicey for particularly
large projects.  I always though using locate, or something similar
would be the way to go for that.

>- generic project templates that can be instantiated for c++, maven
>java, plain java, etc

EDE doesn't do templates, though a template using application could
use EDE to identify a project, or be told of the need to do a code-gen
pass.  If you mean a template to build a directory structure and
populate it with a few files, I have nothing for that.


Here is a quick summary of EDE code to help explain the above, and
perhaps my other post on this topic.


EDE uses EIEIO which implements some of CLOS.  EIEIO objects can use
`customize' to allow changing slot values via custom.

EDE has a set of "project autoloads"  that describe different project
types.  When EDE is active, when a file is loaded, if it matches one
of the autoloads, the actual project style is loaded, and that project
style then operates on that set of files.

Code-wise, there is a class hierarchy, starting with the autoload
projects.

Inheriting from there is the base EDE project and target classes.
These define the behavior of all EDE projects and targets, and the EDE
user interface (menu, compile, debug, find, configure) all operates
against that interface.

Inheriting from the base EDE projects are targets are:

project-am - Sees Makefile.am, and operates directly from that.  No
need for anything else.  You can "add" a file to a target, and it will
edit Makefile.am for you.

ede-proj - This is the project type that creates Project.ede files
folks see and talk about.  It creates a new Makefile or Makefile.am
whenever you customize the project object.

ede-simple - A first cut at a simplified not too smart project

ede-cpp-root - A c++ specific project designed for finding C/C++ files
in a project.  No persistence.


Each project type then implements whichever aspects of the UI behavior
it wants.

Eric

-- 
          Eric Ludlam:                       eric@siege-engine.com
   Siege: www.siege-engine.com          Emacs: http://cedet.sourceforge.net




  reply	other threads:[~2008-05-19 20:11 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-19 17:07 Updated project-specific settings patch Tom Tromey
2008-05-19 18:51 ` Stefan Monnier
2008-05-19 18:55   ` Miles Bader
2008-05-19 19:00     ` Tom Tromey
2008-05-20  2:35       ` Miles Bader
2008-05-19 19:23   ` Tom Tromey
2008-05-19 19:51     ` Re[2]: Project local variables & EDE (was: Updated project-specific settings patch) Eric M. Ludlam
2008-05-19 22:41     ` Updated project-specific settings patch Michael Olson
2008-05-20  0:04       ` Stefan Monnier
2008-05-20  3:18         ` Michael Olson
2008-05-20  0:14       ` Miles Bader
2008-05-20  7:19         ` David Kastrup
2008-05-19 20:29   ` David Kastrup
2008-05-19 21:57     ` Stefan Monnier
2008-05-19 19:32 ` joakim
2008-05-19 20:11   ` Eric M. Ludlam [this message]
2008-05-20  3:27     ` Eli Zaretskii
2008-05-19 20:02 ` Chong Yidong
2008-05-19 21:55   ` Tom Tromey
2008-05-20 14:02     ` Chong Yidong
2008-05-20 18:45       ` Stefan Monnier
2008-05-21  0:04         ` Miles Bader
2008-05-21 19:49       ` Tom Tromey
2008-05-22  3:46         ` Chong Yidong
2008-05-23  6:31           ` Michael Olson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200805192011.m4JKBcOC016137@projectile.siege-engine.com \
    --to=eric@siege-engine.com \
    --cc=emacs-devel@gnu.org \
    --cc=joakim@verona.se \
    --cc=tromey@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).