]> code.delx.au - gnu-emacs/blobdiff - doc/misc/ede.texi
ChangeLog fixes
[gnu-emacs] / doc / misc / ede.texi
index b0e149b09b6d8c2c5e2d9dc453c02909f7c1a1f7..3ae040debeaa383d8aa37bf3a17b65f2ff2112d3 100644 (file)
@@ -1,11 +1,13 @@
 \input texinfo
 @setfilename ../../info/ede
 @settitle Emacs Development Environment
+@documentencoding UTF-8
 
 @copying
 This file describes EDE, the Emacs Development Environment.
 
-Copyright @copyright{} 1998-2001, 2004-2005, 2008-2012  Free Software Foundation, Inc.
+Copyright @copyright{} 1998--2001, 2004--2005, 2008--2014
+Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
@@ -16,8 +18,7 @@ and with the Back-Cover Texts as in (a) below.  A copy of the license
 is included in the section entitled ``GNU Free Documentation License.''
 
 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
-modify this GNU manual.  Buying copies from the FSF supports it in
-developing GNU and promoting software freedom.''
+modify this GNU manual.''
 @end quotation
 @end copying
 
@@ -30,6 +31,9 @@ developing GNU and promoting software freedom.''
 @center @titlefont{EDE (The Emacs Development Environment)}
 @sp 4
 @center by Eric Ludlam
+@page
+@vskip 0pt plus 1filll
+@insertcopying
 @end titlepage
 @page
 
@@ -63,7 +67,7 @@ developing GNU and promoting software freedom.''
 
 @contents
 
-@node top, EDE Project Concepts, (dir), (dir)
+@node Top, EDE Project Concepts, (dir), (dir)
 @top EDE
 @comment  node-name,  next,  previous,  up
 
@@ -88,9 +92,10 @@ learn and adopt GNU ways of doing things.
 * Building and Debugging::      Initiating a build or debug session.
 * Miscellaneous commands::      Other project related commands.
 * Extending EDE::               Programming and extending @ede{}.
+* GNU Free Documentation License::  The license for this documentation.
 @end menu
 
-@node EDE Project Concepts, EDE Mode, top, top
+@node EDE Project Concepts, EDE Mode, Top, Top
 @chapter @ede{} Project Concepts
 
 @ede{} is a generic interface for managing projects.  It specifies a
@@ -125,7 +130,7 @@ of search to files in a single target, or to discover the location of
 documentation or interface files.  @ede{} can provide this
 information.
 
-@node EDE Mode, Quick Start, EDE Project Concepts, top
+@node EDE Mode, Quick Start, EDE Project Concepts, Top
 @chapter @ede{} Mode
 
 @ede{} is implemented as a minor mode, which augments other modes such
@@ -142,7 +147,7 @@ bar.  This menu provides several menu items for high-level @ede{}
 commands.  These menu items, and their corresponding keybindings, are
 independent of the type of project you are actually working on.
 
-@node Quick Start, Creating a project, EDE Mode, top
+@node Quick Start, Creating a project, EDE Mode, Top
 @chapter Quick Start
 
 Once you have @ede{} enabled, you can create a project.  This chapter
@@ -302,7 +307,7 @@ that file to your target.
 . a myprogram RET
 @end example
 
-Note that these promps often have completion, so you can just press
+Note that these prompts often have completion, so you can just press
 @kbd{TAB} to complete the name @file{myprogram}.
 
 If you had many files to add to the same target, you could mark them
@@ -438,7 +443,7 @@ C-c . R RET RET
 If your program takes command line arguments, you can type them in
 when it offers the command line you want to use to run your program.
 
-@node Creating a project, Modifying your project, Quick Start, top
+@node Creating a project, Modifying your project, Quick Start, Top
 @chapter Creating a project
 
 To create a new project, first visit a file that you want to include
@@ -449,9 +454,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 allow creating a new project.  Projects such as @code{emacs}
+or @code{linux} are designed 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
@@ -467,21 +474,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.
@@ -496,7 +488,7 @@ the top-most project's makefile as a starting place for the build.  How
 the toplevel project handles subprojects in the build process is
 dependent on that project's type.
 
