emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/ada-mode df6efc2 1/3: First attempt to make doc cross r


From: Stephen Leake
Subject: [elpa] externals/ada-mode df6efc2 1/3: First attempt to make doc cross reference work on ELPA website
Date: Tue, 7 Sep 2021 12:08:07 -0400 (EDT)

branch: externals/ada-mode
commit df6efc230967d474166b4ceb8fe6ef9b5817f8a2
Author: Stephen Leake <stephen_leake@stephe-leake.org>
Commit: Stephen Leake <stephen_leake@stephe-leake.org>

    First attempt to make doc cross reference work on ELPA website
    
    * ada-build.el (ada-build-require-project-file): Fix typo in doc string.
    
    * ada-mode.info: Delete; now built by the elpa server.
    
    * ada-mode.texi (Project files): Fix wisi cross reference. For html, make
    it work on the ELPA website.
    (Project file overview): Fix wisi cross reference.
---
 ada-build.el  |    6 +-
 ada-mode.info | 2665 ---------------------------------------------------------
 ada-mode.texi |    6 +-
 3 files changed, 7 insertions(+), 2670 deletions(-)

diff --git a/ada-build.el b/ada-build.el
index 7d12dbf..7706896 100644
--- a/ada-build.el
+++ b/ada-build.el
@@ -1,7 +1,7 @@
 ;; ada-build.el --- Extensions to ada-mode for compiling and running  -*- 
lexical-binding:t -*-
 ;; Ada projects without 'make' or similar tool
 ;;
-;; Copyright (C) 1994, 1995, 1997 - 2017, 2019  Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1997 - 2017, 2019, 2021  Free Software 
Foundation, Inc.
 ;;
 ;; Author: Stephen Leake <stephen_leake@member.fsf.org>
 ;; Maintainer: Stephen Leake <stephen_leake@member.fsf.org>
@@ -232,9 +232,9 @@ main.
 
 search-prompt - Search for a project file in the current
 directory with the same name as the main file. If not found,
-prompt for a project file; thow error if user aborts
+prompt for a project file; throw an error if user aborts.
 
-prompt - Prompt for a project file; thow error if user aborts.
+prompt - Prompt for a project file; throw an error if user aborts.
 
 error - Throw an error (no prompt, no default project).
 
