Add .info extension to @setfilename commands in doc/
[bpt/emacs.git] / doc / misc / ede.texi
index cfa64fe..c61a32c 100644 (file)
@@ -1,18 +1,19 @@
 \input texinfo
-@setfilename ../../info/ede
+@setfilename ../../info/ede.info
 @settitle Emacs Development Environment
+@documentencoding UTF-8
 
 @copying
 This file describes EDE, the Emacs Development Environment.
 
-Copyright @copyright{} 1998--2001, 2004--2005, 2008--2012
+Copyright @copyright{} 1998--2001, 2004--2005, 2008--2014
 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
 any later version published by the Free Software Foundation; with no
-Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
 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.''
 
@@ -30,6 +31,9 @@ modify this GNU manual.''
 @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 @@ modify this GNU manual.''
 
 @contents
 
-@node top, EDE Project Concepts, (dir), (dir)
+@node Top, EDE Project Concepts, (dir), (dir)
 @top EDE
 @comment  node-name,  next,  previous,  up
 
@@ -91,7 +95,7 @@ learn and adopt GNU ways of doing things.
 * 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
@@ -126,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
@@ -143,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
@@ -439,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
@@ -450,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
@@ -468,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.
@@ -497,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
@@ -607,17 +598,6 @@ the format is an association list.  For example:
                          (compile-command . "make -f MyCustomMakefile all")))
 @end example
 
-The same is true when you use project-local variables with
-@ref{ede-java-root}.  For example:
-
-@example
-(ede-java-root-project "SOMENAME"
-                       :file "/dir/to/some/file"
-                       :local-variables
-                       '((grep-command . "grep -nHi -e ")
-                         (compile-command . "ant")))
-@end example
-
 @node EDE Project Features,  , Project Local Variables, Modifying your project
 @section EDE Project Features
 
@@ -678,7 +658,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
@@ -697,7 +677,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
@@ -733,12 +713,10 @@ To activate the speedbar in this mode, type @kbd{C-c . s}
 @menu
 * Make and Automake projects::  Project types of @samp{ede-project}
 * Automake direct projects::    Project interface on hand-written automake files.
-* Android projects::            Projects for Android development
-* Arduino projects::            Projects for Arduino sketches
 * Simple projects::             Projects @ede{} doesn't manage.
 @end menu
 
-@node Make and Automake projects
+@node Make and Automake projects, Automake direct projects, Miscellaneous commands, Miscellaneous commands
 @section Make and Automake projects
 
 A project of @samp{ede-project} type creates a file called
@@ -750,7 +728,7 @@ in @samp{Makefile} mode, then this project will autogenerate a
 routines will also import and maintain a configure.am script and a
 host of other files required by Automake.
 
-@node Automake direct projects
+@node Automake direct projects, Simple projects, Make and Automake projects, Miscellaneous commands
 @section Automake direct projects
 
 The project type that reads @file{Makefile.am} directly is derived
@@ -760,63 +738,25 @@ distributed independently.  This mode eventually became @ede{}.  The
 not generate them automatically, or create new ones.  As such, it is
 useful as a browsing tool, or as maintenance in managing file lists.
 
-@node Android projects
-@section Android projects
-
-An Android project of type @samp{ede-android-project} will detect and
-support development of Android apps.  Android projects use an
-@file{AndroidManifest.xml} file.  Always load your Manifest first in a
-running Emacs to make sure the project is identified correctly.
-
-Android projects can be created with @code{ede-new} but depend on a
-correctly configured Android SDK via @cedet{} support.
-
-@defun cedet-android-sdk-root
-@anchor{cedet-android-sdk-root}
-The root to the android @var{SDK}.
-@end defun
-
-Android projects support different configurations including compile,
-and install, which will upload a program to your Android device.  It
-also supports several debugging tools via @file{android.el}.
-
-@node Arduino projects
-@section Arduino projects
-
-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 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
-able to find your SDK and compile your programs.
-
-@node Simple projects
+@node Simple projects,  , Automake direct projects, Miscellaneous commands
 @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
 
-@node ede-cpp-root, ede-java-root, Simple projects, Simple projects
+@node ede-cpp-root, ede-emacs, Simple projects, Simple projects
 @subsection ede-cpp-root
 
 The @code{ede-cpp-root} project type allows you to create a single