-@node Modifying your project, Building and Debugging, Creating a project, top
+@node Modifying your project, Building and Debugging, Creating a project, Top
 @chapter Modifying your project
 
 In this chapter, we describe the generic features for manipulating
@@ -677,7 +669,7 @@ block for ``configurations''.  Add a new named configuration here.
 To switch between different active configurations, modify the
 ``configuration default'' slot.
 
-@node Building and Debugging, Miscellaneous commands, Modifying your project, top
+@node Building and Debugging, Miscellaneous commands, Modifying your project, Top
 @chapter Building and Debugging
 
 @ede{} provides the following ``project-aware'' compilation and
@@ -696,7 +688,7 @@ Build a distribution file for your project.
 
 These commands are also available from the @samp{Development} menu.
 
-@node Miscellaneous commands, Extending EDE, Building and Debugging, top
+@node Miscellaneous commands, Extending EDE, Building and Debugging, Top
 @chapter Miscellaneous commands
 
 If you opt to go in and edit @ede{} project files directly---for
@@ -785,7 +777,7 @@ also supports several debugging tools via @file{android.el}.
 An arduino project of type @samp{ede-arduino-project} will read your
 @file{~/.arduino/preferences.txt} file, and identify your sketches.
 You will still need the Arduino IDE to set up your preferences and
-locate your arduino.  After quiting the IDE, Emacs will be able to
+locate your arduino.  After quitting the IDE, Emacs will be able to
 find your sketches, compile them, and upload them to your arduino.
 
 If you have the @file{arduino} command on your path, @ede{} will be
@@ -794,24 +786,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
 
@@ -1044,7 +1031,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
@@ -1053,16 +1040,67 @@ 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} require 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 use the generic
+project system 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
-is that the files in the project are not completely known to EDE.
+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''.
 
@@ -1074,7 +1112,7 @@ To enable one of these tools, set the variable
 @code{ede-locate-setup-options} with the names of different locate
 objects.  @ref{Miscellaneous commands}.
 
-Configure this in your @file{.emacs} before loading in CEDET or EDE.
+Configure this in your @file{.emacs} before loading in CEDET or EDE@.
 If you want to add support for GNU Global, your configuration would
 look like this:
 
@@ -1083,7 +1121,7 @@ look like this:
 @end example
 
 That way, when a search needs to be done, it will first try using
-GLOBAL.  If global is not available for that directory, then it will
+GLOBAL@.  If global is not available for that directory, then it will
 revert to the base locate object.  The base object always fails to
 find a file.
 
@@ -1092,7 +1130,12 @@ 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.
 
-@node Extending EDE,  , Miscellaneous commands, top
+@@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{}
 
 This chapter is intended for users who want to write new parts or fix
@@ -1100,7 +1143,7 @@ bugs in @ede{}.  A knowledge of Emacs Lisp, and some @eieio{}(CLOS) is
 required.
 
 @ede{} uses @eieio{}, the CLOS package for Emacs, to define two object
-superclasses, specifically the PROJECT and TARGET.  All commands in
+superclasses, specifically the PROJECT and TARGET@.  All commands in
 @ede{} are usually meant to address the current project, or current
 target.
 
@@ -1109,7 +1152,7 @@ superclasses.  In this way, specific behaviors such as how a project
 is saved, or how a target is compiled can be customized by a project
 author in detail.  @ede{} communicates to these project objects via an
 API using methods.  The commands you use in @ede{} mode are high-level
-functional wrappers over these methods.  @xref{(eieio)Top}. For
+functional wrappers over these methods.  @xref{Top,,, eieio, EIEIO manual}. For
 details on using @eieio{} to extending classes, and writing methods.
 
 If you intend to extend @ede{}, it is most likely that a new target type is
@@ -1169,14 +1212,14 @@ Some example project types are:
 
 @table @code
 @item project-am
