emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[2]: Updated project-specific settings patch


From: Eric M. Ludlam
Subject: Re[2]: Updated project-specific settings patch
Date: Mon, 19 May 2008 16:11:38 -0400

>>> address@hidden 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:                       address@hidden
   Siege: www.siege-engine.com          Emacs: http://cedet.sourceforge.net




reply via email to

[Prev in Thread] Current Thread [Next in Thread]