@@ -852,6 +792,7 @@ override the default include path and system include path like this:
 (ede-cpp-root-project "NAME" :file "FILENAME"
     :include-path '( "/include" "../include" "/c/include" )
     :system-include-path '( "/usr/include/c++/3.2.2/" )
+    :compile-command "make compile"
     :spp-table '( ("MOOSE" . "")
                   ("CONST" . "const") ) )
 @end example
@@ -869,6 +810,9 @@ The @code{:system-include-path} allows you to specify full directory
 names to include directories where system header files can be found.
 These will be applied to files in this project only.
 
+With @code{:compile-command} you can provide a command which should be
+run when calling @code{ede-compile-project}.
+
 The @code{:spp-table} provides a list of project specific #define
 style macros that are unique to this project, passed in to the
 compiler on the command line, or are in special headers.
@@ -953,108 +897,84 @@ of project.
 @xref{ede-cpp-root-project}, for details about the class that defines
 the @code{ede-cpp-root} project type.
 
-@node ede-java-root, ede-emacs, ede-cpp-root, Simple projects
-@subsection ede-java-root
+@node ede-emacs, ede-linux, ede-cpp-root, Simple projects
+@subsection ede-emacs
 
-Much like the project type @ref{ede-cpp-root}, the java variant is
-can be setup in your @file{.emacs} file and just marks a directory as
-the root of a java source tree.
+The @code{ede-emacs} project automatically identifies an Emacs source
+tree, and enables EDE project mode for it.
 
-The @code{ede-java-root} project class knows a few things about Java
-projects.  In particular, you can use it to control your classpath at
-both the system level, and for your project.  If it is insufficient,
-you can subclass @code{ede-java-root-project} and add your own tweaks
-in just a few lines.  See @ref{ede-cpp-root} for an example using the
-C++ variant.
+It pre-populates the C Preprocessor symbol map for correct parsing,
+and has an optimized include file identification function.
 
-In the most basic case, add this to your @file{.emacs} file, modifying
-appropriate bits as needed.
+@node ede-linux, ede-generic-project, ede-emacs, Simple projects
+@subsection ede-linux
 
-@example
-(ede-java-root-project "SOMENAME" :file "/dir/to/some/file" :srcroot '("src"))
-@end example
+The @code{ede-linux} project will automatically identify a Linux
+Kernel source tree, and enable EDE project mode for it.
 
-Replace @var{SOMENAME} with whatever name you want, and the filename
-to an actual file at the root of your project.  It might be a
-Makefile, a README file.  Whatever.  It doesn't matter.  It's just a
-key to hang the rest of @ede{} off of.
+It pre-populates the C Preprocessor symbol map for reasonable parsing,
+and has an optimized include file identification function.
 
-Replace the value of :srcroot with a list of directories under the
-project root which contains Java sources.  For example, if you have:
+Through the variables @code{project-linux-build-directory-default} and
+@code{project-linux-architecture-default}, you can set the build
+directory and its architecture, respectively.  The default is to assume that
+the build happens in the source directory and to auto-detect the
+architecture; if the auto-detection fails, you will be asked.
 
-@example
-~/myprojects/P1/
-~/myprojects/P1/src/
-~/myprojects/P1/src/com/ericsoft/MyCode.java
-~/myprojects/P1/doc/
-@end example
+@node ede-generic-project, Custom Locate, ede-linux, Simple projects
+@subsection ede-generic-project
 
-Then @file{src} represents the directory under which all your Java
-code is.  It is important that @file{src} is one step above the
-directory that is the base of your package name, such as
-@file{com/ericsoft} in the example above so that new files can be
-discovered via fully qualified name.  You can have multiple such
-directories in one project, and each will be accessible.
+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}.
 
-You can specify your classpath like this:
+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.
 