-Autmake project which reads existing Automake files.
+Automake project which reads existing Automake files.
 @item ede-proj-project
 This project type will create @file{Makefiles},
 or @file{Makefile.am} files to compile your project.
 @item ede-linux
 This project type will detect linux source trees.
 @item ede-emacs
-This proejct will detect an Emacs source tree.
+This project will detect an Emacs source tree.
 @end table
 
 There are several other project types as well.
@@ -1248,7 +1291,7 @@ detection scheme works like this:
 
 @table @asis
 @item Step 1:
-@code{find-file-hooks} calls @code{ede-turn-on-hook} on BUFFER.
+@code{find-file-hook} calls @code{ede-turn-on-hook} on BUFFER.
 @item Step 2:
 @code{ede-turn-on-hook} turns on @code{ede-minor-mode}
 @item Step 3:
@@ -1273,7 +1316,7 @@ The function @code{ede-directory-project-p} will call
 @code{ede-dir-to-projectfile} on every @code{ede-project-autoload}
 until one of them returns true.  The method
 @code{ede-dir-to-projectfile} in turn gets the @code{:proj-file} slot
-from the autoload.  If it is a string (ie, a project file name), it
+from the autoload.  If it is a string (i.e., a project file name), it
 checks to see if that exists in BUFFER's directory.  If it is a
 function, then it calls that function and expects it to return a file
 name or nil.  If the file exists, then this directory is assumed to be
@@ -1291,7 +1334,7 @@ it finds the top of the project.  It does this by calling
 @code{ede-toplevel-project}.  If this hasn't already been discovered,
 the directories as scanned upward one at a time until a directory with
 no project is found.  The last found project becomes the project
-root.  If the ofund instance of @code{ede-project-autoload} has a
+root.  If the found instance of @code{ede-project-autoload} has a
 valid @code{proj-root} slot value, then that function is called instead
 of scanning the project by hand.  Some project types have a short-cut
 for determining the root of a project, so this comes in handy.
@@ -1360,7 +1403,8 @@ association when a file is loaded.  It is generally unnecessary to
 override this unless you keep auxiliary files.
 @end table
 
-These methods are used by the semantic package extensions @xref{(semantic)Top}.
+These methods are used by the semantic package extensions.
+@xref{Top,,, semantic, Semantic manual}.
 
 @table @code
 @item ede-buffer-header-file
@@ -1379,7 +1423,7 @@ List all documentation a project or target is responsible for.
 @ede{} projects track source file / target associates via source code
 objects.  The definitions for this is in @file{ede-source.el}.  A source
 code object contains methods that know how to identify a file as being
-of that class, (ie, a C file ends with @file{.c}).  Some targets can
+of that class, (i.e., a C file ends with @file{.c}).  Some targets can
 handle many different types of sources which must all be compiled
 together.  For example, a mixed C and C++ program would have
 instantiations of both sourcecode types.
@@ -1524,26 +1568,22 @@ Type: @code{string} @*
 Default Value: @code{"Untitled"}
 
 The name used when generating distribution files.
-@refill
 
 @item :version
 Type: @code{string} @*
 Default Value: @code{"1.0"}
 
 The version number used when distributing files.
-@refill
 
 @item :directory
 Type: @code{string}
 
 Directory this project is associated with.
-@refill
 
 @item :file
 Type: @code{string}
 
 File name where this project is stored.
-@refill
 
 @end table
 
@@ -1616,35 +1656,30 @@ Make sure placeholder @var{THIS} is replaced with the real thing, and pass throu
 Type: @code{list}
 
 List of top level targets in this project.
-@refill
 
 @item :tool-cache
 Type: @code{list}
 
 List of tool cache configurations in this project.
 This allows any tool to create, manage, and persist project-specific settings.
-@refill
 
 @item :web-site-url
 Type: @code{string} @*
 
 URL to this projects web site.
 This is a URL to be sent to a web site for documentation.
-@refill
 
 @item :web-site-directory @*
 
 A directory where web pages can be found by Emacs.
-For remote locations use a path compatible with ange-ftp or EFS.
+For remote locations use a path compatible with ange-ftp or EFS@.
 You can also use TRAMP for use with rcp & scp.