diff --git a/ada-mode.info b/ada-mode.info
deleted file mode 100644
index e179e9f..0000000
--- a/ada-mode.info
+++ /dev/null
@@ -1,2665 +0,0 @@
-This is ada-mode.info, produced by makeinfo version 6.7 from
-ada-mode.texi.
-
-Copyright (C) 1999 - 2021 Free Software Foundation, Inc.
-
-     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", 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."
-INFO-DIR-SECTION Emacs
-START-INFO-DIR-ENTRY
-* Ada mode: (ada-mode).         Emacs mode for editing and navigating Ada code.
-END-INFO-DIR-ENTRY
-
-
-File: ada-mode.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
-
-Top
-***
-
-Ada Mode Version 7.1.5
-
-* Menu:
-
-* Overview::
-* Installation::                Installing Ada mode on your system
-* Customization::               Setting up Ada mode to your taste
-* Compiling Executing::         Working with your application within Emacs
-* Project files::               Describing the organization of your project
-* Moving Through Ada Code::     Moving easily through Ada sources
-* Identifier completion::       Finishing words automatically
-* Indentation::                 Indenting your code automatically as you type
-* Statement skeletons::         Some code is written for you
-* Aligning code::               Making it pretty
-* Automatic casing::            Adjusting the case of words automatically
-* Comment Handling::            Reformatting comments easily
-* Key summary::
-* Developer overview::
-* GNU Free Documentation License::
-
- -- The Detailed Node Listing --
-
-Overview
-
-* Why not LSP?::
-
-Installation
-
-* Ada executables::
-* Known versions::
-
-Ada executables
-
-* Building GNATCOLL::
-* Building the executables::
-
-Customizing Ada mode
-
-* Slow response::
-* Non-standard file names::
-* Other compiler::
-* Other cross-reference::
-* Other customization::
-
-Compiling Executing
-
-* Compile commands::
-* Compiling Examples::
-* Compiler errors::
-
-Compiling Examples
-
-* No project files::            Just menus
-* Set compiler options::        A basic Ada mode project file
-* Set source search path::      Source in multiple directories
-* Use wisi project file::
-* Use multiple GNAT project files::
-* Use a Makefile::
-
-Project files
-
-* Project file overview::
-* Project file variables::
-
-Developer overview
-
-* Directory structure::
-* ELPA::
-* Savannah::
-
-
-
-File: ada-mode.info,  Node: Overview,  Next: Installation,  Prev: Top,  Up: Top
-
-1 Overview
-**********
-
-The Emacs mode for programming in Ada helps the user in reading existing
-code and facilitates developing new code.
-
-   Cross-reference information output by the compiler is used to provide
-powerful code navigation (jump to definition, find all uses, etc).
-
-   When you open a file with a file extension of '.ads' or '.adb', Emacs
-will automatically load and activate Ada mode.
-
-   Ada mode works without any customization, if you are using the GNAT
-compiler (<https://libre.adacore.com/>) and the GNAT default naming
-convention.
-
-   You must customize a few things if you are using a different file
-naming convention or compiler; *Note Non-standard file names::, *Note
-Other compiler::.
-
-   In addition, you may want to customize the indentation,
-capitalization, and other things; *Note Other customization::.
-
-   Finally, for large Ada projects, you will want to set up an Emacs Ada
-mode project file for each project; *Note Project files::.  Note that
-these are different from the GNAT project files used by the GNAT tools.
-
-   *Note Debuggers: (emacs)Debuggers, for general information on
-debugging.
-
-* Menu:
-
-* Why not LSP?::
-
-
-File: ada-mode.info,  Node: Why not LSP?,  Up: Overview
-
-1.1 Why not LSP?
-================
-
-The Language Server Protocol (LSP, <https://langserver.org>) supports an
-external language parser, as Ada mode does, and it is supported by the
-GNU ELPA package eglot.  Ada mode does not use LSP mostly for historical
-reasons; the Ada mode parser was first developed before LSP was started.
-In addition, LSP does not support some of the navigation information
-provided by the Ada mode parser (although that could be provided as a
-custom command).
-
-   We may investigate supporting an LSP parser in the future.  In
-particular, the AdaCore Gnat Studio editor uses an LSP parser for
-several functions; Emacs Ada mode could use that as a backend if it
-supports LSP.
-
-
-File: ada-mode.info,  Node: Installation,  Next: Customization,  Prev: 
Overview,  Up: Top
-
-2 Installation
-**************
-
-Ada mode requires Emacs 25.3 or greater.  Compiling the Ada code for the
-external process parser requires GNAT GPL 2017 or later; tested with
-GNAT Community Edition 2021 and GNAT Pro 22.2 (*note Known versions::).
-
-   Ada mode is distributed in the Gnu ELPA package archive; it can be
-installed via 'M-x list-packages' (*note (emacs)Packages::).  Note that
-it requires the 'wisi' and 'uniquify-files' packages as dependencies.
-
-   In Emacs < 27 you must first enable packages in your '~/.emacs',
-_after_ customizing 'Info-default-directory-list' (if you do that):
-
-     (package-initialize)
-
-   To see what version of Ada mode you have installed, invoke 'M-x
-ada-mode-version'.
-
-   You must also install the associated Ada executables (for the
-language parser).  You may want to install the Ada Reference Manual in
-info format, via the ELPA package ada-ref-man.
-
-* Menu:
-
-* Ada executables::
-* Known versions::
-
-
-File: ada-mode.info,  Node: Ada executables,  Next: Known versions,  Up: 
Installation
-
-2.1 Ada executables
-===================
-
-Ada mode requires the external parser, which must be compiled.
-
-   Ada mode has support for an external cross reference tool
-'gpr_query', which uses compiler-generated information.  In the case of
-Ada, the necessary '.ali' files are automatically generated by the
-standard compilation process.  For other languages, e.g.  C, C++, '.gli'
-files can be generated using the compiler switch '-fdump-xref'.
-'-fdump-xref' is an AdaCore extension, not available in FSF GCC.
-
-   'gpr_query' is an Ada program, which is distributed as source and
-must be built.  Its source code is in the 'ada-mode' Gnu ELPA package.
-
-   'gpr_query' is similar to the AdaCore utility 'gnatxref', but
-supports additional queries.
-
-   Both the parser and 'gpr_query' require the 'GNATCOLL' library
-provided by AdaCore, distributed with GNAT GPL 2017 or later, and also
-available at Github (<https://github.com/AdaCore/gnatcoll>).  The parser
-builds with the gnatcoll distributed with the gnat compiler.  However,
-that gnatcoll does not include the xref package, which is required by
-'gpr_query'.  So we must build gnatcoll xref from sources downloaded
-from github.
-
-   The notes below assume that the compiler is installed at '$prefix',
-e.g.  '/usr/local/gnat-2019', and that '$prefix/bin' is first on the
-'PATH'.  If you are running Windows, use mingw64 'bash' to run these
-commands.
-
-   On some operating systems, we must install gnatcoll-iconv; other
-operating systems don't need it.
-
-   On linux, some versions of the 'GNATCOLL.iconv' package (used by
-'gpr_query', but not the parser) explicitly require the 'libiconv.so'
-library.  GNAT provides the 'libiconv.so' library in
-'<gnat>/lib64/libiconv.so'.  On Debian, that directory is not in the
-standard load path, and iconv is provided by glibc, so 'libiconv.so' is
-not found on the standard load path.  So you must set LD_LIBRARY_PATH,
-but only when running 'gpr-query':
-
-     (setq gpr-query-env '("LD_LIBRARY_PATH=/Projects/gnat/pro_19.2/lib64")
-
-   In general, 'gpr_query' should be compiled with the compiler version
-that is used to generate the user project '.ali' files; the 'ali' file
-format can change with each compiler version.  'gpr_query' creates a
-database of cross reference information; that database must be deleted
-if the compiler version changes, to force a complete rebuild.
-
-* Menu:
-
-* Building GNATCOLL::
-* Building the executables::
-
-
-File: ada-mode.info,  Node: Building GNATCOLL,  Next: Building the 
executables,  Up: Ada executables
-
-2.1.1 Building GNATCOLL
------------------------
-
-Download gnatcoll-db from <https://github.com/AdaCore/gnatcoll-db>;
-select the latest release branch (or the one that matches your
-compiler), click on the "clone or download" button, select "Download
-ZIP".
-
-   Similarly, download gnatcoll-bindings from
-<https://github.com/AdaCore/gnatcoll-bindings/tree/20.2> (for
-gnatcoll-iconv; not needed for GNAT Community 2020 on Windows).
-
-   Then unpack, build, and install the required components.  If you are
-unsure whether you need to install iconv, skip that step; a later step
-will complain if it is needed.
-
-     unzip ~/Downloads/gnatcoll-bindings-20.2.zip
-     cd gnatcoll-bindings-20.2
-     cd iconv
-     ./setup.py build
-     ./setup.py install
-
-     unzip ~/Downloads/gnatcoll-db-20.2.zip
-     cd gnatcoll-db-20.2
-     make -C sql
-     make -C sql install
-     make -C sqlite
-     make -C sqlite install
-     make -C xref
-     make -C xref install
-
-
-File: ada-mode.info,  Node: Building the executables,  Prev: Building 
GNATCOLL,  Up: Ada executables
-
-2.1.2 Building the executables
-------------------------------
-
-'gpr_query' requires the 'pthread' library.  On Windows, this is
-available in Mingw64 as package
-'mingw64/mingw-w64-x86_64-winpthreads-git'.
-
-   To build and install 'gpr_query' and the parser, assuming the
-'ada-mode-6.0.xx' GNU ELPA package is installed:
-
-     cd ~/.emacs.d/elpa/ada-mode-6.0.xx
-     ./build.sh
-     ./install.sh
-
-   By default, 'install.sh' installs the executables in the same
-directory as the GNAT executable (using 'gprinstall').  If you don't
-have write privileges there, or if you want to install somewhere else,
-use 'install.sh --prefix=<dir>'.
-
-   'ada-mode' will use 'gpr_query' and the parser if they are found in
-'PATH'.
-
-
-File: ada-mode.info,  Node: Known versions,  Prev: Ada executables,  Up: 
Installation
-
-2.2 Known versions
-==================
-
-Here we list GNAT compiler versions that are known to work or not work
-with ada-mode.
-
-   There are various ways to get the compiler:
-'Community'
-     Downloaded from <https://www.adacore.com/download>.  The version
-     number is the release year.
-
-     This version is provided by AdaCore, but they do not support users
-     using it.
-
-'Pro'
-     Downloaded from AdaCore via a support subscription.  The version
-     number is the last two digits of the release year, followed by a
-     patch release digit.
-
-     This version is provided by AdaCore, and they support users using
-     it.
-
-'FSF'
-     Installed via a free software package manager, typically as part of
-     the "gcc" package.  The version number is the same as the gcc
-     version, something like "10.3.0", possibly followed by a date.
-
-     This version is derived from some AdaCore version, but is typically
-     not identical to a released version.  It may be supported by the
-     packager.
-
-   Sometimes compiler versions change what code they accept,
-particularly in the area of access types.  So some compiler versions may
-require minor edits of the code; there is a "WORKAROUND" comment in the
-code describing the edit required.
-
-   Compiler versions that work:
-'Community 2019'
-     Reports an error about a dangling reference; see WORKAROUND comment
-     in
-     
'~/.emacs.d/elpa/wisi-i.j.k/sal-gen_unbounded_definite_red_black_trees.adb'
-
-'Community 2020'
-     no edits required
-
-'Pro 20.2'
-     no edits required
-
-'FSF 11.1.0'
-
-   Compiler versions that fail:
-'FSF gnat 10.2.1 20210110'
-     ada-mode uses compiler option -gnat2020; that causes bogus failures
-     with this version of gnat.  Reported at
-     <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99099>
-
-
-File: ada-mode.info,  Node: Customization,  Next: Compiling Executing,  Prev: 
Installation,  Up: Top
-
-3 Customizing Ada mode
-**********************
-
-All user-settable Ada mode variables can be set via the menu 'Ada |
-Customize'; some can also be set in wisi project files (*note Project
-files::).
-
-   To modify a specific variable, you can directly call the function
-'customize-variable'; just type 'M-x customize-variable <RET>
-VARIABLE-NAME <RET>'.
-
-   Alternately, you can specify variable settings in the Emacs
-configuration file, '~/.emacs'.  This file is coded in Emacs lisp, and
-the syntax to set a variable is the following:
-
-     (setq variable-name value)
-
-   ada-mode variables that you might consider changing:
-'Matching end names'
-     By default, the option 'ada-end-name-optional' is set to 't', which
-     matches the Ada standard.  This is useful for new Ada users.
-     Experienced users that follow a style guide requiring matching end
-     names should set this to 't', since that gives better error
-     correction.
-
-   Some general (non ada-mode) Emacs settings that are useful for Ada
-files:
-
-'context menu'
-     By default, the context menu is bound to <C-down-mouse-3>, i.e.
-     control-right-click.  <down-mouse-3> is already bound in the global
-     map; you can override that global binding in the 'ada-mode-hook'
-     (see below for code).
-'other-frame-window-mode'
-     Ada mode does not provide any 'other-frame' or 'other-window'
-     variants of user operations.  Instead, it is recommended to use the
-     Gnu ELPA package 'other-frame-window'.
-'delete-trailing-whitespace'
-     Deletes space, tab at end of line and blank lines at end of buffer.
-'xref configuration'
-     'xref-prompt-for-identifier'
-          Set to 'nil' to be prompted less when finding definitions or
-          references.
-     'xref-show-xrefs-function'
-          Determine placement of the window where references are shown.
-     'xref-show-definitions-function'
-          Determine placement of the window where definitions are shown.
-     'xref--transient-buffer-mode-map'
-          keymap used in some xref windows; you may want to disable the
-          <RET> binding there.
-'untabify'
-     Deletes tab characters that have crept into the file.
-'indent-tabs-mode'
-     Don't insert tab characters when indenting.
-'copyright-update'
-     Updates the copyright date in the file header comment, to the
-     current year.
-'electric-pair-mode'
-     Insert a matching right paren when you type a left paren.
-'hippie-expand'
-     Bind 'hippie-expand' to a key; it expands the word before point,
-     using words from current buffer, other buffers, file names, etc;
-     see 'hippie-expand-try-functions-list'.  You can also add
-     'wisi-skel-hippie-try' to that list.  Note that 'wisi-skel-expand'
-     is bound to <C-c C-e> (*note Statement skeletons::).
-'imenu'
-     Navigate to subprograms and types by name, from a minibuffer menu.
-'speedbar'
-     Navigate to subprograms and types by name, from a list in a
-     dedicated window.
-'which-func'
-     Display the current subprogram name in the mode bar.
-
-   The above can all be set by the following code in your '~/.emacs'.
-Note that some are functions are added to 'before-save-hook'; they run
-just before a buffer is written to disk.  Also, the order is important;
-ada-mode does not set up the Ada-specific features of imenu and speedbar
-unless imenu is loaded first.
-
-     (setq-default indent-tabs-mode nil)
-     (define-key xref--transient-buffer-mode-map (kbd "RET") 'xref-goto-xref)
-     (setq xref-prompt-for-identifier nil) ;; only prompt on C-u
-     (setq xref-show-xrefs-function #'xref--show-defs-buffer-at-bottom)
-     (setq xref-show-definitions-function #'xref--show-defs-buffer-at-bottom)
-
-     (electric-pair-mode 1)
-     (require 'imenu) ;; also enables speedbar
-     (require 'ada-mode)
-     (add-to-list 'hippie-expand-try-functions-list 'wisi-skel-hippie-try)
-     (define-key ada-mode-map "\C-e"     'hippie-expand)
-     (define-key ada-mode-map [down-mouse-3] 'ada-popup-menu)
-     (add-hook 'ada-mode-hook
-        (lambda ()
-         (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
-         (add-hook 'before-save-hook 'copyright-update nil t)
-         (add-hook 'before-save-hook
-                   (lambda () (untabify (point-min) (point-max)))
-                    nil t)))
-
-* Menu:
-
-* Slow response::
-* Non-standard file names::
-* Other compiler::
-* Other cross-reference::
-* Other customization::
-
-
-File: ada-mode.info,  Node: Slow response,  Next: Non-standard file names,  
Up: Customization
-
-3.1 Slow response
-=================
-
-In large files, parsing takes a noticable amount of time, so it gets in
-the way of interactive typing due to immediate fontification triggering
-a parse.
-
-   There are three ways to deal with this:
-
-  1. Set 'wisi-partial-parse-threshold' In your '~./emacs':
-
-          (setq wisi-partial-parse-threshold 100001)
-
-     The default value (100001) may already be appropriate; it depends
-     on how fast your machine is, and what your tolerance for slow
-     response is.
-
-     Files larger than 'wisi-partial-parse-threshold' (in characters)
-     will be parsed partially; only the part of the buffer needed for
-     the current task will be parsed.  For fontification, that is the
-     visible part.  For indent, it is approximately the current
-     subprogram or package.  For navigation, it is always the entire
-     file, which will still be slow; that is the only way to ensure
-     useful results.
-
-     With this setting, indentation may not be correct; the Ada menu
-     entry "Edit | Indent containing statement" will indent correctly.
-
-  2. Delay fontification by setting 'jit-lock-defer-time' in your
-     '~./emacs':
-
-          (setq jit-lock-defer-time 1.5)
-
-     This is a global setting; it affects all buffers.  Fontification
-     will only be performed after you have stopped typing for the
-     indicated number of seconds.
-
-  3. Turn off parsing for fontification by setting 'wisi-disable-face'
-     in your '~./emacs'
-
-          (setq wisi-disable-face t)
-
-     This turns of fontification for type, package, and function names;
-     only Ada reserved words are fontified.
-
-
-File: ada-mode.info,  Node: Non-standard file names,  Next: Other compiler,  
Prev: Customization,  Up: Customization
-
-3.2 Non-standard file names
-===========================
-
-By default, Ada mode is configured to use the GNAT file naming
-convention, where file names are a simple modification of the Ada names,
-and the extension for specs and bodies are '.ads' and '.adb',
-respectively.
-
-   Emacs uses the file extension to enable Ada mode; Ada mode uses the
-file extentions to allow moving from a package body to the corresponding
-spec and back.
-
-   Emacs and Ada mode support ways to use alternative file extensions
-for specs and bodies.  Note that you must also tell the compiler about
-these extensions in a GNAT project file Naming package; doing that is
-beyond the scope of this manual.
-
-   For instance, if your spec and bodies files are called 'UNIT_s.ada'
-and 'UNIT_b.ada', respectively, you can add the following to your
-'.emacs' file:
-
-     ;; Tell Ada mode about spec and body extensions
-     (ada-add-extensions "_s.ada" "_b.ada")
-
-     ;; Tell Emacs to use Ada mode for those extensions
-     (add-to-list 'auto-mode-alist '("\\.ada\\'" . ada-mode))
-
-   You can define additional extensions:
-
-     (ada-add-extensions ".ads" "_b.ada")
-     (ada-add-extensions ".ads" ".body")
-
-   This means that whenever Ada mode looks for the body for a file whose
-extension is '.ads', it will take the first available file that ends
-with either '.adb', '_b.ada' or '.body'.
-
-   Simililarly, if Ada mode is looking for a spec, it will look for
-'.ads' or '_s.ada'.
-
-   If the filename excluding the extension is not derived from the Ada
-name following the GNAT convention, you need to provide an alternate
-function for 'ada-file-name-from-ada-name'.  Doing that is beyond the
-scope of this manual; see the current definitions in 'ada-mode.el' and
-'ada-gnat-xref.el' for examples.
-
-
-File: ada-mode.info,  Node: Other compiler,  Next: Other cross-reference,  
Prev: Non-standard file names,  Up: Customization
-
-3.3 Other compiler
-==================
-
-The wisi project variable 'ada_compoiler' (default elisp variable
-'ada-compiler') (default ''gnat') controls dispatching in
-compiler-specific functions for corresponding Ada mode operations.
-
-   To use a compiler other than GNAT, you must write Emacs lisp code
-that provides the interface to the compiler, and set 'ada-compiler' and
-the indirection variables.
-
-   See 'ada-compiler-gnat.el' for an example.
-
-
-File: ada-mode.info,  Node: Other cross-reference,  Next: Other customization, 
 Prev: Other compiler,  Up: Customization
-
-3.4 Other cross-reference
-=========================
-
-The wisi project variable 'xref_tool' (default elisp variable
-'ada-xref-tool') controls dispatching in the
-cross-reference-tool-specific functions for corresponding Ada mode
-operations.
-
-   If 'gpr_query' is found in 'PATH', the default cross-reference tool
-is 'gpr_query'; otherwise it is 'gnatxref'.
-
-   To use a cross reference tool other than the above, you must write
-Emacs lisp code that provides the interface to the tool, and set
-'ada-xref-tool' and the indirection variables.
-
-   See 'ada-gnat-xref.el' and 'gpr-query.el' for examples.
-
-
-File: ada-mode.info,  Node: Other customization,  Prev: Other cross-reference, 
 Up: Customization
-
-3.5 Other customization
-=======================
-
-
-File: ada-mode.info,  Node: Compiling Executing,  Next: Project files,  Prev: 
Customization,  Up: Top
-
-4 Compiling Executing
-*********************
-
-Ada projects can be compiled, linked, and executed using commands on the
-Ada menu.  All of these commands can be customized via a project file
-(*note Project files::), but the defaults are sufficient for using the
-GNAT compiler for simple projects (single files, or several files in a
-single directory).
-
-   For complex projects, you will want to use 'make' or some other build
-tool; in that case, you may need a wisi project file to tell Emacs about
-the project directory tree and other settings.
-
-* Menu:
-
-* Compile commands::
-* Compiling Examples::
-* Compiler errors::
-
-
-File: ada-mode.info,  Node: Compile commands,  Next: Compiling Examples,  
Prev: Compiling Executing,  Up: Compiling Executing
-
-4.1 Compile commands
-====================
-
-Here are the commands for building an Ada project and running the main
-program; they are all on the 'Ada | Build' menu.
-
-   In multi-file projects, there must be one file that is the main
-program.  That is given by the 'main' project file variable; it defaults
-to the current file if not yet set, but is also set by the "set main and
-build" command.
-
-'Check file'
-     Compiles the current file in syntax check mode, by running
-     'check_cmd' defined in the current project file.  This typically
-     runs faster than full compile mode, speeding up finding and fixing
-     compilation errors.
-
-     This sets 'main' only if it has not been set yet.
-
-'Compile file'
-     Compiles the current file, by running 'comp_cmd' from the current
-     project file.
-
-     This does not set 'main'.
-
-'Set main and Build'
-     Sets 'main' to the current file, then executes the Build command.
-
-'Show main'
-     Displays 'main' in the message buffer.
-
-'Build'
-     Compiles all obsolete units of the current 'main', and links
-     'main', by running 'make_cmd' from the current project.
-
-     This sets 'main' only if it has not been set yet.
-
-'Run'
-     Executes the main program in a shell, displayed in a separate Emacs
-     buffer.  This runs 'run_cmd' from the current project.  The
-     execution buffer allows for interactive input/output.
-
-     To modify the run command, in particular to provide or change the
-     command line arguments, type 'C-u' before invoking the command.
-
-     This command is not available for a cross-compilation toolchain.
-
-   It is important when using these commands to understand how 'main' is
-used and changed.
-
-   Build runs 'gprbuild' on the main unit.  During a typical
-edit/compile session, this is the only command you need to invoke, which
-is why it is bound to 'C-c C-c'.  It will compile all files needed by
-the main unit, and display compilation errors in any of them.
-
-   Note that Build can be invoked from any Ada buffer; typically you
-will be fixing errors in files other than the main, but you don't have
-to switch back to the main to invoke the compiler again.
-
-   Novices and students typically work on single-file Ada projects.  In
-this case, 'C-c C-m' will normally be the only command needed; it will
-build the current file, rather than the last-built main.
-
-   There are two ways to change 'main':
-
-  1. Invoke 'Ada | Set main and Build', which sets 'main' to the current
-     file.
-
-  2. Invoke 'Ada | Project | Load', and load a project file that
-     specifies 'main'
-
-
-File: ada-mode.info,  Node: Compiling Examples,  Next: Compiler errors,  Prev: 
Compile commands,  Up: Compiling Executing
-
-4.2 Compiling Examples
-======================
-
-We present several small projects, and walk thru the process of
-compiling, linking, and running them.
-
-   The first example illustrates more Ada mode features than the others;
-you should work thru that example before doing the others.
-
-   All of these examples assume you are using GNAT.
-
-   The source for these examples is available on the Emacs Ada mode
-website mentioned in *Note Installation::.
-
-* Menu:
-
-* No project files::            Just menus
-* Set compiler options::        A basic Ada mode project file
-* Set source search path::      Source in multiple directories
-* Use wisi project file::
-* Use multiple GNAT project files::
-* Use a Makefile::
-
-
-File: ada-mode.info,  Node: No project files,  Next: Set compiler options,  
Prev: Compiling Examples,  Up: Compiling Examples
-
-4.2.1 No project files
-----------------------
-
-This example uses no project files.
-
-   First, create a directory 'Example_1', containing:
-
-   'hello.adb':
-
-     with Ada.Text_Io;
-     procedure Hello
-     is begin
-        Put_Line("Hello from hello.adb");
-     end Hello;
-
-   Yes, this is missing "use Ada.Text_Io;" - we want to demonstrate
-compiler error handling.
-
-   'hello_2.adb' has no errors:
-
-     with Hello_Pkg;
-     procedure Hello_2
-     is begin
-        Hello_Pkg.Say_Hello;
-     end Hello_2;
-
-   'hello_pkg.ads' has no errors:
-
-     package Hello_Pkg is
-        procedure Say_Hello;
-     end Hello_Pkg;
-
-   'hello_pkg.adb':
-
-     with Ada.Text_Io;
-     package Hello_Pkg is
-        procedure Say_Hello
-        is begin
-           Ada.Text_Io.Put_Line ("Hello from hello_pkg.adb");
-        end Say_Hello;
-     end Hello_Pkg;
-
-   Yes, this is missing the keyword 'body'; another compiler error
-example.  However, note that the indentation engine parser accepts this
-code, making it possible to indent illegal Ada code.
-
-   In buffer 'hello.adb', invoke the menu entry 'Ada | Build | Check
-syntax'.  You should get a '*compilation*' buffer containing something
-like (the directory paths will be different):
-
-     -*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode.stephe-1/test/Example_1/" -*-
-     Compilation started at Fri Oct 18 04:23:54
-
-     gprbuild  -u -c -gnatc  
c:/Projects/org.emacs.ada-mode/test/Example_1/hello.adb
-     using project file D:\Apps\GNAT-gpl_2019\share\gpr\_default.gpr
-     Compile
-        [Ada]          hello.adb
-     hello.adb:4:04: "Put_Line" is not visible
-     hello.adb:4:04: non-visible declaration at a-textio.ads:263
-     hello.adb:4:04: non-visible declaration at a-textio.ads:259
-     gprbuild: *** compilation phase failed
-
-     Compilation exited abnormally with code 4 at Fri Oct 18 04:23:54
-
-   The lines with actual errors (starting with 'hello.adb') are
-highlighted, with the file name in red.
-
-   Now invoke 'Ada | Build | Next compilation error'.  Or you can click
-the middle mouse button on the first error line, or use the key binding
-shown on the menu.  In the compilation buffer, a triangle is placed in
-the left fringe on the first error line, and point is put at the place
-of the error in the 'hello.adb' buffer.
-
-   To fix the error, invoke 'Ada | Build | Fix compilation error'; this
-adds "Ada.Text_Io."  to the line:
-
-         Ada.Text_Io.Put_Line ("hello from hello.adb");
-
-   Now invoke 'Ada | Build | Show main'; this displays 'Ada mode main:
-hello'.
-
-   Now (in buffer 'hello.adb'), invoke 'Ada | Build | Build'.  You are
-prompted to save the file (if you haven't already).  Then the
-compilation buffer is displayed again, containing:
-
-     -*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode.stephe-1/test/Example_1/" -*-
-     Compilation started at Fri Oct 18 20:39:33
-
-     gprbuild  hello
-     using project file D:\Apps\GNAT-gpl_2019\share\gpr\_default.gpr
-     Compile
-        [Ada]          hello.adb
-     Bind
-        [gprbind]      hello.bexch
-        [Ada]          hello.ali
-     Link
-        [link]         hello.adb
-
-     Compilation finished at Fri Oct 18 20:39:34
-
-   The compilation has succeeded without errors; 'hello.exe' now exists
-in the same directory as 'hello.adb'.
-
-   Now invoke 'Ada | Build | Run'.  The '*compilation*' buffer is
-displayed, containing
-
-     -*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode.stephe-1/test/Example_1/" -*-
-     Compilation started at Fri Oct 18 20:41:53
-
-     ./hello
-     Hello from hello.adb
-
-     Compilation finished at Fri Oct 18 20:41:53
-
-   That completes the first part of this example.
-
-   Now we will compile a multi-file project.  Open the file
-'hello_2.adb', invoke 'Ada | Build | Set main and Build'.  This finds an
-error in 'hello_pkg.adb':
-
-     hello_pkg.adb:2:08: keyword "body" expected here [see file name]
-
-   This demonstrates that gprbuild finds the files needed by the main
-program.  However, it cannot find files in a different directory, unless
-you use a GNAT project file to specify the other directories; *note Set
-source search path::.
-
-   Invoke 'Ada | Build | Show main'; this displays 'Ada mode main:
-hello_2'.
-
-   Move to the error with 'C-x `', and fix the error by adding 'body':
-
-     package body Hello_Pkg is
-
-   Now, while still in 'hello_pkg.adb', invoke 'Ada | Build | Build'.
-gprbuild successfully builds 'hello_2'.  This demonstrates that Emacs
-has remembered the main file, in the project variable 'main', and used
-it for the Build command.
-
-   Finally, again while in 'hello_pkg.adb', invoke 'Ada | Build | Run'.
-The '*compilation*' buffer displays 'Hello from hello_pkg.adb'.
-
-   One final point.  If you switch back to buffer 'hello.adb', and
-invoke 'Ada | Build | Run', 'hello_2.exe' will be run.  That is because
-'main' is still set to 'hello_2', as you can see when you invoke 'Ada |
-Build | Show main'.
-
-   There are two ways to change 'main':
-
-  1. Invoke 'Ada | Build | Set main and Build', which sets 'main' to the
-     current file.
-
-  2. Invoke 'Ada | Build | Set Project ...', and select a project file
-     that specifies 'main'.
-
-
-File: ada-mode.info,  Node: Set compiler options,  Next: Set source search 
path,  Prev: No project files,  Up: Compiling Examples
-
-4.2.2 Set compiler options
---------------------------
-
-This example illustrates using a gnat project file to set a compiler
-option.
-
-   If you have files from 'Example_1' open in Emacs, you should close
-them so you don't get confused.  Use menu 'File | Close (current
-buffer)'.
-
-   In directory 'Example_2', create these files:
-
-   'hello.adb':
-
-     with Ada.Text_Io;
-     procedure Hello
-     is begin
-        Put_Line("Hello from hello.adb");
-     end Hello;
-
-   This is the same as 'hello.adb' from 'Example_1'.  It has two errors;
-missing "use Ada.Text_Io;", and no space between 'Put_Line' and its
-argument list.
-
-   'hello.gpr':
-
-     project Hello is
-        package Compiler is
-           for Default_Switches ("Ada") use ("-gnatyt");
-        end Compiler;
-     end Hello;
-
-   This tells the GNAT compiler to check for token spacing; in
-particular, there must be a space preceding a parenthesis.
-
-   In buffer 'hello.adb', invoke 'Ada | Build | Set main and Build'.
-This finds the project file 'hello.gpr', uses it to set the compiler
-options, and builds the project.  You should get a '*compilation*'
-buffer containing something like (the directory paths will be
-different):
-
-     gprbuild -Phello.gpr hello
-     Compile
-        [Ada]          hello.adb
-     hello.adb:4:04: "Put_Line" is not visible
-     hello.adb:4:04: non-visible declaration at a-textio.ads:508
-     hello.adb:4:04: non-visible declaration at a-textio.ads:498
-     hello.adb:4:12: (style) space required
-     gprbuild: *** compilation phase failed
-
-   Compare this to the compiler output in *note No project files::; the
-compiler-provided default gpr file has been replaced by 'hello.gpr', and
-an additional error is reported in 'hello.adb' on line 4.  This shows
-that 'hello.gpr' is being used to set the compiler options.
-
-   Use 'C-x`', 'C-c M-`' to fix the errors, then 'Ada | Build | Build'
-and 'Ada | Build | Run' to build and run.
-
-
-File: ada-mode.info,  Node: Set source search path,  Next: Use wisi project 
file,  Prev: Set compiler options,  Up: Compiling Examples
-
-4.2.3 Set source search path
-----------------------------
-
-In this example, we show how to deal with files in more than one
-directory, setting the source search path in the gpr file.
-
-   Create the directory 'Example_3', containing:
-
-   'hello_pkg.ads':
-
-     package Hello_Pkg is
-        procedure Say_Hello;
-     end Hello_Pkg;
-
-   'hello_pkg.adb':
-
-     with Ada.Text_Io;
-     package Hello_Pkg is
-        procedure Say_Hello
-        is begin
-           Ada.Text_Io.Put_Line ("Hello from hello_pkg.adb");
-        end Say_Hello;
-     end Hello_Pkg;
-
-   These are the same files from example 1; 'hello_pkg.adb' has an error
-on line 2.
-
-   'other.gpr':
-
-     project Other is
-        for Source_Dirs use (".", "Other");
-     end Other;
-
-   In addition, create a directory 'Example_3/Other', containing this
-file:
-
-   'Other/hello_3.adb':
-
-     with Hello_Pkg;
-     with Ada.Text_Io; use Ada.Text_Io;
-     procedure Hello_3
-     is begin
-        Hello_Pkg.Say_Hello;
-        Put_Line ("From hello_3");
-     end Hello_3;
-
-   There are no errors in this file.
-
-   In buffer 'hello_3.adb', invoke 'Ada | Project files | Find and
-select project...', and select 'Example_3/other.gpr'.  This tells Emacs
-Ada mode to stop using the project file from 'Example_2', and use the
-one for 'Example_3'.  Also note that since this project file is not
-named 'hello_3.gpr', it would not be found by default.
-
-   Then, again in 'hello_3.adb', invoke 'Ada | Set main and Build'.  You
-should get a '*compilation*' buffer containing something like (the
-directory paths will be different):
-
-     gprbuild -Pother.gpr hello_3
-     Compile
-        [Ada]          hello_3.adb
-        [Ada]          hello_pkg.adb
-     hello_pkg.adb:2:08: keyword "body" expected here [see file name]
-     gprbuild: "C:\Examples\Example_3\hello_pkg.adb" compilation error
-
-   Move to the error with 'C-x `'.  Ada mode searches the list of
-directories given by 'Source_Dirs' for the file mentioned in the
-compiler error message.
-
-   Use 'C-x`', 'C-c M-`' to fix the errors, then 'Ada | Build | Build'
-and 'Ada | Build | Run' to build and run.
-
-
-File: ada-mode.info,  Node: Use wisi project file,  Next: Use multiple GNAT 
project files,  Prev: Set source search path,  Up: Compiling Examples
-
-4.2.4 Use wisi project file
----------------------------
-
-In this example, we show how to use a wisi project file to set some
-options that cannot be set in a gpr project file.  In addition, we
-change a setting so you are prompted for a project file, rather than
-using a default one.
-
-   Change the setting:
-
-     M-x set-variable ada-build-prompt-prj search-prompt
-
-   Create the directory 'Example_4', containing:
-
-   'hello_pkg.ads':
-
-     package Hello_Pkg is
-        procedure Say_Hello;
-     end Hello_Pkg;
-
-   'hello_pkg.adb':
-
-     with Ada.Text_Io;
-     package body Hello_Pkg is
-        procedure Say_Hello
-        is begin
-           Put_Line ("Hello from hello_pkg.adb");
-        end Say_Hello;
-     end Hello_Pkg;
-
-   These two files are the similar to files from example 1;
-'hello_pkg.adb' has an error on line 5 (missing "Ada.Text_IO.").
-
-   'example_4.prj':
-
-     -- Wisi project file
-
-     gpr_project_path=More
-
-     gpr_file=example_4.gpr
-
-     casing=example_4.casing
-
-   'example_4.prj' is a wisi project file; it specifies the
-'gpr_project_path', telling 'gprbuild' where to search for gpr files,
-and specifies the gpr file to use.  Finally it specifies a casing
-exception file:
-
-   'example_4.casing':
-
-     Text_IO
-
-   The default auto casing rules in ada-mode state that the Ada package
-"Ada.Text_IO" should be capitalized as "Ada.Text_Io", which does not
-match the Ada Reference Manual.  'example_4.casing' specifies that
-instead "Text_IO" should be capitalized as shown.
-
-   You can create a casing exception by editing the file directly, or
-via the 'Ada | Casing' menu.
-
-   'gpr_project_path' and 'casing' are list variables; each occurence in
-a wisi project file adds an entry to the list.
-
-   In addition, create a directory 'Example_4/More', containing these
-files:
-
-   'more/hello_4.adb':
-
-     with Hello_Pkg;
-     with Ada.Text_Io; use Ada.Text_Io;
-     procedure Hello_4
-     is begin
-        Hello_Pkg.Say_Hello;
-        Put_Line ("From hello_4");
-     end Hello_4;
-
-   There are no errors in this file, except for the casing in
-"Ada.Text_Io".
-
-   'More/example_4.gpr':
-
-     project Example_4 is
-        for Source_Dirs use (".", "..");
-
-        package Compiler is
-           for Default_Switches ("Ada") use ("-gnatyknpr");
-        end Compiler;
-     end Example_4;
-
-   The compiler switch checks all casing; we will get errors for
-"Ada.Text_Io".
-
-   Then, in 'hello_4.adb', invoke 'Ada | Set main and Build'.  ada-mode
-looks for a project file 'hello_4.prj' or 'hello_4.gpr'; since neither
-is found, you are prompted to find a project file.  Select
-'Example_4/example_4.prj'; that is parsed and selected, and the build
-continues.
-
-   You should get a '*compilation*' buffer containing something like
-(the directory paths will be different):
-
-     gprbuild -Pexample_4.gpr hello_4
-     Compile
-        [Ada]          hello_pkg.adb
-     hello_pkg.adb:1:16: (style) bad casing of "Text_IO" declared at 
a-textio.ads:57
-     hello_pkg.adb:5:07: "Put_Line" is not visible
-     hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:508
-     hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:498
-     gprbuild: *** compilation phase failed
-
-   When you fix the errors, note that 'C-c M-`' inserts the correct case
-for "Ada.Text_IO", and corrects the case where it is incorrect.  The
-case is also corrected as you type; you can type "ada.text_io."  and the
-case will be corrected when you type each "."  or "_".
-
-
-File: ada-mode.info,  Node: Use multiple GNAT project files,  Next: Use a 
Makefile,  Prev: Use wisi project file,  Up: Compiling Examples
-
-4.2.5 Use multiple GNAT project files
--------------------------------------
-
-In this example, we show how to use multiple GNAT project files,
-specifying the GNAT project search path in an Ada mode project file.
-This also requires explicitly setting 'project-find-functions'.
-
-   If you haven't already, create the directory 'Example_4' as specified
-in *note Use wisi project file::.  If you've already created it and run
-the tutorial, restore the compilation error in hello_pkg.adb; delete
-'Ada.Text_IO.' in front of 'Put_Line'.
-
-   Create the directory 'Example_5', containing:
-
-   'hello_5.adb':
-
-     with Hello_Pkg;
-     with Ada.Text_IO; use Ada.Text_IO;
-     procedure Hello_5
-     is begin
-        Hello_Pkg.Say_Hello;
-        Put_Line ("From hello_5");
-     end Hello_5;
-
-   There are no errors in this file.
-
-   'hello_5.prj':
-
-     gpr_project_path=../Example_4/More
-     gpr_file=hello_5.gpr
-
-     casing=../Example_4/example_4.casing
-
-   'hello_5.gpr':
-
-     with "example_4";
-     project Hello_5 is
-        for Source_Dirs use (".");
-        package Compiler is
-           for Default_Switches ("Ada") use ("-g", "-gnatyknprt");
-        end Compiler;
-     end Hello_5;
-
-   In buffer 'hello_5.adb', invoke 'Ada | Project | Find and select
-project...', and select 'Example_5/hello_5.prj'.  This would also be
-found by default if no previous project file had been selected.  Note
-that if 'example_5.gpr' were named 'hello_5.gpr', the project file
-search would find more than one match, causing an error.
-
-   Then, again in 'hello_5.adb', invoke 'Ada | Build | Set main and
-Build'.  You should get a '*compilation*' buffer containing something
-like (the directory paths will be different):
-
-     -*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode/test/Example_5/" -*-
-     Compilation started at Mon Oct 21 11:32:05
-
-     gprbuild -Pexample_5.gpr hello_5
-     Compile
-        [Ada]          hello_5.adb
-        [Ada]          hello_pkg.adb
-     hello_pkg.adb:5:07: "Put_Line" is not visible
-     hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:508
-     hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:498
-     gprbuild: *** compilation phase failed
-
-   Now type 'C-x `'; 'Example_4/hello_pkg.adb' is shown, demonstrating
-that 'hello_5.gpr' and 'hello_4.gpr' are being used to set the
-compilation search path.
-
-   Now, in buffer 'hello_pkg.adb' invoke the menu 'Ada | Navigate | Find
-file in project' (which calls 'ada-find-file') to get back to the
-'hello_5.adb' buffer.  If you have not selected any project files
-previously in this emacs session, this gives an unexpected prompt for a
-"project directory".  Kill that with 'C-g'.  Otherwise, enter 'hel <tab>
-5 <tab>'; it will say "no match".
-
-   The problem here the way Emacs projects work.  To find the current
-project, the functions in 'project-find-functions' are run; one should
-return a project.  The ada-mode build functions add
-'wisi-prj-find-dominating-cached' to 'project-find-functions'; that
-looks in the current directory tree for a project file with the same
-name as one that was previously selected.
-
-   If 'Example_5' is the only project in the current emacs session,
-'wisi-prj-find-dominating-cached' finds no project file (because
-'Example_4' is not a child directory of 'Example_5'), so the default
-strategy of "ask the user" is used, giving the prompt for a directory.
-
-   If 'Example_4' is also a project in the current emacs session,
-'wisi-prj-find-dominating-cached' finds that; since it does not contain
-'hello_5.adb', 'ada-find-file' cannot find it.
-
-   Any time you have a main project that depends on other projects that
-are not in the same directory tree, you will have this problem.
-
-   The fix is to use a different function in 'project-find-functions';
-'wisi-prj-current-cached'.  This uses a global variable to indicate what
-the current project is.  wisi provides four different functions for
-'project-find-functions'.  *Note Selecting projects: (wisi)Selecting
-projects.
-
-   To change 'project-find-functions', execute:
-
-     M-: (remove-hook 'project-find-functions 'wisi-prj-find-dominating-cached)
-     M-: (add-hook 'project-find-functions 'wisi-prj-current-cached)
-
-   Normally, you must set 'project-find-functions' in your '~/.emacs',
-using the 'add-hook' function.  The ada-mode Build menu functions set it
-for you to make things simpler for novices, but they do not change it if
-you have put one of the wisi functions on it.
-
-   Now set the current project; invoke 'Ada | Project | Find and select
-project...', and select 'Example_5/hello_5.prj'.  Then in
-'hello_pkg.adb', invoke 'Ada | Navigate | Find file in project'; now we
-can find 'hello_5.adb'.
-
-
-File: ada-mode.info,  Node: Use a Makefile,  Prev: Use multiple GNAT project 
files,  Up: Compiling Examples
-
-4.2.6 Use a Makefile
---------------------
-
-In this example, we show how to use a Makefile to build an Ada project
-with GNAT, run the result, and clean the build directories.
-
-   Create the directories 'Example_4, Example_5' as specified in *note
-Use wisi project file::, *note Use multiple GNAT project files::.
-
-   In 'Example_5', add the file:
-
-   'Makefile':
-
-     # build and run hello_5 project
-
-     all : build run
-
-     .PHONY : force
-
-     build : force
-             gprbuild -PExample_5.gpr hello_5
-
-     run :
-             ./hello_5
-
-     clean :
-             gnatclean -r -PExample_5
-
-     # Local Variables:
-     # eval:(unless (wisi-prj-find-function-set-p)(add-hook 
'project-find-functions 'wisi-prj-current-cached))
-     # eval:(wisi-prj-dtrt-parse-file "hello_5.prj" (ada-prj-default "hello_5 
# main") "Makefile")
-     # End:
-
-   Tell Emacs to allow 'eval' in 'Local Variables':
-     M-: (setq enable-local-eval t)
-
-   Close and re-open 'Makefile'; the 'Local Variables' section sets the
-project file to 'hello_5.prj' when the 'Makefile' is opened.
-
-   If you have set 'project-find-functions' in your '~/.emacs', you can
-leave out the first 'eval' line.  Note that 'wisi-prj-dtrt-parse-file'
-does the right thing depending on which wisi function is in
-'project-find-functions'.
-
-   In 'Makefile', invoke 'Tools | Compile...', and accept the default
-make command.  This runs the 'all' target, which builds 'hello_5' and
-runs it (you may have to fix source errors first, depending on how fresh
-the Example_4 directory is).
-
-
-File: ada-mode.info,  Node: Compiler errors,  Prev: Compiling Examples,  Up: 
Compiling Executing
-
-4.3 Compiler errors
-===================
-
-The 'Check syntax' and 'Build' commands, or running 'make', place
-compilation errors in a separate buffer named '*compilation*'.
-
-   Each line in this buffer will become active: you can simply click on
-it with the middle button of the mouse, or move point to it and press
-<RET>.  Emacs will then display the relevant source file and put point
-on the line and column where the error was found.
-
-   You can also press the 'C-x `' key ('next-error'), and Emacs will
-jump to the first error.  If you press that key again, it will move you
-to the second error, and so on.
-
-   Some error messages also include references to other files.  These
-references are accessed via 'C-c `'.
-
-
-File: ada-mode.info,  Node: Project files,  Next: Moving Through Ada Code,  
Prev: Compiling Executing,  Up: Top
-
-5 Project files
-***************
-
-Ada mode uses wisi project files; *note Project files: (wisi)wisi.
-
-   A wisi project file specifies what directories hold sources for your
-project, and allows you to customize the compilation commands and other
-things on a per-project basis.
-
-   The default file extension for wisi project files is '*.adp' or
-'*.prj'.  You can use a different extension by adding it to
-'ada-prj-file-extensions', and a different syntax by adding a parser
-function to 'ada-prj-parser-alist'.
-
-   Note that wisi project files are different than GNAT compiler project
-files ('*.gpr').  However, Emacs Ada mode can use a GNAT project file to
-specify the project directories.  If no other customization is needed, a
-GNAT project file can be used without a wisi project file.
-
-   If no wisi project file is specified, some Ada mode functions are not
-available.
-
-* Menu:
-
-* Project file overview::
-* Project file variables::
-
-
-File: ada-mode.info,  Node: Project file overview,  Next: Project file 
variables,  Prev: Project files,  Up: Project files
-
-5.1 Project file overview
-=========================
-
-The current project file is shown by the menu command <Ada | Project
-Files | Show project>.
-
-   To set the project file, use the menu command <Ada | Project Files |
-Find and select Project ...>, or one of the elisp functions described in
-*note Selecting Projects: (wisi)wisi.
-
-   The project file may also be a GNAT project file (with file extension
-is '.gpr').
-
-
-File: ada-mode.info,  Node: Project file variables,  Prev: Project file 
overview,  Up: Project files
-
-5.2 Project file variables
-==========================
-
-Some project variables have defaults that can be changed by setting
-elisp variables; the table below identifies the elisp variable for each
-project variable.  Elisp variables corresponding to project variables
-that are lists are elisp lists.
-
-   wisi defines some project variables, Ada mode defines some, others
-are defined by the compiler and the cross reference tool.
-
-   Here is the list of variables valid defined by wisi and Ada mode.  In
-the default values, the current directory '"."' is the directory
-containing the project file.
-
-'ada_compiler' [default: 'ada-compiler, gnat']
-     Ada compiler for this project.
-
-     Setting this in the project file reinitializes all options for the
-     xref tool, so it must occur before any compiler-specific project
-     variable.
-
-'casing'
-     List of files containing casing exceptions.  *Note Automatic
-     casing: Automatic casing.
-
-'gnat-stub-args'
-     List of strings passed to 'gnat stub' when it is run.
-
-'gnat-stub-cargs'
-     List of strings passed to 'gnat stub' after '-cargs'.
-
-'obj_dir'
-     A list of directories to search for object and cross-reference
-     files.  Only needed if you are not using GPR files.
-
-'src_dir'
-     A list of directories to search for source files.  Added to the
-     source directories from a gpr file (if any).
-
-'xref_tool' [default: 'ada-xref-tool']
-     Cross reference tool for this project.
-
-     Setting this in the project file reinitializes all options for the
-     xref tool, so it must occur in the project file before any other
-     settings that affect the xref tool.
-
-     If 'gpr_query' is found in 'PATH', 'ada-xref-tool' defaults to
-     ''gpr_query'.  Otherwise, it defaults to ''gnat', which uses 'gnat
-     find'.
-
-   The following project file variables are defined by the GNAT
-compiler:
-
-'ada_project_path' [default: ]
-     Same as 'gpr_project_path'; see below.
-
-'gpr_file' [default: ]
-     The GNAT project file for the project.
-
-     If set, the source and project directories specified in the GNAT
-     project file are appended to 'src_dir' and 'gpr_project_path'.
-     This allows specifying Ada source directories with a GNAT project
-     file, and other source directories with the Emacs project file.
-
-'gpr_project_path' [default: ]
-     A list of directories to search for GNAT project files.  The list
-     is passed to tools via the 'GPR_PROJECT_PATH' process environment
-     variable in the process used to run the 'gnat' and 'gpr_query'
-     tools.
-
-     If not set, 'GPR_PROJECT_PATH' in the child process is inherited
-     from the Emacs process.
-
-'runtime' [default: ]
-     If set, the name of the runtime, used as the value of the 'RTS'
-     command line option for tools.
-
-'target' [default: 'nil']
-     If set, the name of the cross-compilation target, prepended to the
-     'gnat' executable name.
-
-   The following project variables are used by the 'Ada | Build' menu
-commands:
-
-'check_cmd' [default: 'ada-build-check-cmd']
-     Compiler commannd to syntax check a single file.
-
-'main' [default: basename of current file name]
-     File name of executable to build.
-
-'make_cmd' [default: 'ada-build-make-cmd']
-     Command to compile and link the application.
-
-'run_cmd' [default: 'ada-build-run-cmd']
-     Command to run the application.
-
-
-File: ada-mode.info,  Node: Moving Through Ada Code,  Next: Identifier 
completion,  Prev: Project files,  Up: Top
-
-6 Moving Through Ada Code
-*************************
-
-There are several commands to navigate through Ada code.  All these
-functions are available through the Ada menu and keybindings.
-
-   Some of these commands rely on cross reference facilities provided by
-the compiler; the standard Emacs Ada mode only supports the GNAT
-compiler, but others can be added (*note Other cross-reference::).
-
-'C-c C-d'
-     Move from any use of an identifier to its declaration, for from a
-     declaration to its body (if there is one).
-
-     This runs 'xref-find-definitions', which has a default global
-     binding of <M-.>
-
-'C-c M-d'
-     Move from a child type declaration to the parent type declaration;
-     display a list of references if there is more than one parent.
-
-'C-c C-n'
-     Move to the next keyword in the current statement.
-
-     For example, if point is on 'if', move to 'then'.
-
-     This runs 'forward-sexp', which has a default global binding of
-     'C-M-f'.
-
-'C-c C-p'
-     Move to the previous keyword in the current statement.
-
-     For example, if point is on 'then', move to 'if'.
-
-     This runs 'backward-sexp', which has a default global binding of
-     'C-M-b'.
-
-'C-c C-o'
-     Switch between corresponding spec and body.  There are several
-     special cases:
-
-        * If the region is active, it is assumed to contain an Ada
-          package name; position point on the corresponding package
-          declaration.
-
-        * If point is in the start line of a top level child package
-          declaration (but not package body), or a child subprogram spec
-          or body, position point on the corresponding parent package
-          declaration.
-
-        * If point is in the start line of a top level separate body,
-          position point on the corresponding separate stub declaration.
-
-        * If point is in a subprogram declaration or body, position
-          point on the corresponding body or declaration in the other
-          file.
-
-        * If point is on a 'with' clause, position point on the
-          corresponding declaration.
-
-'C-c C-r'
-     Show all references to the identifier surrounding point.  Use 'C-x
-     `' ('next-error') to visit each reference (as for compilation
-     errors).
-
-'C-c C-x'
-     Show all declarations that override the primitive procedure at
-     point.  Use 'C-x `' ('next-error') to visit each reference (as for
-     compilation errors).
-
-'C-c M-x'
-     Show the declaration that the declaration at point overrides.
-
-'C-u SPACE'
-     Jump back to the previous location.
-
-'Ada | Misc | Refresh cross reference cache'
-     Cross reference information is loaded from the compiler output when
-     the first cross reference command is issued (or when the project
-     file is parsed, if useing cached project files).  If the code is
-     recompiled after that, the cross reference information is reloaded
-     by invoking this menu command.
-
-
-File: ada-mode.info,  Node: Identifier completion,  Next: Indentation,  Prev: 
Moving Through Ada Code,  Up: Top
-
-7 Identifier completion
-***********************
-
-Emacs provides two general ways of completing identifiers while typing:
-'M-/' (bound to 'dabbrev-expand'), and 'M-tab' (bound to
-'complete-symbol'.
-
-   This is an easy way to type faster: you just have to type the first
-few letters of an identifier, and then loop through all the possible
-completions.
-
-   'complete-symbol' completes on all the symbols defined in the current
-project, as returned by 'gpr_query'.  For a procedure declared as:
-
-     package Package_Name is
-        procedure Procedure_Name (args);
-
-   the completion string looks like:
-
-     Procedure_Name(args)<Package_Name<line>>
-
-   so for example you can type "iterate<wisitok" to complete on
-WisiToken iterators, or "add(Data" to complete on all subprograms whose
-name starts with "add" and whose first argument starts with "Data".
-
-   If you have bound 'hippie-expand', that also uses 'dabbrev-expand'.
-
-   'dabbrev-expand' completes on all words in all open Ada files for
-possible completions, using simple Emacs syntax-class parsing.
-
-   For instance, if the words 'my_identifier' and 'my_subprogram' are
-the only words starting with 'my' in any of the open Ada files, then you
-will have this scenario:
-
-     You type:  myM-/
-     Emacs inserts:  'my_identifier'
-     If you press M-/ once again, Emacs replaces 'my_identifier' with
-     'my_subprogram'.
-     Pressing M-/ once more will bring you back to 'my_identifier'.
-
-   This is a very fast way to do completion, and the casing of words
-will also be respected.
-
-   Another place where identifier completion is used in the
-'xref-find-definitions' (<C-u M-.>) and 'wisi-goto-spec/body' (<C-u C-c
-C-d>) commands; these complete on all symbols in the project (provided
-by 'gpr_query').  With two 'C-u', the completion is limited to symbols
-defined in the current file.
-
-   Note that in Ada, for subprograms that have a specification in the
-'.ads' file and a body in the '.adb' file, <C-u C-u C-c C-d> returns the
-spec location only, so it will not find the function if invoked in the
-'.adb' file.
-
-
-File: ada-mode.info,  Node: Indentation,  Next: Statement skeletons,  Prev: 
Identifier completion,  Up: Top
-
-8 Indentation
-*************
-
-Ada mode comes with a full set of rules for automatic indentation.  You
-can also configure the indentation, via the following variables:
-
-'ada-indent' (default value: 3)
-     Number of columns for default indentation.
-
-'ada-indent-after-trailing-comment' (default value t)
-     If t, align comment lines imediately following a comment on the
-     same line as code with the preceding comment.  Otherwise, ignore
-     the preceding comment.
-
-'ada-indent-broken' (default value: 2)
-     Number of columns to indent the continuation of a broken line.
-
-'ada-indent-comment-col-0' (default value: nil)
-     If non-nil, comments currently starting in column 0 are left in
-     column 0.  Otherwise, they are indented with previous comments or
-     code.
-
-'ada-indent-comment-gnat' (default value: nil)
-     If non-nil, comments are indented to meet the GNAT style check; one
-     of:
-        * multiple of 'ada-indent'
-        * next non-blank line
-        * previous non-blank line
-
-     Otherwise, they are indented with previous comments or code.
-
-'ada-indent-label' (default value: -3)
-     Number of columns to indent a label.
-
-'ada-indent-record-rel-type' (default value: 3)
-     Indentation for 'record' relative to 'type' or 'use'.
-
-'ada-indent-renames' (default value: 2)
-     Indentation for 'renames' relative to the matching subprogram
-     keyword.
-
-     If the subprogram has parameters then if 'ada-indent-renames' is
-     zero or less the indentation is abs 'ada-indent-renames' relative
-     to the open parenthesis; if 'ada-indent-renames' is one or more the
-     indentation is relative to the line containing the keyword.
-
-     If the subprogram has no parameters then 'ada-indent-broken' the
-     indentation is relative to the indentation of the line containing
-     the keyword.
-
-'ada-indent-return' (default value: 0)
-     Indentation for 'return' relative to the matching 'function'.
-
-     If the function has parameters, then if 'ada-indent-return' is zero
-     or less the indentation is abs 'ada-indent-return' relative to the
-     open parenthesis; if 'ada-indent-return' is one or more,
-     indentation is relative to line containing 'function'.
-
-     If the function has no parameters, 'ada-indent-broken' is used
-     relative to line containing 'function'.
-
-'ada-indent-use' (default value: ada-indent-broken)
-     Indentation for the lines in a 'use' statement.
-
-'ada-indent-when' (default value: 3)
-     Indentation for 'when' relative to 'exception', 'case', or 'or' in
-     'select'.
-
-'ada-indent-with' (default value: ada-indent-broken)
-     Indentation for the lines in a 'with' context clause.
-
-   The indentation variables are buffer local; the global value may be
-overridden in an elisp function on 'ada-mode-hook', or in a file local
-variable section.
-
-   The following keys indent portions of the text:
-
-'RET'
-     Insert and indent a new line.
-
-'TAB'
-     Indent the current line, or the current region.
-
-'C-c TAB'
-     Indent the current statement or declaration.
-
-'C-c S-TAB'
-     Indent the statement or declaration containing the current
-     statement or declaration.
-
-   The indentation algorithm relies on a grammar parser to identify the
-syntactic role for keywords and other words in the code.
-
-   In rare cases, the parser gets confused; it can be reset by invoking
-menu <Ada | Misc | Restart parser>.  Please report such cases as a bug.
-
-
-File: ada-mode.info,  Node: Statement skeletons,  Next: Aligning code,  Prev: 
Indentation,  Up: Top
-
-9 Statement skeletons
-*********************
-
-'C-c C-e' expands the previous one or two words into a statement
-skeleton.  For example, 'i f C-c C-e' expands to:
-
-     if  then
-     elsif  then
-     else
-     end if;
-
-   For named statements (packages, loops, etc), the name is taken from
-the word before point, and the name of the statement from the word
-before that.
-
-   Some expansions prompt for more information, such as whether a spec
-or body is desired.  For example, 'package A_Package C-c C-e' first
-prompts for "body" or "spec".  If "spec" is selected, the following code
-is inserted:
-
-     package A_Package is
-     private
-     end A_Package;
-
-   Named blocks work similarly: 'declare A_Block C-c C-e' expands
-(without prompting) to:
-
-     A_Block:
-        declare
-        begin
-        exception
-        end A_Block;
-
-   Note that the order of the keyword 'declare' and the name 'A_Block'
-are reversed in the expansion; this may take some getting used to.
-Alternately, if no name is present in the buffer, you are prompted for a
-name: 'declare C-c C-e' first prompts for a name, then expands to the
-above.
-
-   The variable 'ada-skel-initial-string' defines what to insert in a
-newly created empty buffer.  It defaults to '{header}', which is a
-placeholder defined by 'ada-skel-header', which inserts a typical header
-with a copyright license (choice of GPL or restricted).  Users will
-typically want to override the definition of 'ada-skel-initial-string'
-and/or 'ada-skel-header', or provide more choices of copyright license.
-
-
-File: ada-mode.info,  Node: Aligning code,  Next: Automatic casing,  Prev: 
Statement skeletons,  Up: Top
-
-10 Aligning code
-****************
-
-Aligning code adds space in each line so that similar parts of
-successive lines are aligned vertically.  For example, a sequence of
-declarations:
-
-     A : Integer;
-     Another : Float := 1.0;
-     More : Integer := 2;
-
-   changes to this when aligned:
-
-     A       : Integer;
-     Another : Float   := 1.0;
-     More    : Integer := 2;
-
-   Alignment is invoked by 'C-c C-a', which aligns the sequence of
-statements surrounding point, or within the selected region.
-
-   Parameter lists are also aligned:
-
-        procedure Foo
-          (A : in Integer;
-           Another : out Float := 1.0;
-           More : in out Integer := 2);
-
-   is aligned to:
-
-        procedure Foo
-          (A       : in     Integer;
-           Another :    out Float   := 1.0;
-           More    : in out Integer := 2);
-
-
-File: ada-mode.info,  Node: Automatic casing,  Next: Comment Handling,  Prev: 
Aligning code,  Up: Top
-
-11 Automatic casing
-*******************
-
-Casing of identifiers, attributes and keywords is automatically
-performed while typing when the variable 'ada-auto-case' is non-nil (the
-default).  Every time you type a word separator, the previous word is
-automatically cased.
-
-   You can customize the automatic casing with the following variables:
-
-'ada-case-keyword'
-     Value must be one of:
-     'downcase-word'
-          Ada keywords will be lowercase.
-
-     'upcase-word'
-          Ada keywords will be uppercase.
-
-'ada-case-strict'
-     If non-nil, all identifiers are forced to 'Mixed_Case'; first
-     letter, and letter following "_" are uppercase; rest are lowercase.
-
-     If nil, the mixed case characters in identifiers are forced to
-     upper case, but the other characters are not modified.  That allows
-     typing all uppercase identifiers without defining a casing
-     exception.
-
-   You can define exceptions to these rules, in files specified by the
-'casing' project variable; *note Casing exception files: (wisi)Casing
-exception files.
-
-   There are two ways to add new items to a casing exception file: you
-can simply edit it as you would edit any text file, or you can position
-point on the word you want to add, and select menu 'Ada | Casing |
-Create full exception' or 'Ada | Casing | Create partial exception'.
-The word will be added to the current list of exceptions and to the
-file.
-
-   It is sometimes useful to have multiple exception files.  For
-example, one could be the standard Ada acronyms, the second some company
-specific exceptions, and the last one some project specific exceptions.
-When you create a new exception, you are prompted for the file to save
-it in.
-
-   Other keys and menu entries are defined:
-
-'C-c C-w'
-     Adjust case of the word at point.  With prefix arg, adjust case
-     even if in a comment or string.  Normally, comments and strings are
-     not affected by case adjust.
-
-'Ada | Casing | Adjust case region'
-     Adjust case in the active region.
-
-'Ada | Casing | Adjust case buffer'
-     Adjust case in the active buffer.
-
-
-File: ada-mode.info,  Node: Comment Handling,  Next: Key summary,  Prev: 
Automatic casing,  Up: Top
-
-12 Comment Handling
-*******************
-
-By default, comment lines get indented like Ada code.  There are a few
-additional functions to handle comments:
-
-'M-;'
-     If the region is active, comment or uncomment it.
-
-     If the current line is empty, start a comment.
-
-     Otherwise, add a comment at the end of the line, in a column given
-     by 'comment-column'.
-
-'M-q'
-     Fill the current comment paragraph.
-
-
-File: ada-mode.info,  Node: Key summary,  Next: Developer overview,  Prev: 
Comment Handling,  Up: Top
-
-13 Key summary
-**************
-
-This table summarizes the keys described in this manual.  Other keys are
-bound by Ada mode; see <C-h b> for a complete list.  The Ada menu also
-displays keys bound to menu operations.
-
-'M-/'
-     *Note Identifier completion::.  Complete the word before point;
-     repeat to cycle thru possible completions.
-
-'M-;'
-     *Note Comment Handling::.  If the region is active, comment or
-     uncomment it.
-
-'M-q'
-     *Note Comment Handling::.  Fill the current comment paragraph.
-
-'RET'
-     *Note Indentation::.  Insert and indent a new line.
-
-'TAB'
-     *Note Indentation::.  Indent the current line, or the current
-     region.
-
-'C-c TAB'
-     *Note Indentation::.  Indent the current statement or declaration.
-
-'C-c S-TAB'
-     *Note Indentation::.  Indent the containing statement or
-     declaration.
-
-'C-c `'
-     *Note Compiler errors::.  Move to the location of the secondary
-     reference in the current compilation error.
-
-'C-c C-a'
-     *Note Aligning code::.  Align code.
-
-'C-c C-c'
-     *Note Compile commands::.  Build the current main program.
-
-'C-c C-d'
-     *Note Moving Through Ada Code::.  Move from any use of an
-     identifier to its declaration, for from a declaration to its body.
-
-'C-c M-d'
-     *Note Moving Through Ada Code::.  Move from a child type
-     declaration to the parent type declaration.
-
-'C-c C-e'
-     *Note Statement skeletons::.  Expand previous one or two words into
-     a statement or declaration skeleton.
-
-'C-c C-c'
-     *Note Compile commands::.  Build the current file.
-
-'C-c C-n'
-     *Note Moving Through Ada Code::.  Move to the next keyword in the
-     current statement.
-
-'C-c C-o'
-     *Note Moving Through Ada Code::.  Switch between corresponding spec
-     and body, or find other spec.
-
-'C-c C-p'
-     *Note Moving Through Ada Code::.  Move to the previous keyword in
-     the current statement.
-
-'C-c C-r'
-     *Note Moving Through Ada Code::.  Show all references to the
-     identifier surrounding point.
-
-'C-c C-w'
-     *Note Automatic casing::.  Adjust case of the word at point.  With
-     prefix arg, adjust case even if in comment or string.
-
-'C-c C-x'
-     *Note Moving Through Ada Code::.  Show all declarations that
-     override the primitive procedure at point.
-
-'C-c C-y'
-     *Note Automatic casing::.  Create case exception.
-
-'C-c `'
-     *Note Compiler errors::.  Move to the location of the next
-     secondary compilation error.
-
-'C-x `'
-     *Note Compiler errors::.  Move to the location of the next
-     compilation error or show result.
-
-'M-q'
-     *Note Comment Handling::.  Fill the current comment paragraph.
-
-
-File: ada-mode.info,  Node: Developer overview,  Next: GNU Free Documentation 
License,  Prev: Key summary,  Up: Top
-
-14 Developer overview
-*********************
-
-If you'd like to contribute to Ada mode, or just understand the sources,
-here's an overview.
-
-* Menu:
-
-* Directory structure::
-* ELPA::
-* Savannah::
-
-
-File: ada-mode.info,  Node: Directory structure,  Next: ELPA,  Up: Developer 
overview
-
-14.1 Directory structure
-========================
-
-'org.emacs.ada-mode'
-     Main source.
-
-     File extensions:
-     '*.el'
-          Elisp files; main code.
-
-     '*.elc'
-          Byte-compiled elisp files, not in the distribution.  Generated
-          by the Makefile target 'byte-compile', or by the Emacs package
-          installer.
-
-     '*.ad?'
-          Ada code for the external process parser and other tools, some
-          generated by the WisiToken tool 'wisitoken-bnf-generate.exe'.
-
-     '*.parse_table'
-          Diagnostic output from 'wisitoken-bnf-generate.exe', useful
-          for tracing parses while debugging a grammar issue.  Not in
-          any distribution.
-
-     '*.wy'
-          Grammar files, specifying the language to be parsed.  The
-          syntax for these grammar files is similar to that for bison
-          and wisent, but not the same; see the WisiToken documentation
-          for more info.
-
-     '*.texi'
-          Texinfo source for the user guides.
-
-     '*.html'
-          Generated user guide in HTML format.
-
-     '*.info'
-          Generated user guide in Emacs info format.
-
-'build'
-     Makefile for building the external process executable, gpr-query,
-     and the user guides; for running tests; and for publishing to the
-     web page or Gnu ELPA. The main targets are:
-
-     'elisp'
-          Builds ada-mode in place, runs all tests.
-
-     'update-elisp'
-          Builds ada-mode in place.
-
-     'install'
-          Installs executables in the GNAT executable directory.
-
-     'pub'
-          Builds the ELPA packages.
-
-'test'
-     All tests for Ada mode, gpr mode, parser.
-
-     Each test is run in a separate invocation of Emacs, so it is
-     completely independent of all other tests.
-
-     The tests are driven by the elisp code in
-     'wisi-run-indent-test.el'.
-
-     In general, the Ada mode tests open the file, execute test actions,
-     re-indent, and re-captialize the entire file.  The result is diffed
-     with the original, and must match.
-
-     The test actions are defined by comments with the prefix
-     '--EMACSCMD:'; they are elisp forms that invoke Ada mode functions.
-     This is used to test navigation features and other parser effects.
-
-'test/Example_*'
-     Starting files for the examples in this user guide.
-
-'test/gpr'
-     Tests for gpr mode.
-
-'test/subdir'
-     More tests; allows testing path search features.
-
-
-File: ada-mode.info,  Node: ELPA,  Next: Savannah,  Prev: Directory structure, 
 Up: Developer overview
-
-14.2 ELPA
-=========
-
-Ada mode is published via the Gnu ELPA archive.  To test a new version
-of Ada mode, we use a local Gnu ELPA archive.  That requires fetching
-Gnu ELPA via git:
-     cd /Projects
-     git clone git://git.savannah.gnu.org/emacs/elpa.git
-
-   If you have an Emacs Savannah developer account, you can use:
-
-     cd /Projects
-     git clone <login>@git.savannah.gnu.org/emacs/elpa.git
-
-   'build/Makefile' contains targets for copying Ada mode source to the
-elpa workspace, and for building the elpa archive there.
-
-
-File: ada-mode.info,  Node: Savannah,  Prev: ELPA,  Up: Developer overview
-
-14.3 Savannah
-=============
-
-The ada-mode git repository, web page, mailing list, and tarball
-download are hosted on savannah.non-gnu.org, project Emacs Ada mode
-(<https://savannah.nongnu.org/projects/ada-mode/>).  See the project
-admin page there for more information.
-
-   To checkout all source required to build and test ada-mode, assuming
-you have ssh read/write git access to savannah ada-mode:
-
-     git clone stephen_leake@git.sv.gnu.org:/srv/git/ada-mode.git \
-         -b org.emacs.ada-mode org.emacs.ada-mode
-     cd ada-mode
-     git worktree add -b org.wisitoken ../org.wisitoken origin/org.wisitoken
-     git worktree add -b org.stephe_leake.sal ../org.stephe_leake.sal 
origin/org.stephe_leake.sal
-     git worktree add -b org.stephe_leake.aunit_ext 
../org.stephe_leake.aunit_ext origin/org.stephe_leake.aunit_ext
-     git worktree add -b org.stephe_leake.makerules 
../org.stephe_leake.makerules origin/org.stephe_leake.makerules
-
-   In each worktree, there is a 'build' directory containing the
-Makefile and all build outputs.  The target 'all' runs all tests and
-build documentation for that worktree.
-
-
-File: ada-mode.info,  Node: GNU Free Documentation License,  Prev: Developer 
overview,  Up: Top
-
-Appendix A GNU Free Documentation License
-*****************************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009 Free Software 
Foundation, Inc.
-     <http://fsf.org/>
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.  We
-     recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it can
-     be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You accept
-     the license if you copy, modify or distribute the work in a way
-     requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in the
-     notice that says that the Document is released under this License.
-     If a section does not fit the above definition of Secondary then it
-     is not allowed to be designated as Invariant.  The Document may
-     contain zero Invariant Sections.  If the Document does not identify
-     any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images composed
-     of pixels) generic paint programs or (for drawings) some widely
-     available drawing editor, and that is suitable for input to text
-     formatters or for automatic translation to a variety of formats
-     suitable for input to text formatters.  A copy made in an otherwise
-     Transparent file format whose markup, or absence of markup, has
-     been arranged to thwart or discourage subsequent modification by
-     readers is not Transparent.  An image format is not Transparent if
-     used for any substantial amount of text.  A copy that is not
-     "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and standard-conforming
-     simple HTML, PostScript or PDF designed for human modification.
-     Examples of transparent image formats include PNG, XCF and JPG.
-     Opaque formats include proprietary formats that can be read and
-     edited only by proprietary word processors, SGML or XML for which
-     the DTD and/or processing tools are not generally available, and
-     the machine-generated HTML, PostScript or PDF produced by some word
-     processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow the
-     conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the title
-     equally prominent and visible.  You may add other material on the
-     covers in addition.  Copying with changes limited to the covers, as
-     long as they preserve the title of the Document and satisfy these
-     conditions, can be treated as verbatim copying in other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a machine-readable
-     Transparent copy along with each Opaque copy, or state in or with
-     each Opaque copy a computer-network location from which the general
-     network-using public has access to download using public-standard
-     network protocols a complete Transparent copy of the Document, free
-     of added material.  If you use the latter option, you must take
-     reasonably prudent steps, when you begin distribution of Opaque
-     copies in quantity, to ensure that this Transparent copy will
-     remain thus accessible at the stated location until at least one
-     year after the last time you distribute an Opaque copy (directly or
-     through your agents or retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of copies,
-     to give them a chance to provide you with an updated version of the
-     Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with the
-     Modified Version filling the role of the Document, thus licensing
-     distribution and modification of the Modified Version to whoever
-     possesses a copy of it.  In addition, you must do these things in
-     the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of previous
-          versions (which should, if there were any, be listed in the
-          History section of the Document).  You may use the same title
-          as a previous version if the original publisher of that
-          version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on the
-          Title Page.  If there is no section Entitled "History" in the
-          Document, create one stating the title, year, authors, and
-          publisher of the Document as given on its Title Page, then add
-          an item describing the Modified Version as stated in the
-          previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in the
-          "History" section.  You may omit a network location for a work
-          that was published at least four years before the Document
-          itself, or if the original publisher of the version it refers
-          to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the section
-          all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document, unaltered
-          in their text and in their titles.  Section numbers or the
-          equivalent are not considered part of the section titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option designate
-     some or all of these sections as invariant.  To do this, add their
-     titles to the list of Invariant Sections in the Modified Version's
-     license notice.  These titles must be distinct from any other
-     section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end of
-     the list of Cover Texts in the Modified Version.  Only one passage
-     of Front-Cover Text and one of Back-Cover Text may be added by (or
-     through arrangements made by) any one entity.  If the Document
-     already includes a cover text for the same cover, previously added
-     by you or by arrangement made by the same entity you are acting on
-     behalf of, you may not add another; but you may replace the old
-     one, on explicit permission from the previous publisher that added
-     the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination all
-     of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the documents
-     in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow this
-     License in all other respects regarding verbatim copying of that
-     document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of a
-     storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly and
-     finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from you
-     under this License.  If your rights have been terminated and not
-     permanently reinstated, receipt of a copy of some or all of the
-     same material does not give you any rights to use it.
-
-  10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     <http://www.gnu.org/copyleft/>.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If the
-     Document does not specify a version number of this License, you may
-     choose any version ever published (not as a draft) by the Free
-     Software Foundation.  If the Document specifies that a proxy can
-     decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
-  11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       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, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts."  line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of free
-software license, such as the GNU General Public License, to permit
-their use in free software.
-
-
-
-Tag Table:
-Node: Top931
-Node: Overview2690
-Node: Why not LSP?3927
-Node: Installation4683
-Node: Ada executables5719
-Node: Building GNATCOLL8231
-Node: Building the executables9285
-Node: Known versions10103
-Node: Customization11977
-Node: Slow response16480
-Node: Non-standard file names18206
-Node: Other compiler20085
-Node: Other cross-reference20660
-Node: Other customization21383
-Node: Compiling Executing21533
-Node: Compile commands22256
-Node: Compiling Examples24948
-Node: No project files25780
-Node: Set compiler options31096
-Node: Set source search path33149
-Node: Use wisi project file35386
-Node: Use multiple GNAT project files38993
-Node: Use a Makefile43838
-Node: Compiler errors45489
-Node: Project files46306
-Node: Project file overview47358
-Node: Project file variables47900
-Node: Moving Through Ada Code51340
-Node: Identifier completion54372
-Node: Indentation56561
-Node: Statement skeletons60090
-Node: Aligning code61733
-Node: Automatic casing62678
-Node: Comment Handling64865
-Node: Key summary65384
-Node: Developer overview68114
-Node: Directory structure68428
-Node: ELPA70924
-Node: Savannah71560
-Node: GNU Free Documentation License72756
-
-End Tag Table
-
-
-Local Variables:
-coding: utf-8
-End:
diff --git a/ada-mode.texi b/ada-mode.texi
index cfd617e..f46bef1 100644
--- a/ada-mode.texi
+++ b/ada-mode.texi
@@ -1432,7 +1432,9 @@ references are accessed via @kbd{C-c `}.
 @node Project files, Moving Through Ada Code, Compiling Executing, Top
 @chapter Project files
 
-Ada mode uses wisi project files; @ref{wisi, Project files, Project files, 
wisi}.
+Ada mode uses wisi project files;
+@ifinfo
+@ref{Project files, Project files, Project files, wisi}.
 
 A wisi project file specifies what directories hold sources for your
 project, and allows you to customize the compilation commands and
@@ -1465,7 +1467,7 @@ The current project file is shown by the menu command
 
 To set the project file, use the menu command @key{Ada | Project Files | Find 
and
 select Project ...}, or one of the elisp functions described in
-@ref{wisi, Selecting Projects, Selecting Projects, wisi}.
+@ref{Selecting Projects, Selecting Projects, Selecting Projects, wisi}.
 
 The project file may also be a GNAT project file (with file extension
 is @code{.gpr}).



reply via email to

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