-@example
-(ede-java-root-project "NAME" :file "FILENAME"
-    :srcroot '("src")
-    :classpath '("/absolute/path.jar")
-    :localclasspath '( "/relative/path.jar" ))
-@end example
+@deffn Command ede-enable-generic-projects
+Enable generic project loaders.
 
-In this example, @code{:classpath} specifies absolute paths somewhere
-on your system, and the explicit jar or source root directories
-@semantic{} will search when performing completions.
+This enables generic loaders for projects that are detected using
+either a @file{Makefile}, @file{SConstruct}, or @file{CMakeLists}.
 
-The @code{:localclasspath} is like @code{:classpath}, but it will
-contain path names relative to the root of your project.
+You do not need to use this command if you create your own generic
+project type.
+@end deffn
 
-If you want to override the file-finding tool with your own
-function you can do this:
+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
-(ede-java-root-project "NAME" :file "FILENAME" :locate-fcn 'MYFCN)
-@end example
-
-Where @var{MYFCN} is a symbol for a function.  The locate function can
-be used in place of @code{ede-expand-filename} so you can quickly
-customize your custom target to use specialized local routines instead
-of the default @ede{} routines.  The function symbol must take two
-arguments:
-
-@table @var
-@item NAME
-The name of the file to find.
-@item DIR
-The directory root for this java-root project.
-@end table
-
-If you would like to create your Java projects dynamically, instead of
-putting them all in your @file{.emacs}, you can do that too.  See
-@ref{ede-cpp-root} for details that can be applied to this project type.
+;;; MAKEFILE
 
-@node ede-emacs, ede-linux, ede-java-root, Simple projects
-@subsection ede-emacs
-
-The @code{ede-emacs} project automatically identifies an Emacs source
-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.
+(defclass ede-generic-makefile-project (ede-generic-project)
+  ((buildfile :initform "Makefile")
+   )
+  "Generic Project for makefiles.")
 
-@node ede-linux, Custom Locate, ede-emacs, Simple projects
-@subsection ede-linux
+(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 ")
+  )
 
-The @code{ede-linux} project will automatically identify a Linux
-Kernel source tree, and enable EDE project mode for it.
+(ede-generic-new-autoloader "generic-makefile" "Make"
+                           "Makefile" 'ede-generic-makefile-project)
+@end example
 
-It pre-populates the C Preprocessor symbol map for reasonable parsing,
-and has an optimized include file identification function.
+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-linux, Simple projects
+@node Custom Locate,  , ede-generic-project, Simple projects
 @subsection Custom Locate
 
 The various simple project styles all have one major drawback, which
@@ -1062,8 +982,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,7 +1011,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, GNU Free Documentation License, 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
@@ -1277,7 +1200,7 @@ until one of them returns true.  The method
 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
+name or @code{nil}.  If the file exists, then this directory is assumed to be
 part of a project, and @code{ede-directory-project-p} returns the
 instance of @code{ede-project-autoload} that matched.
 
@@ -1352,11 +1275,11 @@ Return a string that is the name of the target used by a Make system.
 A brief description of the project or target.  This is currently used
 by the @samp{ede-speedbar} interface.
 @item ede-want-file-p
-Return non-nil if a target will accept a given file.
+Return non-@code{nil} if a target will accept a given file.
 It is generally unnecessary to override this.  See the section on source
 code.
 @item ede-buffer-mine
-Return non-nil if a buffer belongs to this target.  Used during
+Return non-@code{nil} if a buffer belongs to this target.  Used during
 association when a file is loaded.  It is generally unnecessary to
 override this unless you keep auxiliary files.
 @end table
@@ -1526,26 +1449,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
 
@@ -1618,35 +1537,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@.
 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} @*
@@ -1654,7 +1568,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} @*
@@ -1662,7 +1575,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} @*
@@ -1671,19 +1583,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
 
@@ -1705,7 +1614,7 @@ Provide a speedbar description for @var{OBJ}.
 @end deffn
 
 @deffn Method ede-map-any-target-p :AFTER this proc
-For project @var{THIS}, map @var{PROC} to all targets and return if any non-nil.
+For project @var{THIS}, map @var{PROC} to all targets and return if any non-@code{nil}.
 Return the first non-@code{nil} value returned by @var{PROC}.
 @end deffn
 
@@ -1859,7 +1768,7 @@ If @var{TARGET} belongs to a subproject, return that project file.
 @end deffn
 
 @deffn Method ede-find-target :AFTER proj buffer
-Fetch the target in @var{PROJ} belonging to @var{BUFFER} or nil.
+Fetch the target in @var{PROJ} belonging to @var{BUFFER} or @code{nil}.
 @end deffn
 
 @deffn Method ede-add-subproject :AFTER proj-a proj-b
@@ -1918,7 +1827,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.
@@ -1928,7 +1837,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} @*
@@ -1938,7 +1846,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} @*
@@ -1950,7 +1857,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} @*
@@ -1960,14 +1866,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)} @*
@@ -1980,9 +1884,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
-exist, it should return nil.
-@refill
+It should return the fully qualified file name passed in from NAME@.
+If that file does not exist, it should return @code{nil}.
 
 @end table
 