-@refill
 
 @item :web-site-file @*
 
 A file which contains the home page for this project.
 This file can be relative to slot @code{web-site-directory}.
 This can be a local file, use ange-ftp, EFS, or TRAMP.
-@refill
 
 @item :ftp-site
 Type: @code{string} @*
@@ -1652,7 +1687,6 @@ Type: @code{string} @*
 FTP site where this project's distribution can be found.
 This FTP site should be in Emacs form, as needed by @code{ange-ftp}, but can
 also be of a form used by TRAMP for use with scp, or rcp.
-@refill
 
 @item :ftp-upload-site
 Type: @code{string} @*
@@ -1660,7 +1694,6 @@ Type: @code{string} @*
 FTP Site to upload new distributions to.
 This FTP site should be in Emacs form as needed by @code{ange-ftp}.
 If this slot is @code{nil}, then use @code{ftp-site} instead.
-@refill
 
 @item :configurations
 Type: @code{list} @*
@@ -1669,19 +1702,16 @@ Default Value: @code{("debug" "release")}
 List of available configuration types.
 Individual target/project types can form associations between a configuration,
 and target specific elements such as build variables.
-@refill
 
 @item :configuration-default @*
 Default Value: @code{"debug"}
 
 The default configuration.
-@refill
 
 @item :local-variables @*
 Default Value: @code{nil}
 
 Project local variables
-@refill
 
 @end table
 
@@ -1916,7 +1946,7 @@ Type: @code{list} @*
 Default Value: @code{(quote ("/include" "../include/"))}
 
 The default locate function expands filenames within a project.
-If a header file (.h, .hh, etc) name is expanded, and
+If a header file (.h, .hh, etc.)@: name is expanded, and
 the @code{:locate-fcn} slot is @code{nil}, then the include path is checked
 first, and other directories are ignored.  For very large
 projects, this optimization can save a lot of time.
@@ -1926,7 +1956,6 @@ buffer's @code{default-directory} (not starting with a /).  Directories
 that are relative to the project's root should start with a /, such
 as  "/include", meaning the directory @code{include} off the project root
 directory.
-@refill
 
 @item :system-include-path
 Type: @code{list} @*
@@ -1936,7 +1965,6 @@ The system include path for files in this project.
 C files initialized in an ede-cpp-root-project have their semantic
 system include path set to this value.  If this is @code{nil}, then the
 semantic path is not modified.
-@refill
 
 @item :spp-table
 Type: @code{list} @*
