summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric M. Ludlam <zappo@gnu.org>2013-02-03 21:04:46 +0100
committerDavid Engster <dengste@eml.cc>2013-02-03 21:04:46 +0100
commitcf4dd9111067527de50051a303472d31cadee36e (patch)
tree4b47d52e2a8dc5cae940110ee24d3c0eed66d6db
parent72ff76bbc2adc17dbe364dee150dfca9f627e467 (diff)
downloademacs-cf4dd9111067527de50051a303472d31cadee36e.tar.gz
Update EDE documentation (bug #11441).
* doc/misc/ede.texi (Creating a project): Make ede-new doc less specific, and only about items it supports, indicating that there might be more. Remove refs to simple project and direct automake from ede new. (Simple projects): Re-write to not talk about ede-simple-project which is deprecated, and instead use the term to mean projects that don't do much management, just project wrapping. Add ede-generic-project link. (ede-generic-project): New node (bug#11441).
-rw-r--r--doc/misc/ChangeLog12
-rw-r--r--doc/misc/ede.texi104
2 files changed, 83 insertions, 33 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 1fc58f9fa4c..5baf24069da 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,15 @@
+2013-02-03 Eric Ludlam <zappo@gnu.org>
+
+ * doc/misc/ede.texi (Creating a project): Make ede-new doc less
+ specific, and only about items it supports, indicating that there
+ might be more. Remove refs to simple project and direct automake
+ from ede new.
+ (Simple projects): Re-write to not talk about ede-simple-project
+ which is deprecated, and instead use the term to mean projects
+ that don't do much management, just project wrapping. Add
+ ede-generic-project link.
+ (ede-generic-project): New node (bug#11441).
+
2013-02-03 Glenn Morris <rgm@gnu.org>
* cl.texi (Equality Predicates): Fix eq/eql pedantry.
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index cadd815025c..44a0d666e79 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -450,9 +450,11 @@ ede-new}, or click on the @samp{Create Project} item in the
The @command{ede-new} command prompts for the type of project you
would like to create. Each project type has its own benefits or
-language specific enhancements. @ede{} supports four different
-project types: @samp{Make}, @samp{Automake}, @samp{direct Automake},
-and @samp{Simple}.
+language specific enhancements. Not all projects that @ede{} supports
+also supports creating a new project. Projects such as @code{emacs}
+or @code{linux} are design to recognize existing projects only.
+Project types such as @samp{Make} and @samp{Automake} do support
+creating new project types with @command{ede-new}.
@itemize
@item
@@ -468,21 +470,6 @@ Unlike a @samp{Make} project, this project autogenerates a
@file{Makefile.am} file. @ede{} handles the Automake bootstrapping
routines, which import and maintain a @file{configure.am} script and
other required files.
-
-@item
-For the @samp{direct Automake} project type, @ede{} reads directly
-from the Automake files.
-
-You cannot create direct Automake projects with the @command{ede-new}
-command. Instead, when you visit a project with existing Automake
-files, @ede{} automatically detects them.
-
-@item
-The @samp{Simple} project type provides light-weight constructs for
-identifying a project root and looking up files. If you already have
-a non-@ede{} project infrastructure, you can use a @samp{Simple}
-project to provide other Emacs packages, such as Semantic, with some
-information about the project. @xref{Simple projects}.
@end itemize
A subproject is merely a project in a subdirectory of another project.
@@ -795,24 +782,19 @@ able to find your SDK and compile your programs.
@node Simple projects
@section Simple Projects
-There is a wide array of Simple projects. The root for simple
-projects is the class @code{ede-simple-project}. This handles the
-infrastructure of storing a .ede file if needed.
-
-The class @code{ede-simple-project} is designed to be subclassed.
-Then key @ede{} methods can be overridden to provide a quick wrapper
-over any project.
+There is a wide array of simple projects. In this case a simple
+project is one that detects, or is directed to identify a directory as
+belonging to a project, but doesn't provide many features of a typical
+@ede{} project. Having the project however allows tools such as
+@semantic{} to find sources and perform project level completions.
-A second project type is @code{ede-cpp-root}. This project type is
-designed to be created for a directory hierarchy full of C/C++ code.
-It can be configured with minimal lisp knowledge to do header file
-lookup for @semantic{}, improving code completion performance.
@menu
* ede-cpp-root:: This project marks the root of a C/C++ code project.
* ede-java-root:: This project marks the root of a Java project.
* ede-emacs:: A project for working with Emacs.
* ede-linux:: A project for working with Linux kernels.
+* ede-generic-project:: A project type for wrapping build systems with EDE.
* Custom Locate:: Customizing how to locate files in a simple project
@end menu
@@ -1045,7 +1027,7 @@ tree, and enables EDE project mode for it.
It pre-populates the C Preprocessor symbol map for correct parsing,
and has an optimized include file identification function.
-@node ede-linux, Custom Locate, ede-emacs, Simple projects
+@node ede-linux, ede-generic-project, ede-emacs, Simple projects
@subsection ede-linux
The @code{ede-linux} project will automatically identify a Linux
@@ -1054,7 +1036,60 @@ Kernel source tree, and enable EDE project mode for it.
It pre-populates the C Preprocessor symbol map for reasonable parsing,
and has an optimized include file identification function.
-@node Custom Locate, , ede-linux, Simple projects
+@node ede-generic-project, Custom Locate, ede-linux, Simple projects
+@subsection ede-generic-project
+
+The @code{ede-generic-project} is a project system that makes it easy
+to wrap up different kinds of build systems as an EDE project.
+Projects such as @ref{ede-emacs} requires coding skills to create.
+Generic projects also require writing Emacs Lisp code, but the
+requirements are minimal. You can then use
+@command{customize-project} to configure build commands, includes, and
+other options for that project. The configuration is saved in
+@file{EDEConfig.el}.
+
+Generic projects are disabled by default because they have the
+potential to interfere with other projects. To enable the generic
+project sytem to start detecting projects, you need to enable it.
+
+@deffn Command ede-enable-generic-projects
+Enable generic project loaders.
+
+This enables generic loaders for projects that are detected using
+either a @file{Makefile}, @file{SConstruct}, or @file{CMakeLists}.
+
+You do not need to use this command if you create your own generic
+project type.
+@end deffn
+
+If you want to create your own generic project loader, you need to
+define your own project and target classes, and create an autoloader.
+The example for Makefiles looks like this:
+
+@example
+;;; MAKEFILE
+
+(defclass ede-generic-makefile-project (ede-generic-project)
+ ((buildfile :initform "Makefile")
+ )
+ "Generic Project for makefiles.")
+
+(defmethod ede-generic-setup-configuration ((proj ede-generic-makefile-project) config)
+ "Setup a configuration for Make."
+ (oset config build-command "make -k")
+ (oset config debug-command "gdb ")
+ )
+
+(ede-generic-new-autoloader "generic-makefile" "Make"
+ "Makefile" 'ede-generic-makefile-project)
+@end example
+
+This example project will detect any directory with the file
+@file{Makefile} in it as belonging to this project type.
+Customization of the project will allow you to make build and debug
+commands more precise.
+
+@node Custom Locate, , ede-generic-project, Simple projects
@subsection Custom Locate
The various simple project styles all have one major drawback, which
@@ -1062,8 +1097,6 @@ is that the files in the project are not completely known to EDE@.
When the EDE API is used to try and file files by some reference name
in the project, then that could fail.
-@@TODO - Add ID Utils and CScope examples
-
@ede{} can therefore use some external locate commands, such as the unix
``locate'' command, or ``GNU Global''.
@@ -1093,6 +1126,11 @@ You can add your own locate tool but subclassing from
methods. See the code in @file{ede-locate.el} for GNU Global as a
simple example.
+@@TODO - Add ID Utils and CScope examples
+
+More on idutils and cscope is in the CEDET manual, and they each have
+their own section.
+
@node Extending EDE, GNU Free Documentation License, Miscellaneous commands, Top
@chapter Extending @ede{}