@@ -2106,14 +2009,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} @*
@@ -2121,27 +2022,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,9 +2047,8 @@ Default Value: @code{nil}
 Non-@code{nil} if this is a metasubproject.
 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
+to set this to non-@code{nil}.  The only effect is that the @code{dist} rule will then avoid
 making a tar file.
-@refill
 
 @end table
 
@@ -2342,7 +2238,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)} @*
@@ -2350,7 +2245,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)} @*
@@ -2358,7 +2252,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} @*
@@ -2366,7 +2259,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)} @*
@@ -2374,7 +2266,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)} @*
@@ -2382,7 +2273,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,9 +2281,8 @@ Default Value: @code{nil}
 Non-@code{nil} if this is a metasubproject.
 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
+to set this to non-@code{nil}.  The only effect is that the @code{dist} rule will then avoid
 making a tar file.
-@refill
 
 @end table
 
@@ -2498,21 +2387,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} @*
@@ -2522,7 +2408,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
 
@@ -2714,14 +2599,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} @*
@@ -2730,7 +2613,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)} @*
@@ -2740,7 +2622,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)} @*
@@ -2750,7 +2631,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
 
@@ -2912,7 +2792,6 @@ Type: @code{string} @*
 Default Value: @code{"Makefile"}
 
 File name of generated Makefile.
-@refill
 
 @item :partofall
 Type: @code{boolean} @*
@@ -2921,7 +2800,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} @*
@@ -2931,7 +2809,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} @*
@@ -2939,7 +2816,6 @@ Default Value: @code{nil}
 
 Arbitrary rules and dependencies needed to make this target.
 It is safe to leave this blank.
-@refill
 
 @end table
 
@@ -3183,7 +3059,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} @*
@@ -3194,7 +3069,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
 
@@ -3320,7 +3194,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
 
@@ -3401,7 +3274,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} @*
@@ -3409,7 +3281,6 @@ Default Value: @code{nil}
 
 The directories to scan for autoload definitions.
 If @code{nil} defaults to the current directory.
-@refill
 
 @end table
 
@@ -3509,7 +3380,6 @@ Default Value: @code{""}
 
 Miscellaneous sources which have a specialized makefile.
 The sub-makefile is used to build this target.
-@refill
 
 @end table
 
@@ -3566,7 +3436,6 @@ Default Value: @code{""}
 
 The main menu resides in this file.
 All other sources should be included independently.
-@refill
 
 @end table
 
@@ -3649,7 +3518,6 @@ Type: @code{string} @*
 Default Value: @code{"guile"}
 
 The preferred interpreter for this code.
-@refill
 
 @end table
 
@@ -3779,7 +3647,6 @@ No children
 Default Value: @code{nil}
 
 Additional LD args.
-@refill
 @end table
 @end table
 
@@ -3911,7 +3778,6 @@ No children
 Default Value: @code{nil}
 
 Additional texinfo included in this one.
-@refill
 
 @end table
 @end table
@@ -3998,21 +3864,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)} @*
@@ -4021,7 +3884,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} @*
@@ -4031,7 +3893,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} @*
@@ -4040,7 +3901,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
 
@@ -4120,13 +3980,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}
@@ -4135,7 +3993,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}
@@ -4143,7 +4000,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} @*
@@ -4151,7 +4007,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}
@@ -4159,7 +4014,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} @*
@@ -4170,14 +4024,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
 
@@ -4247,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}
@@ -4262,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}
@@ -4270,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 :commands
 Type: @code{list}
@@ -4278,21 +4126,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} @*
@@ -4301,7 +4146,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
 
@@ -4361,7 +4205,6 @@ Default Value: @code{t}
 Type: @code{list}
 
 A variable dedicated to dependency generation.
-@refill
 @end table
 @end table
 
@@ -4401,7 +4244,6 @@ No children
 Type: @code{string}
 
 Name of this type of compiler.
-@refill
 
 @item :variables
 Type: @code{list}
@@ -4410,7 +4252,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}
@@ -4418,7 +4259,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}
@@ -4426,19 +4266,17 @@ 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
+@node GNU Free Documentation License,  , Extending EDE, Top
 @appendix GNU Free Documentation License
 @include doclicense.texi