@@ -1948,7 +1976,6 @@ These macros might be passed in through the command line compiler, or
 are critical symbols derived from header files.  Providing header files
 macro values through this slot improves accuracy and performance.
 Use `:spp-files' to use these files directly.
-@refill
 
 @item :spp-files
 Type: @code{list} @*
@@ -1958,14 +1985,12 @@ C header file with Preprocessor macros for your files.
 The PreProcessor symbols appearing in these files will be used while
 parsing files in this project.
 See @code{semantic-lex-c-preprocessor-symbol-map} for more on how this works.
-@refill
 
 @item :header-match-regexp
 Type: @code{string} @*
 Default Value: @code{"\\.\\(h\\(h\\|xx\\|pp\\|\\+\\+\\)?\\|H\\)$\\|\\<\\w+$"}
 
 Regexp used to identify C/C++ header files.
-@refill
 
 @item :locate-fcn
 Type: @code{(or null function)} @*
@@ -1978,9 +2003,8 @@ The function symbol must take two arguments:
   NAME - The name of the file to find.
   DIR - The directory root for this cpp-root project.
 
-It should return the fully qualified file name passed in from NAME.  If that file does not
+It should return the fully qualified file name passed in from NAME@.  If that file does not
 exist, it should return nil.
-@refill
 
 @end table
 
@@ -2104,14 +2128,12 @@ The type of Makefile to generate.
 Can be one of @code{'Makefile}, 'Makefile.in, or 'Makefile.am.
 If this value is NOT @code{'Makefile}, then that overrides the @code{:makefile} slot
 in targets.
-@refill
 
 @item :variables
 Type: @code{list} @*
 Default Value: @code{nil}
 
 Variables to set in this Makefile.
-@refill
 
 @item :configuration-variables
 Type: @code{list} @*
@@ -2119,27 +2141,23 @@ Default Value: @code{("debug" (("DEBUG" . "1")))}
 
 Makefile variables to use in different configurations.
 These variables are used in the makefile when a configuration becomes active.
-@refill
 
 @item :inference-rules @*
 Default Value: @code{nil}
 
 Inference rules to add to the makefile.
-@refill
 
 @item :include-file @*
 Default Value: @code{nil}
 
 Additional files to include.
 These files can contain additional rules, variables, and customizations.
-@refill
 
 @item :automatic-dependencies
 Type: @code{boolean} @*
 Default Value: @code{t}
 
 Non-@code{nil} to do implement automatic dependencies in the Makefile.
-@refill
 
 @item :metasubproject
 Type: @code{boolean} @*
@@ -2150,7 +2168,6 @@ Usually, a subproject is determined by a parent project.  If multiple top level
 projects are grouped into a large project not maintained by EDE, then you need
 to set this to non-nil.  The only effect is that the @code{dist} rule will then avoid
 making a tar file.
-@refill
 
 @end table
 
@@ -2340,7 +2357,6 @@ Type: @code{list} @*
 Default Value: @code{nil}
 
 Variables to set in this Makefile, at top of file.
-@refill
 
 @item :additional-variables
 Type: @code{(or null list)} @*
@@ -2348,7 +2364,6 @@ Default Value: @code{nil}
 
 Arbitrary variables needed from this project.
 It is safe to leave this blank.
-@refill
 
 @item :additional-rules
 Type: @code{(or null list)} @*
@@ -2356,7 +2371,6 @@ Default Value: @code{nil}
 
 Arbitrary rules and dependencies needed to make this target.
 It is safe to leave this blank.
-@refill
 
 @item :installation-domain
 Type: @code{symbol} @*
@@ -2364,7 +2378,6 @@ Default Value: @code{user}
 
 Installation domain specification.
 The variable GNUSTEP_INSTALLATION_DOMAIN is set at this value.
-@refill
 
 @item :preamble
 Type: @code{(or null list)} @*
@@ -2372,7 +2385,6 @@ Default Value: @code{(quote ("GNUmakefile.preamble"))}
 
 The auxiliary makefile for additional variables.
 Included just before the specific target files.
-@refill
 
 @item :postamble
 Type: @code{(or null list)} @*
@@ -2380,7 +2392,6 @@ Default Value: @code{(quote ("GNUmakefile.postamble"))}
 
 The auxiliary makefile for additional rules.
 Included just after the specific target files.
-@refill
 
 @item :metasubproject
 Type: @code{boolean} @*
@@ -2391,7 +2402,6 @@ Usually, a subproject is determined by a parent project.  If multiple top level
 projects are grouped into a large project not maintained by EDE, then you need
 to set this to non-nil.  The only effect is that the @code{dist} rule will then avoid
 making a tar file.
-@refill
 
 @end table
 
@@ -2496,21 +2506,18 @@ Commit change to local variables in @var{PROJ}.
 Type: @code{string}
 
 Name of this target.
-@refill
 
 @item :path
 Type: @code{string}
 
 The path to the sources of this target.
 Relative to the path of the project it belongs to.
-@refill
 
 @item :source
 Type: @code{list} @*
 Default Value: @code{nil}
 
 Source files in this target.
-@refill
 
 @item :versionsource
 Type: @code{list} @*
@@ -2520,7 +2527,6 @@ Source files with a version string in them.
 These files are checked for a version string whenever the EDE version
 of the master project is changed.  When strings are found, the version
 previously there is updated.
-@refill
 
 @end table
 
@@ -2565,7 +2571,7 @@ Optional @var{DEPTH} is the depth we start at.
 @end deffn
 
 @deffn Method ede-buffer-header-file :AFTER this buffer
-There are no default header files in EDE.
+There are no default header files in EDE@.
 Do a quick check to see if there is a Header tag in this buffer.
 @end deffn
 
@@ -2712,14 +2718,12 @@ Retrieves the slot @code{menu} from an object of class @code{ede-target}
 Type: @code{string}
 
 Name of this target.
-@refill
 
 @item :path
 Type: @code{string}
 
 The path to the sources of this target.
 Relative to the path of the project it belongs to.
-@refill
 
 @item :auxsource
 Type: @code{list} @*
@@ -2728,7 +2732,6 @@ Default Value: @code{nil}
 Auxiliary source files included in this target.
 Each of these is considered equivalent to a source file, but it is not
 distributed, and each should have a corresponding rule to build it.
-@refill
 
 @item :compiler
 Type: @code{(or null symbol)} @*
@@ -2738,7 +2741,6 @@ The compiler to be used to compile this object.
 This should be a symbol, which contains the object defining the compiler.
 This enables save/restore to do so by name, permitting the sharing
 of these compiler resources, and global customization thereof.
-@refill
 
 @item :linker
 Type: @code{(or null symbol)} @*
@@ -2748,7 +2750,6 @@ The linker to be used to link compiled sources for this object.
 This should be a symbol, which contains the object defining the linker.
 This enables save/restore to do so by name, permitting the sharing
 of these linker resources, and global customization thereof.
-@refill
 
 @end table
 
@@ -2910,7 +2911,6 @@ Type: @code{string} @*
 Default Value: @code{"Makefile"}
 
 File name of generated Makefile.
-@refill
 
 @item :partofall
 Type: @code{boolean} @*
@@ -2919,7 +2919,6 @@ Default Value: @code{t}
 Non @code{nil} means the rule created is part of the all target.
 Setting this to @code{nil} creates the rule to build this item, but does not
 include it in the ALL`all:' rule.
