ede-project-placeholder
=======================

Inheritance Tree:

     eieio-speedbar

          eieio-speedbar-directory-button

               ede-project-placeholder

                    Children:
                         See ede-project.

Create a new object with name NAME of class type ede-project-placeholder

Slots:

     :name
          Type: string

          Default Value: "Untitled"

          The name used when generating distribution files.

     :version
          Type: string

          Default Value: "1.0"

          The version number used when distributing files.

     :file
          Type: string

          Default Value: unbound

          File name where this project is stored.

Specialized Methods
-------------------

 -- Method: ede-project-force-load :PRIMARY this
     Make sure the placeholder THIS is replaced with the real thing. Return the new object created in its place.

 -- Method: project-interactive-select-target :PRIMARY this prompt
     Make sure placeholder THIS is replaced with the real thing, and pass through.

 -- Method: project-add-file :PRIMARY this file
     Make sure placeholder THIS is replaced with the real thing, and pass through.

ede-project
===========

Inheritance Tree:

     eieio-speedbar

          eieio-speedbar-directory-button

               See ede-project-placeholder.

                    ede-project

                         Children:
                              See ede-proj-project, see project-am-makefile.

Create a new object with name NAME of class type ede-project

Slots:

     :targets
          Type: list

          Default Value: unbound

          List of top level targets in this project.

     :configurations
          Type: list

          Default Value: ("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.

     :configuration-default
          Default Value: "debug"

          The default configuration.

     :local-variables
          Default Value: nil

          Project local variables

Specialized Methods
-------------------

 -- Method: eieio-speedbar-description :PRIMARY obj
     Provide a speedbar description for OBJ.

 -- Method: ede-map-any-target-p :PRIMARY this proc
     For project THIS, map PROC to all targets and return if any non-nil. Return the first non-nil value returned by PROC.

 -- Method: project-rescan :PRIMARY this
     Rescan the EDE proj project THIS.

 -- Method: ede-map-subprojects :PRIMARY this proc
     For object THIS, execute PROC on all subprojects.

 -- Method: ede-convert-path :PRIMARY this path
     Convert path in a standard way for a given project. Default to making it project relative. Argument THIS is the project to convert PATH to.

 -- Method: ede-name :PRIMARY this
     Return a short-name for THIS project file. Do this by extracting the lowest directory name.

 -- Method: eieio-speedbar-derive-line-path :PRIMARY obj &optional depth
     Return the path to OBJ. Optional DEPTH is the depth we start at.

 -- Method: ede-buffer-header-file :PRIMARY this buffer
     Return nil, projects don't have header files.

 -- Method: ede-buffer-documentation-files :PRIMARY this buffer
     Return all documentation in project THIS based on BUFFER.

 -- Method: ede-map-targets :PRIMARY this proc
     For object THIS, execute PROC on all targets.

 -- Method: ede-buffer-mine :PRIMARY this buffer
     Return non-nil if object THIS lays claim to the file in BUFFER.

 -- Method: ede-object-keybindings :PRIMARY this
     Retrieves the slot keybindings from an object of class ede-project

 -- Method: ede-description :PRIMARY this
     Return a description suitible for the minibuffer about THIS.

 -- Method: eieio-speedbar-object-children :PRIMARY this
     Return the list of speedbar display children for THIS.

 -- Method: project-make-dist :PRIMARY this
     Build a distribution for the project based on THIS target.

 -- Method: project-new-target-custom :PRIMARY proj
     Create a new target.  It is up to the project PROJ to get the name.

 -- Method: ede-expand-filename :PRIMARY this filename &optional force
     Return a fully qualified file name based on project THIS. FILENAME should be just a filename which occurs in a directory controlled by this project. Optional argument FORCE forces the default filename to be provided even if it doesn't exist.

 -- Method: ede-menu-items-build :PRIMARY obj &optional current
     Return a list of menu items for building project OBJ. If optional argument CURRENT is non-nil, return sub-menu code.

 -- Method: project-new-target :PRIMARY proj
     Create a new target.  It is up to the project PROJ to get the name.

 -- Method: project-compile-project :PRIMARY obj &optional command
     Compile the entire current project OBJ. Argument COMMAND is the command to use when compiling.

 -- Method: eieio-speedbar-object-buttonname :PRIMARY object
     Return a string to use as a speedbar button for OBJECT.

 -- Method: ede-map-project-buffers :PRIMARY this proc
     For THIS, execute PROC on all buffers belonging to THIS.

 -- Method: eieio-done-customizing :PRIMARY proj
     Call this when a user finishes customizing PROJ.

 -- Method: ede-documentation :PRIMARY this
     Return a list of files that provides documentation. Documentation is not for object THIS, but is provided by THIS for other files in the project.

 -- Method: project-interactive-select-target :PRIMARY this prompt
     Interactivly query for a target that exists in project THIS. Argument PROMPT is the prompt to use when querying the user for a target.

 -- Method: ede-target-in-project-p :PRIMARY proj target
     Is PROJ the parent of TARGET? If TARGET belongs to a subproject, return that project file.

 -- Method: ede-find-target :PRIMARY proj buffer
     Fetch the target in PROJ belonging to BUFFER or nil.

 -- Method: ede-add-subproject :PRIMARY proj-a proj-b
     Add into PROJ-A, the subproject PROJ-B.

 -- Method: ede-commit-project :PRIMARY proj
     Commit any change to PROJ to its file.

 -- Method: ede-object-menu :PRIMARY this
     Retrieves the slot menu from an object of class ede-project

 -- Method: ede-commit-local-variables :PRIMARY proj
     Commit change to local variables in PROJ.

ede-proj-project
================

Inheritance Tree:

     eieio-speedbar

          eieio-speedbar-directory-button

               See ede-project-placeholder.

                    See ede-project.

                         ede-proj-project
                              No children

Create a new object with name NAME of class type ede-proj-project

Slots:

     :makefile-type
          Type: symbol

          Default Value: Makefile

          The type of Makefile to generate. Can be one of 'Makefile, 'Makefile.in, or 'Makefile.am. If this value is NOT 'Makefile, then that overrides the :makefile slot in targets.

     :variables
          Type: list

          Default Value: nil

          Variables to set in this Makefile.

     :configuration-variables
          Type: list

          Default Value: ("debug" (("DEBUG" . "1")))

          Makefile variables to use in different configurations. These variables are used in the makefile when a configuration becomes active.

     :inference-rules
          Default Value: nil

          Inference rules to add to the makefile.

     :automatic-dependencies
          Type: boolean

          Default Value: t

          Non-nil to do implement automatic dependencies in the Makefile.

Specialized Methods
-------------------

 -- Method: project-rescan :PRIMARY this
     Rescan the EDE proj project THIS.

 -- Method: ede-proj-makefile-create :PRIMARY this mfilename
     Create a Makefile for all Makefile targets in THIS. MFILENAME is the makefile to generate.

 -- Method: ede-proj-makefile-insert-rules :PRIMARY this
     Insert rules needed by THIS target.

 -- Method: ede-proj-makefile-tags :PRIMARY this targets
     Insert into the current location rules to make recursive TAGS files. Argument THIS is the project to create tags for. Argument TARGETS are the targets we should depend on for TAGS.

 -- Method: project-update-version :PRIMARY this
     The :version of project THIS has changed.

 -- Method: ede-buffer-mine :PRIMARY this buffer
     Return t if object THIS lays claim to the file in BUFFER.

 -- Method: ede-proj-makefile-insert-variables :PRIMARY this
     Insert variables needed by target THIS.

 -- Method: project-make-dist :PRIMARY this
     Build a distribution for the project based on THIS target.

 -- Method: ede-proj-makefile-insert-dist-rules :PRIMARY this
     Insert distribution rules for THIS in a Makefile, such as CLEAN and DIST.

 -- Method: project-new-target-custom :PRIMARY this
     Create a new target in THIS for custom.

 -- Method: ede-proj-makefile-create-maybe :PRIMARY this mfilename
     Create a Makefile for all Makefile targets in THIS if needed. MFILENAME is the makefile to generate.

 -- Method: ede-proj-configure-test-required-file :PRIMARY this file
     For project THIS, test that the file FILE exists, or create it.

 -- Method: ede-proj-setup-buildenvironment :PRIMARY this &optional force
     Setup the build environment for project THIS. Handles the Makefile, or a Makefile.am configure.in combination. Optional argument FORCE will force items to be regenerated.

 -- Method: ede-proj-makefile-garbage-patterns :PRIMARY this
     Return a list of patterns that are considred garbage to THIS. These are removed with make clean.

 -- Method: ede-proj-configure-synchronize :PRIMARY this
     Synchronize what we know about project THIS into configure.in.

 -- Method: project-new-target :PRIMARY this
     Create a new target in THIS based on the current buffer.

 -- Method: project-compile-project :PRIMARY proj &optional command
     Compile the entire current project PROJ. Argument COMMAND is the command to use when compiling.

 -- Method: ede-proj-makefile-configuration-variables :PRIMARY this configuration
     Return a list of configuration variables from THIS. Use CONFIGURATION as the current configuration to query.

 -- Method: eieio-done-customizing :PRIMARY proj
     Call this when a user finishes customizing this object. Argument PROJ is the project to save.

 -- Method: ede-proj-configure-recreate :PRIMARY this
     Delete project THISes configure script and start over.

 -- Method: ede-proj-makefile-insert-user-rules :PRIMARY this
     Insert user specified rules needed by THIS target. This is different from ede-proj-makefile-insert-rules in that this function won't create the building rules which are auto created with automake.

 -- Method: ede-proj-dist-makefile :PRIMARY this
     Return the name of the Makefile with the DIST target in it for THIS.

 -- Method: ede-proj-configure-file :PRIMARY this
     The configure.in script used by project THIS.

 -- Method: ede-commit-project :PRIMARY proj
     Commit any change to PROJ to its file.

 -- Method: ede-commit-local-variables :PRIMARY proj
     Commit change to local variables in PROJ.

project-am-makefile
===================

Inheritance Tree:

     eieio-speedbar

          eieio-speedbar-directory-button

               See ede-project-placeholder.

                    See ede-project.

                         project-am-makefile
                              No children

Create a new object with name NAME of class type project-am-makefile

Slots:

     :targets
          Type: list

          Default Value: nil

          See ede-project.

Specialized Methods
-------------------

 -- Method: project-rescan :PRIMARY this
     Rescan the makefile for all targets and sub targets.

 -- Method: project-am-subtree :PRIMARY ampf subpath
     Return the sub project in AMPF specified by SUBPATH.

 -- Method: project-targets-for-file :PRIMARY proj
     Return a list of targets the project PROJ.

 -- Method: ede-buffer-mine :PRIMARY this buffer
     Return t if object THIS lays claim to the file in BUFFER.

 -- Method: project-new-target :PRIMARY proj
     Create a new target named NAME. Argument TYPE is the type of target to insert.  This is a string matching something in project-am-type-alist or type class symbol. Despite the fact that this is a method, it depends on the current buffer being in order to provide a smart default target type.

 -- Method: project-compile-project :PRIMARY obj &optional command
     Compile the entire current project. Argument COMMAND is the command to use when compiling.

 -- Method: ede-find-target :PRIMARY amf buffer
     Fetch the target belonging to BUFFER.