-@refill
 
 @item :configuration-variables
 Type: @code{list} @*
@@ -2929,7 +2928,6 @@ Makefile variables appended to use in different configurations.
 These variables are used in the makefile when a configuration becomes active.
 Target variables are always renamed such as foo_CFLAGS, then included into
 commands where the variable would usually appear.
-@refill
 
 @item :rules
 Type: @code{list} @*
@@ -2937,7 +2935,6 @@ Default Value: @code{nil}
 
 Arbitrary rules and dependencies needed to make this target.
 It is safe to leave this blank.
-@refill
 
 @end table
 
@@ -3181,7 +3178,6 @@ The linker flag "-l" is automatically prepended.  Do not include a "lib"
 prefix, or a ".so" suffix.
 
 Note: Currently only used for Automake projects.
-@refill
 
 @item :ldflags
 Type: @code{list} @*
@@ -3192,7 +3188,6 @@ Use ldlibs to add addition libraries.  Use this to specify specific
 options to the linker.
 
 Note: Not currently used.  This bug needs to be fixed.
-@refill
 
 @end table
 
@@ -3318,7 +3313,6 @@ Additional packages needed.
 There should only be one toplevel package per auxiliary tool needed.
 These packages location is found, and added to the compile time
 load path.
-@refill
 
 @end table
 
@@ -3331,7 +3325,7 @@ Bonus: Return a cons cell: (COMPILED . UPTODATE).
 @end deffn
 
 @deffn Method ede-proj-flush-autoconf :AFTER this
-Flush the configure file (current buffer) to accomodate @var{THIS}.
+Flush the configure file (current buffer) to accommodate @var{THIS}.
 @end deffn
 
 @deffn Method ede-buffer-mine :AFTER this buffer
@@ -3399,7 +3393,6 @@ Default Value: @code{"loaddefs.el"}
 The file that autoload definitions are placed in.
 There should be one load defs file for a given package.  The load defs are created
 for all Emacs Lisp sources that exist in the directory of the created target.
-@refill
 
 @item :autoload-dirs
 Type: @code{list} @*
@@ -3407,7 +3400,6 @@ Default Value: @code{nil}
 
 The directories to scan for autoload definitions.
 If @code{nil} defaults to the current directory.
-@refill
 
 @end table
 
@@ -3507,7 +3499,6 @@ Default Value: @code{""}
 
 Miscellaneous sources which have a specialized makefile.
 The sub-makefile is used to build this target.
-@refill
 
 @end table
 
@@ -3564,7 +3555,6 @@ Default Value: @code{""}
 
 The main menu resides in this file.
 All other sources should be included independently.
-@refill
 
 @end table
 
@@ -3647,7 +3637,6 @@ Type: @code{string} @*
 Default Value: @code{"guile"}
 
 The preferred interpreter for this code.
-@refill
 
 @end table
 
@@ -3777,7 +3766,6 @@ No children
 Default Value: @code{nil}
 
 Additional LD args.
-@refill
 @end table
 @end table
 
@@ -3909,7 +3897,6 @@ No children
 Default Value: @code{nil}
 
 Additional texinfo included in this one.
-@refill
 
 @end table
 @end table
@@ -3920,7 +3907,7 @@ Return the default macro to 'edit' for this object type.
 @end deffn
 
 @deffn Method project-compile-target-command :AFTER this
-Default target t- use when compling a texinfo file.
+Default target to use when compiling a texinfo file.
 @end deffn
 
 @deffn Method ede-documentation :AFTER this
@@ -3996,21 +3983,18 @@ Type: @code{eieio-instance-inheritor-child}
 The parent of this instance.
 If a slot of this class is reference, and is unbound, then  the parent
 is checked for a value.
-@refill
 
 @item :name
 Type: @code{string}
 
 The name of this type of source code.
 Such as "C" or "Emacs Lisp"
-@refill
 
 @item :sourcepattern
 Type: @code{string} @*
 Default Value: @code{".*"}
 
 Emacs regex matching sourcecode this target accepts.
-@refill
 
 @item :auxsourcepattern
 Type: @code{(or null string)} @*
@@ -4019,7 +4003,6 @@ Default Value: @code{nil}
 Emacs regex matching auxiliary source code this target accepts.
 Aux source are source code files needed for compilation, which are not compiled
 themselves.
-@refill
 
 @item :enable-subdirectories
 Type: @code{boolean} @*
@@ -4029,7 +4012,6 @@ Non @code{nil} if this sourcecode type uses subdirectores.
 If sourcecode always lives near the target creating it, this should be nil.
 If sourcecode can, or typically lives in a subdirectory of the owning
 target, set this to t.
-@refill
 
 @item :garbagepattern
 Type: @code{list} @*
@@ -4038,7 +4020,6 @@ Default Value: @code{nil}
 Shell file regex matching files considered as garbage.
 This is a list of items added to an @code{rm} command when executing a @code{clean}
 type directive.
-@refill
 
 @end table
 
@@ -4118,13 +4099,11 @@ Type: @code{eieio-instance-inheritor-child}
 The parent of this instance.
 If a slot of this class is reference, and is unbound, then  the parent
 is checked for a value.
-@refill
 
 @item :name
 Type: @code{string}
 
 Name of this type of compiler.
-@refill
 
 @item :variables
 Type: @code{list}
@@ -4133,7 +4112,6 @@ Variables needed in the Makefile for this compiler.
 An assoc list where each element is (VARNAME . VALUE) where VARNAME
 is a string, and VALUE is either a string, or a list of strings.
 For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.
-@refill
 
 @item :sourcetype
 Type: @code{list}
@@ -4141,7 +4119,6 @@ Type: @code{list}
 A list of @code{ede-sourcecode} @xref{ede-sourcecode}. objects this class will handle.
 This is used to match target objects with the compilers and linkers
 they can use, and which files this object is interested in.
-@refill
 
 @item :rules
 Type: @code{list} @*
@@ -4149,7 +4126,6 @@ Default Value: @code{nil}
 
 Auxiliary rules needed for this compiler to run.
 For example, yacc/lex files need additional chain rules, or inferences.
-@refill
 
 @item :commands
 Type: @code{list}
@@ -4157,7 +4133,6 @@ Type: @code{list}
 The commands used to execute this compiler.
 The object which uses this compiler will place these commands after
 it's rule definition.
-@refill
 
 @item :autoconf
 Type: @code{list} @*
@@ -4168,14 +4143,12 @@ When a project is in Automake mode, this defines the autoconf function to
 call to initialize automake to use this compiler.
 For example, there may be multiple C compilers, but they all probably
 use the same autoconf form.
-@refill
 
 @item :objectextention
 Type: @code{string}
 
 A string which is the extension used for object files.
 For example, C code uses .o on unix, and Emacs Lisp uses .elc.
-@refill
 
 @end table
 
@@ -4245,13 +4218,11 @@ Type: @code{eieio-instance-inheritor-child}
 The parent of this instance.
 If a slot of this class is reference, and is unbound, then  the parent
 is checked for a value.
-@refill
 
 @item :name
 Type: @code{string}
 
 Name of this type of compiler.
-@refill
 
 @item :variables
 Type: @code{list}
@@ -4260,7 +4231,6 @@ Variables needed in the Makefile for this compiler.
 An assoc list where each element is (VARNAME . VALUE) where VARNAME
 is a string, and VALUE is either a string, or a list of strings.
 For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.
-@refill
 
 @item :sourcetype
 Type: @code{list}
@@ -4268,7 +4238,6 @@ Type: @code{list}
 A list of @code{ede-sourcecode} @xref{ede-sourcecode}. objects this class will handle.
 This is used to match target objects with the compilers and linkers
 they can use, and which files this object is interested in.
-@refill
 
 @item :commands
 Type: @code{list}
@@ -4276,21 +4245,18 @@ Type: @code{list}
 The commands used to execute this compiler.
 The object which uses this compiler will place these commands after
 it's rule definition.
-@refill
 
 @item :objectextention
 Type: @code{string}
 
 A string which is the extension used for object files.
 For example, C code uses .o on unix, and Emacs Lisp uses .elc.
-@refill
 
 @item :makedepends
 Type: @code{boolean} @*
 Default Value: @code{nil}
 
 Non-@code{nil} if this compiler can make dependencies.
-@refill
 
 @item :uselinker
 Type: @code{boolean} @*
@@ -4299,7 +4265,6 @@ Default Value: @code{nil}
 Non-@code{nil} if this compiler creates code that can be linked.
 This requires that the containing target also define a list of available
 linkers that can be used.
-@refill
 
 @end table
 
@@ -4359,7 +4324,6 @@ Default Value: @code{t}
 Type: @code{list}
 
 A variable dedicated to dependency generation.
-@refill
 @end table
 @end table
 
@@ -4399,7 +4363,6 @@ No children
 Type: @code{string}
 
 Name of this type of compiler.
-@refill
 
 @item :variables
 Type: @code{list}
@@ -4408,7 +4371,6 @@ Variables needed in the Makefile for this compiler.
 An assoc list where each element is (VARNAME . VALUE) where VARNAME
 is a string, and VALUE is either a string, or a list of strings.
 For example, GCC would define CC=gcc, and emacs would define EMACS=emacs.
-@refill
 
 @item :sourcetype
 Type: @code{list}
@@ -4416,7 +4378,6 @@ Type: @code{list}
 A list of @code{ede-sourcecode} @xref{ede-sourcecode}. objects this class will handle.
 This is used to match target objects with the compilers and linkers
 they can use, and which files this object is interested in.
-@refill
 
 @item :commands
 Type: @code{list}
@@ -4424,16 +4385,18 @@ Type: @code{list}
 The commands used to execute this compiler.
 The object which uses this compiler will place these commands after
 it's rule definition.
-@refill
 
 @item :objectextention
 Type: @code{string}
 
 A string which is the extension used for object files.
 For example, C code uses .o on unix, and Emacs Lisp uses .elc.
-@refill
 
 @end table
 @end table
 
+@node GNU Free Documentation License, , Extending EDE, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
 @bye