X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/2e6b4f66cf6bc14868f23a350063922de3b37d0c..cfedb0258384d1ff6352a83cc6102a7ad4a62422:/packages/ada-mode/ada-mode.info diff --git a/packages/ada-mode/ada-mode.info b/packages/ada-mode/ada-mode.info index 154e51bac..e2c10f95b 100644 --- a/packages/ada-mode/ada-mode.info +++ b/packages/ada-mode/ada-mode.info @@ -1,7 +1,7 @@ -This is ../ada-mode.info, produced by makeinfo version 4.13 from -../ada-mode.texi. +This is ada-mode.info, produced by makeinfo version 5.2 from +ada-mode.texi. -Copyright (C) 1999 - 2014 Free Software Foundation, Inc. +Copyright (C) 1999 - 2014 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -14,7 +14,6 @@ Copyright (C) 1999 - 2014 Free Software Foundation, Inc. (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 editing modes START-INFO-DIR-ENTRY * Ada mode: (ada-mode). Emacs mode for editing and navigating Ada code. @@ -23,7 +22,7 @@ END-INFO-DIR-ENTRY  File: ada-mode.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) - Copyright (C) 1999 - 2014 Free Software Foundation, Inc. +Copyright (C) 1999 - 2014 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -47,8 +46,8 @@ File: ada-mode.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) * Moving Through Ada Code:: Moving easily through Ada sources * Identifier completion:: Finishing words automatically * Indentation:: Indenting your code automatically as you type -* Statement skeletons:: -* Aligning code:: +* 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:: @@ -62,17 +61,17 @@ 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. +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. + 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://libre2.adacore.com/') and the GNAT default naming +compiler () and the GNAT default naming convention. You must customize a few things if you are using a different file @@ -83,7 +82,7 @@ Other compiler::. 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 +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 @@ -95,49 +94,92 @@ File: ada-mode.info, Node: Installation, Next: Customization, Prev: Overview, 2 Installation ************** -Ada mode is distributed in the Gnu ELPA package archive; it can be -installed via `M-x list-packages' (*note Packages: (emacs)Packages.). -You must first enable packages in your `~/.emacs', _after_ customizing -`Info-default-directory-list' (if you do that): +Ada mode requires Emacs 24.2 or greater; it also requires the Emacs lisp +sources (not just the compiled binaries). + + Ada mode is distributed in the Gnu ELPA package archive; it can be +installed via 'M-x list-packages' (*note (emacs)Packages::). You must +first enable packages in your '~/.emacs', _after_ customizing +'Info-default-directory-list' (if you do that): (package-initialize) Ada mode is also available as a separate distribution, from the Emacs Ada mode website -`http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html'. +. - For installing the separate distribution, see the `README' file in + For installing the separate distribution, see the 'README' file in the distribution. - To see what version of Ada mode you have installed, invoke `M-x + To see what version of Ada mode you have installed, invoke 'M-x ada-mode-version'. + You may also want to install additional utilities: + * Menu: -* gnatinspect:: +* Ada Reference Manual:: +* gpr_query:: +* Upgrading::  -File: ada-mode.info, Node: gnatinspect, Prev: Installation, Up: Installation +File: ada-mode.info, Node: Ada Reference Manual, Next: gpr_query, Prev: Installation, Up: Installation -2.1 gnatinspect -=============== +2.1 Ada Reference Manual +======================== + +The ELPA package ada-ref-man includes the Ada Reference Manual and +Annotated Ada Reference Manual in info format. + + +File: ada-mode.info, Node: gpr_query, Next: Upgrading, Prev: Ada Reference Manual, Up: Installation -Ada mode has experimental support for the new AdaCore cross reference -tool `gnatinspect', which supports Ada, C, C++, and any other language -for which gcc provices the `-fdump-xref'. +2.2 gpr_query +============= - `gnatinspect' is distributed as part of `gnatcoll'. Ada mode -requires the very latest version, in `gnatcoll 1.7w' distributed with -GNATPro 7.2 preview. +Ada mode has support for an external cross reference tool 'gpr_query', +which supports Ada, C, C++, and any other language for which AdaCore gcc +provices the '-fdump-xref' ('-fdump-xref' is an AdaCore extension). - To build `gnatinspect', assuming gnat-7.1.2 is installed in -`/usr/gnat-7.1.1': + 'gpr_query' requires the 'gnatcoll' library provided by AdaCore. Ada +mode requires the very latest version 'gnatcoll 1.7w' distributed with +GNAT GPL 2014. - tar xf ~/Downloads/gnatcoll-1.7w-src.tgz + To build 'gpr_query', assuming GNAT GPL 2014 is installed in +'/usr/gnat-gpl-2014', and '/usr/gnat-gpl-2014/bin' is in PATH: + + tar xf ~/Downloads/gnatcoll-1.7x-src.tgz cd gnatcoll-1.7w-src - ./configure --prefix=/usr/gnat-7.1.2 - make Gnatcoll_Build=Debug - sudo make Gnatcoll_Build=Debug install + ./configure --prefix=/usr/gnat-gpl-2014 + make + sudo make install + cd ~/.emacs.d/elpa/ada-mode-5.xx/build + make install-gpr_query + + To build an sqlite3 executable that is compatible with the database +created by 'gpr_query': + + cd gnatcoll-1.7w-src/src/sqlite/amalgamation/ + gcc -O2 -o sqlite3 shell.c sqlite3.c -ldl -lpthread + + +File: ada-mode.info, Node: Upgrading, Prev: gpr_query, Up: Installation + +2.3 Upgrading from previous versions +==================================== + +See the file NEWS for more details; here we summarize only important +user interface changes. + +'from 5.0.1' + Nothing to do. + +'from 4.01' + There are many user interface and API changes between 4.01 and + 5.0.1; we only document those that may be hard to diagnose here. + + 'prog-mode-hook' is no longer run by 'ada-mode'; 'ada-mode' is no + longer derived from 'prog-mode'. Use 'ada-mode-hook' instead.  File: ada-mode.info, Node: Customization, Next: Compiling Executing, Prev: Installation, Up: Top @@ -146,9 +188,9 @@ File: ada-mode.info, Node: Customization, Next: Compiling Executing, Prev: In ********************** Here we assume you are familiar with setting variables in Emacs, either -thru 'customize' or in elisp (in your `.emacs' file). For a basic -introduction to customize, elisp, and Emacs in general, see the -tutorial (`C-h t'). +thru 'customize' or in elisp (in your '.emacs' file). For a basic +introduction to customize, elisp, and Emacs in general, see the tutorial +('C-h t'). * Menu: @@ -164,21 +206,21 @@ File: ada-mode.info, Node: Non-standard file names, Next: Other compiler, Pre =========================== 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', +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. +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 +for specs and bodies. Note that you must also tell the compiler about these extensions; 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: + 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") @@ -191,18 +233,18 @@ and `UNIT_b.ada', respectively, you can add the following to your (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'. + 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'. +'.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. +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 @@ -210,15 +252,15 @@ File: ada-mode.info, Node: Other compiler, Next: Other cross-reference, Prev: 3.2 Other compiler ================== -The project variable `ada_compiler' (default elisp variable -`ada-compiler') is used to index several variables that point to the +The project variable 'ada_compiler' (default elisp variable +'ada-compiler') is used to index several variables that point to the 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 +that provides the interface to the compiler, and set 'ada-compiler' and the indirection variables. - See `ada-gnat-compile.el' for an example. + See 'ada-gnat-compile.el' for an example.  File: ada-mode.info, Node: Other cross-reference, Next: Other customization, Prev: Other compiler, Up: Customization @@ -226,17 +268,25 @@ File: ada-mode.info, Node: Other cross-reference, Next: Other customization, 3.3 Other cross-reference ========================= -The project variable `ada_xref' (default elisp variable -`ada-xref-tool') is used to index several variables that point to the +The project variable 'ada_xref' (default elisp variable 'ada-xref-tool') +is used to index several variables that point to the cross-reference-tool-specific functions for corresponding Ada mode operations. - To use a cross reference tool other than gnatxref, you must write + The default cross-reference tool is 'gnatxref', provided by the file +'ada-gnat-xref.el'. One other tool is supported: 'gpr_query'. To use +it, add the following to '~/.emacs': + + (require 'gpr-query) + + To use 'gpr_query', the Ada code 'gpr_query.adb' must be compiled; +see *note Installation::. + + To use a cross reference tool other than the above, you must write Emacs lisp code that provides the interface to the compiler, and set -`ada-xref-tool' and the indirection variables. This has already been -done for `gnatinspect'; set `ada-xref-tool' to `'gnat_inspect'. +'ada-xref-tool' and the indirection variables. - See `ada-gnat-xref.el' and `gnat-inspect.el' for examples. + See 'ada-gnat-xref.el' and 'gpr-query.el' for examples.  File: ada-mode.info, Node: Other customization, Prev: Other cross-reference, Up: Customization @@ -244,58 +294,54 @@ File: ada-mode.info, Node: Other customization, Prev: Other cross-reference, 3.4 Other customization ======================= -All user-settable Ada mode variables can be set via the menu `Ada | -Customize'. Click on the `Help' button there for help on using +All user-settable Ada mode variables can be set via the menu 'Ada | +Customize'. Click on the 'Help' button there for help on using customize. To modify a specific variable, you can directly call the function -`customize-variable'; just type `M-x customize-variable +'customize-variable'; just type 'M-x customize-variable VARIABLE-NAME '). Alternately, you can specify variable settings in the Emacs -configuration file, `~/.emacs'. This file is coded in Emacs lisp, and +configuration file, '~/.emacs'. This file is coded in Emacs lisp, and the syntax to set a variable is the following: (setq variable-name value) Some general Emacs settings that are useful for Ada files: -`delete-trailing-whitespace' +'delete-trailing-whitespace' Deletes space, tab at end of line and blank lines at end of buffer. - -`untabify' +'untabify' Deletes tab characters that have crept into the file. - -`indent-tabs-mode' +'indent-tabs-mode' Don't insert tab characters when indenting. - -`copyright-update' +'copyright-update' Updates the copyright date in the file header comment, to the current year. - -`electric-pair-mode' +'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, +'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 - `ada-skel-hippie-try' to that list. Note that `ada-expand', which - defaults to `ada-skel-expand', is bound to (*note + see 'hippie-expand-try-functions-list'. You can also add + 'ada-skel-hippie-try' to that list. Note that 'ada-expand', which + defaults to 'ada-skel-expand', is bound to (*note Statement skeletons::). - -`imenu' - -`which-func' - - 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 -which-func unless they are loaded first. +'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' + + 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) (electric-pair-mode 1) - (require 'imenu) - (require 'which-func) + (require 'imenu) ;; also enables speedbar (require 'ada-mode) (add-to-list 'hippie-expand-try-functions-list 'ada-skel-hippie-try) (define-key ada-mode-map "\C-e" 'hippie-expand) @@ -313,15 +359,15 @@ File: ada-mode.info, Node: Compiling Executing, Next: Project files, Prev: Cu 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). +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 will need an Emacs Ada mode project file -to tell Emacs about the project directory tree and other settings. + For complex projects, you will want to use 'make' or some other build +tool; in that case, you will need an Emacs Ada mode project file to tell +Emacs about the project directory tree and other settings. * Menu: @@ -339,73 +385,72 @@ Here are the commands for building an Ada project and running the main program. 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. +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' +'Check file' Compiles the current file in syntax check mode, by running - `check_cmd' defined in the current project file. This typically + '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. + This sets 'main' only if it has not been set yet. -`Compile file' - Compiles the current file, by running `comp_cmd' from the current +'Compile file' + Compiles the current file, by running 'comp_cmd' from the current project file. - This does not set `main'. + This does not set 'main'. -`Set main and Build' - Sets `main' to the current file, then executes the Build command. +'Set main and Build' + Sets 'main' to the current file, then executes the Build command. -`Show main' - Display `main' in the message buffer. +'Show main' + Display '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. +'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. + This sets 'main' only if it has not been set yet. -`Run' +'Run' Executes the main program in a shell, displayed in a separate Emacs - buffer. This runs `run_cmd' from the current project. The + 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. + 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. + It is important when using these commands to understand how 'main' is +used and changed. - Build runs 'gnatmake' 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. + Build runs 'gnatmake' 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 + 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 three ways to change `main': - - 1. Invoke `Ada | Set main and Build', which sets `main' to the - current file. + There are three ways to change 'main': - 2. Invoke `Ada | Project | Edit', edit `main' and `main', and click - `[save]' + 1. Invoke 'Ada | Set main and Build', which sets 'main' to the current + file. - 3. Invoke `Ada | Project | Load', and load a project file that - specifies `main' + 2. Invoke 'Ada | Project | Edit', edit 'main' and 'main', and click + '[save]' + 3. 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 @@ -441,9 +486,9 @@ File: ada-mode.info, Node: No project files, Next: Set compiler options, Prev This example uses no project files. - First, create a directory `Example_1', containing: + First, create a directory 'Example_1', containing: - `hello.adb': + 'hello.adb': with Ada.Text_IO; procedure Hello @@ -454,7 +499,7 @@ This example uses no project files. Yes, this is missing "use Ada.Text_IO;" - we want to demonstrate compiler error handling. - `hello_2.adb' has no errors: + 'hello_2.adb' has no errors: with Hello_Pkg; procedure Hello_2 @@ -462,13 +507,13 @@ compiler error handling. Hello_Pkg.Say_Hello; end Hello_2; - `hello_pkg.ads' has no errors: + 'hello_pkg.ads' has no errors: package Hello_Pkg is procedure Say_Hello; end Hello_Pkg; - `hello_pkg.adb': + 'hello_pkg.adb': with Ada.Text_IO; package Hello_Pkg is @@ -478,13 +523,13 @@ compiler error handling. 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 + Yes, this is missing the keyword 'body'; another compiler error +example. However, note that the indentation engine parser accepts this code with no errors, making it easier to indent slightly illegal Ada code. - In buffer `hello.adb', invoke the menu entry `Ada | Build | Check -syntax'. You should get a `*compilation*' buffer containing something + 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/" -*- @@ -499,25 +544,25 @@ like (the directory paths will be different): Compilation exited abnormally with code 4 at Fri Oct 18 04:23:54 - The lines with actual errors (starting with `hello.adb') are + 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 + 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. The compilation buffer scrolls to put the first -error on the top line, and point is put at the place of the error in -the `hello.adb' buffer. +error on the top 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: + 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: + 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 + 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/" -*- @@ -530,10 +575,10 @@ compilation buffer is displayed again, containing: 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'. + 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 + 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/" -*- @@ -546,46 +591,45 @@ displayed, containing 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': + 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 gnatmake finds the files needed by the main -program. However, it cannot find files in a different directory, unless -you use an Emacs Ada mode project file or a GNAT project file to -specify the other directories; *Note Set source search path::, *note -Use GNAT project file::. +program. However, it cannot find files in a different directory, unless +you use an Emacs Ada mode project file or a GNAT project file to specify +the other directories; *Note Set source search path::, *note Use GNAT +project file::. - Invoke `Ada | Build | Show main'; this displays `Ada mode main: + 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': + 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'. -gnatmake successfully builds `hello_2'. This demonstrates that Emacs -has remembered the main file, in the project variable `main', and used + Now, while still in 'hello_pkg.adb', invoke 'Ada | Build | Build'. +gnatmake 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'. + 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 | + 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. + There are two ways to change 'main': - 2. Invoke `Ada | Build | Set Project ...', and select a project file - that specifies `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 @@ -596,13 +640,13 @@ File: ada-mode.info, Node: Set compiler options, Next: Set source search path, This example illustrates using an Emacs Ada mode 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 + 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: + In directory 'Example_2', create these files: - `hello.adb': + 'hello.adb': with Ada.Text_IO; procedure Hello @@ -610,20 +654,20 @@ buffer)'. 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 + 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.adp': + 'hello.adp': comp_opt=-gnatyt 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.adp', uses it to set the compiler -options, and builds the project. You should get a `*compilation*' + In buffer 'hello.adb', invoke 'Ada | Build | Set main and Build'. +This finds the project file 'hello.adp', 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): @@ -637,12 +681,12 @@ different): gnatmake: "hello.adb" compilation error Compare this to the compiler output in *note No project files::; the -gnatmake option `-cargs' has been replaced by `-cargs -gnaty', and an -additional error is reported in `hello.adb' on line 4. This shows that -`hello.adp' is being used to set the compiler options. +gnatmake option '-cargs' has been replaced by '-cargs -gnaty', and an +additional error is reported in 'hello.adb' on line 4. This shows that +'hello.adp' is being used to set the compiler options. - Fixing the error, linking and running the code proceed as in *note -No project files::. + Fixing the error, linking and running the code proceed as in *note No +project files::.  File: ada-mode.info, Node: Set source search path, Next: Use GNAT project file, Prev: Set compiler options, Up: Compiling Examples @@ -653,15 +697,15 @@ File: ada-mode.info, Node: Set source search path, Next: Use GNAT project file In this example, we show how to deal with files in more than one directory, using an Emacs Ada mode project file to set the search path. - Create the directory `Example_3', containing: + Create the directory 'Example_3', containing: - `hello_pkg.ads': + 'hello_pkg.ads': package Hello_Pkg is procedure Say_Hello; end Hello_Pkg; - `hello_pkg.adb': + 'hello_pkg.adb': with Ada.Text_IO; package Hello_Pkg is @@ -671,13 +715,13 @@ directory, using an Emacs Ada mode project file to set the search path. end Say_Hello; end Hello_Pkg; - These are the same files from example 1; `hello_pkg.adb' has an -error on line 2. + These are the same files from example 1; 'hello_pkg.adb' has an error +on line 2. - In addition, create a directory `Example_3/Other', containing these + In addition, create a directory 'Example_3/Other', containing these files: - `Other/hello_3.adb': + 'Other/hello_3.adb': with Hello_Pkg; with Ada.Text_IO; use Ada.Text_IO; @@ -689,20 +733,20 @@ files: There are no errors in this file. - `Other/other.adp': + 'Other/other.adp': src_dir=.. Note that there must be no trailing spaces. - In buffer `hello_3.adb', invoke `Ada | Project files | Find and set -project...', and select `Example_3/Other/other.adp'. 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.adp', it would not be found by default. + In buffer 'hello_3.adb', invoke 'Ada | Project files | Find and set +project...', and select 'Example_3/Other/other.adp'. 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.adp', 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 + 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): cd c:/Examples/Example_3/Other/ @@ -712,16 +756,16 @@ directory paths will be different): hello_pkg.adb:2:08: keyword "body" expected here [see file name] gnatmake: "C:\Examples\Example_3\hello_pkg.adb" compilation error - Compare the `-cargs' option to the compiler output in *note Set -compiler options::; this shows that `other.adp' is being used to set -the compiler options. + Compare the '-cargs' option to the compiler output in *note Set +compiler options::; this shows that 'other.adp' is being used to set the +compiler options. - Move to the error with `C-x `'. Ada mode searches the list of -directories given by `src_dir' for the file mentioned in the compiler + Move to the error with 'C-x `'. Ada mode searches the list of +directories given by 'src_dir' for the file mentioned in the compiler error message. - Fixing the error, linking and running the code proceed as in *note -No project files::. + Fixing the error, linking and running the code proceed as in *note No +project files::.  File: ada-mode.info, Node: Use GNAT project file, Next: Use multiple GNAT project files, Prev: Set source search path, Up: Compiling Examples @@ -732,15 +776,15 @@ File: ada-mode.info, Node: Use GNAT project file, Next: Use multiple GNAT proj In this example, we show how to use a GNAT project file, with no Ada mode project file. - Create the directory `Example_4', containing: + Create the directory 'Example_4', containing: - `hello_pkg.ads': + 'hello_pkg.ads': package Hello_Pkg is procedure Say_Hello; end Hello_Pkg; - `hello_pkg.adb': + 'hello_pkg.adb': with Ada.Text_IO; package Hello_Pkg is @@ -750,13 +794,13 @@ mode project file. end Say_Hello; end Hello_Pkg; - These are the same files from example 1; `hello_pkg.adb' has an -error on line 2. + These are the same files from example 1; 'hello_pkg.adb' has an error +on line 2. - In addition, create a directory `Example_4/Gnat_Project', containing + In addition, create a directory 'Example_4/Gnat_Project', containing these files: - `Gnat_Project/hello_4.adb': + 'Gnat_Project/hello_4.adb': with Hello_Pkg; with Ada.Text_IO; use Ada.Text_IO; @@ -768,17 +812,17 @@ these files: There are no errors in this file. - `Gnat_Project/hello_4.gpr': + 'Gnat_Project/hello_4.gpr': project Hello_4 is for Source_Dirs use (".", ".."); end Hello_4; - In buffer `hello_4.adb', invoke `Ada | Project | Load...', and -select `Example_4/Gnat_Project/hello_4.gpr'. + In buffer 'hello_4.adb', invoke 'Ada | Project | Load...', and select +'Example_4/Gnat_Project/hello_4.gpr'. - Then, again in `hello_4.adb', invoke `Ada | Set main and Build'. You -should get a `*compilation*' buffer containing something like (the + Then, again in 'hello_4.adb', invoke 'Ada | 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.stephe-1/test/Example_4/Gnat_Project/" -*- @@ -791,12 +835,12 @@ directory paths will be different): Compilation exited abnormally with code 4 at Mon Oct 21 11:28:31 - Compare the `gcc' options to the compiler output in *note Set -compiler options::; this shows that `hello_4.gpr' is being used to set + Compare the 'gcc' options to the compiler output in *note Set +compiler options::; this shows that 'hello_4.gpr' is being used to set the compiler options. - Fixing the error, linking and running the code proceed as in *note -No project files::. + Fixing the error, linking and running the code proceed as in *note No +project files::.  File: ada-mode.info, Node: Use multiple GNAT project files, Next: Use a Makefile, Prev: Use GNAT project file, Up: Compiling Examples @@ -807,12 +851,12 @@ File: ada-mode.info, Node: Use multiple GNAT project files, Next: Use a Makefi In this example, we show how to use multiple GNAT project files, specifying the GNAT project search path in an Ada mode project file. - Create the directory `Example_4' as specified in *note Use GNAT + Create the directory 'Example_4' as specified in *note Use GNAT project file::. - Create the directory `Example_5', containing: + Create the directory 'Example_5', containing: - `hello_5.adb': + 'hello_5.adb': with Hello_Pkg; with Ada.Text_IO; use Ada.Text_IO; @@ -824,12 +868,12 @@ project file::. There are no errors in this file. - `hello_5.adp': + 'hello_5.adp': ada_project_path=../Example_4/Gnat_Project gpr_file=hello_5.gpr - `hello_5.gpr': + 'hello_5.gpr': with "hello_4"; project Hello_5 is @@ -839,12 +883,12 @@ project file::. end Compiler; end Hello_5; - In buffer `hello_5.adb', invoke `Ada | Project | Find and select -project...', and select `Example_5/hello_5.adp'. This would also be + In buffer 'hello_5.adb', invoke 'Ada | Project | Find and select +project...', and select 'Example_5/hello_5.adp'. This would also be found by default if no previous project file had been selected. - Then, again in `hello_5.adb', invoke `Ada | Build | Set main and -Build'. You should get a `*compilation*' buffer containing something + 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.stephe-1/test/Example_5/" -*- @@ -857,8 +901,8 @@ like (the directory paths will be different): Compilation exited abnormally with code 4 at Mon Oct 21 11:32:05 - 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 + 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.  @@ -870,12 +914,12 @@ File: ada-mode.info, Node: Use a Makefile, Prev: Use multiple GNAT project fil 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 GNAT project file::, *note Use multiple GNAT project files::. + Create the directories 'Example_4, Example_5' as specified in *note +Use GNAT project file::, *note Use multiple GNAT project files::. - In `Example_5', add the file: + In 'Example_5', add the file: - `Makefile': + 'Makefile': # build and run hello_5 project @@ -899,13 +943,13 @@ Use GNAT project file::, *note Use multiple GNAT project files::. # eval:(ada-select-prj-file "hello_5.adp") # End: - Close and re-open `Makefile'; the `Local Variables' section sets the -project file to `hello_5.adp' when the `Makefile' is opened. You can -also use to execute the select line after the `Makefile' is -opened, to change the project file back to `hello_5.adp'. + Close and re-open 'Makefile'; the 'Local Variables' section sets the +project file to 'hello_5.adp' when the 'Makefile' is opened. You can +also use to execute the select line after the 'Makefile' is +opened, to change the project file back to 'hello_5.adp'. - In `Makefile', invoke `Tools | Compile...', and accept the default -make command. This runs the `all' target, which builds `hello_5' and + In 'Makefile', invoke 'Tools | Compile...', and accept the default +make command. This runs the 'all' target, which builds 'hello_5' and runs it.  @@ -914,20 +958,20 @@ File: ada-mode.info, Node: Compiler errors, Prev: Compiling Examples, Up: Com 4.3 Compiler errors =================== -The `Check syntax' and `Build' commands, or running `make', place -compilation errors in a separate buffer named `*compilation*'. +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 -. Emacs will then display the relevant source file and put point +. 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 + 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 `'. + 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 @@ -939,14 +983,14 @@ An Emacs Ada mode 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 Ada mode 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'. + The default file extension for Ada mode 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 Ada mode project files `*.adp' 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 + Note that Ada mode project files '*.adp' 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 an Emacs Ada mode project file. @@ -964,7 +1008,7 @@ File: ada-mode.info, Node: Project file overview, Next: Project file variables 5.1 Project file overview ========================= -Project files have a simple syntax; they may be edited directly. Each +Project files have a simple syntax; they may be edited directly. Each line specifies a project variable name and its value, separated by "=" (spaces not allowed): src_dir=/Projects/my_project/src_1 @@ -972,18 +1016,18 @@ line specifies a project variable name and its value, separated by "=" Any line that does not have an "=" is a comment. - Some variables (like `src_dir') are lists; multiple occurrences are + Some variables (like 'src_dir') are lists; multiple occurrences are concatenated. There must be no space between the variable name and "=", and no trailing spaces. The current project file is given by the lisp variable -`ada-prj-default-project-file', and shown by the menu command . - To set the project file, use the menu command `Ada | Set Project -...', or the elisp functions `ada-parse-prj-file, ada-select-prj-file'. + To set the project file, use the menu command 'Ada | Set Project +...', or the elisp functions 'ada-parse-prj-file, ada-select-prj-file'. The latter can be added to a Makefile: # Local Variables: @@ -992,12 +1036,12 @@ The latter can be added to a Makefile: # End: You specify either a GNAT project file or an Emacs Ada mode project -file; if the file extension is `.gpr', the file is treated as a GNAT -project file. Extensions given by `ada-prj-file-extensions' (default -`.adp, .prj') are treated as an Emacs Ada mode project file. +file; if the file extension is '.gpr', the file is treated as a GNAT +project file. Extensions given by 'ada-prj-file-extensions' (default +'.adp, .prj') are treated as an Emacs Ada mode project file. After a project file is parsed, you can make it current again with -just `ada-select-prj-file', or by selecting it from the menu. +just 'ada-select-prj-file', or by selecting it from the menu.  File: ada-mode.info, Node: Project file variables, Prev: Project file overview, Up: Project files @@ -1009,88 +1053,89 @@ To set a project variable that is a list, specify each element of the list on a separate line in the project file. Process environment variables can be referenced using the normal -`$var' syntax. +'$var' syntax. Most 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 +project variable. Elisp variables corresponding to project variables that are lists are elisp lists. In general, project variables are evaluated when referenced in Emacs -Ada mode commands. Relative file paths are expanded relative to the +Ada mode commands. Relative file paths are expanded relative to the directory containing the project file. Ada mode defines some project variables; others are defined by the compiler. - Here is the list of variables valid for all compilers. In the default -values, the current directory `"."' is the directory containing the -project file. + Here is the list of variables valid for all compilers. 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. It must occur in the project file +'ada_compiler' [default: 'ada-compiler, gnat'] + Ada compiler for this project. It must occur in the project file before any compiler-specific project variable. -`auto_case' [default: `ada-auto-case, t'] +'auto_case' [default: 'ada-auto-case, t'] Non-nil means automatically change case of preceding word while typing. -`case_keyword' [default: `ada-case-keyword, downcase-word'] - Function to call to adjust the case of an Ada keywords. +'case_identifier' [default: 'ada-case-identifier, ada-mixed-case'] + Function to call to adjust the case of an Ada identifier. + +'case_keyword' [default: 'ada-case-keyword, downcase-word'] + Function to call to adjust the case of an Ada keyword. -`case_strict' [default: `ada-case-strict, t'] - If non-nil, force Mixed_Case for identifiers. Otherwise, allow - UPPERCASE for identifiers. +'case_strict' [default: 'ada-case-strict, t'] + If non-nil, 'ada-mixed-case' forces 'Mixed_Case' for identifiers. + Otherwise, 'ada-mixed-case' allows 'UPPERCASE' for identifiers. -`casing' [default: `ada-case-exception-file, nil'] - List of files containing casing exceptions. *Note Automatic +'casing' [default: 'ada-case-exception-file, nil'] + List of files containing casing exceptions. *Note Automatic casing::. -`el_file' [default: ] +'el_file' [default: ] The value is a file name, which is loaded as an elisp file when the - project file is parsed or selected. This allows setting Ada mode + project file is parsed or selected. This allows setting Ada mode indentation variables, and any arbitrary elisp code used to customize the project. -`path_sep' [default: `path-separator'] +'path_sep' [default: 'path-separator'] Separator character used in compiler search paths. -`src_dir' [default: `"."'] +'src_dir' [default: '"."'] A list of directories to search for source files. -`xref_tool' [default: `ada-xref-tool, gnat-xref'] +'xref_tool' [default: 'ada-xref-tool, gnat-xref'] Cross reference tool for this project. - The following variables are valid with the GNAT compiler: -`ada_project_path' [default: `""'] +'ada_project_path' [default: '""'] A list of directories to search for GNAT project files. - If set, the `GPR_PROJECT_PATH' process environment variable is set - to this value in the child process that runs GNAT tools. If not - set, `GPR_PROJECT_PATH' in the child process is inherited from the + If set, the 'GPR_PROJECT_PATH' process environment variable is set + to this value in the child process that runs GNAT tools. If not + set, 'GPR_PROJECT_PATH' in the child process is inherited from the Emacs process. - If you have the `GPR_PROJECT_PATH' or `ADA_PROJECT_PATH' + If you have the 'GPR_PROJECT_PATH' or 'ADA_PROJECT_PATH' environment variable set in the Emacs process correctly for all of your projects, you do not need to set this project variable. - The project search path can also be set in GNAT aggregate - projects. However, the gnat tools do not make that path available - to Emacs, so you must duplicate it in an Emacs Ada project file. + The project search path can also be set in GNAT aggregate projects. + However, the gnat tools do not make that path available to Emacs, + so you must duplicate it in an Emacs Ada project file. -`gpr_file' [default: `""'] +'gpr_file' [default: '""'] The GNAT project file. If set, the source and project directories specified in the GNAT - project file are appended to `src_dir' and `ada_project_path'. + project file are appended to 'src_dir' and 'ada_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: `""'] - Same as `ada_project_path'. - +'gpr_project_path' [default: '""'] + Same as 'ada_project_path'.  File: ada-mode.info, Node: Moving Through Ada Code, Next: Identifier completion, Prev: Project files, Up: Top @@ -1098,33 +1143,33 @@ File: ada-mode.info, Node: Moving Through Ada Code, Next: Identifier completio 6 Moving Through Ada Code ************************* -There are several commands to navigate through Ada code. All these +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' +'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). -`C-c M-d' +'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' +'C-c C-n' Move to the next keyword in the current statement. - For example, if point is on `if', move to `then'. + For example, if point is on 'if', move to 'then'. -`C-c C-p' +'C-c C-p' Move to the previous keyword in the current statement. - For example, if point is on `then', move to `if'. + For example, if point is on 'then', move to 'if'. -`C-c C-o' - Switch between corresponding spec and body. There are several +'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 @@ -1132,9 +1177,9 @@ compiler, but others can be added (*note Other cross-reference::). 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. + 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. @@ -1143,55 +1188,53 @@ compiler, but others can be added (*note Other cross-reference::). point on the corresponding body or declaration in the other file. - * If point is on a `with' clause, position point on the + * 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 +'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' +'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 + point. Use 'C-x `' ('next-error') to visit each reference (as for compilation errors). -`C-c M-x' +'C-c M-x' Show the declaration that the declaration at point overrides. -`C-u SPACE' +'C-u SPACE' Jump back to the previous location. -`Ada | Misc | Refresh cross reference cache' +'Ada | Misc | Refresh cross reference cache' Cross reference information is loaded from the compiler output when - the first cross reference command is issued. If the code is + the first cross reference command is issued. 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 a general way of completing identifiers: `M-/' (bound to -`dabbrev-expand'). This is an easy way to type faster: you just have to +Emacs provides a general way of completing identifiers: 'M-/' (bound to +'dabbrev-expand'). 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. - `M-/' works by parsing all open Ada files for possible completions. + 'M-/' works by parsing all open Ada files for possible completions. - 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: + 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'. + 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. @@ -1202,84 +1245,83 @@ File: ada-mode.info, Node: Indentation, Next: Statement skeletons, Prev: Iden 8 Indentation ************* -Ada mode comes with a full set of rules for automatic indentation. You +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) +'ada-indent' (default value: 3) Number of columns for default indentation. -`ada-indent-broken' (default value: 2) +'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) +'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-label' (default value: -3) +'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-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 +'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 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 + 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'. +'ada-indent-return' (default value: 0) + Indentation for 'return' relative to the matching 'function'. - If the function has no parameters, `ada-indent-broken' is used - relative to line containing `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'. -`ada-indent-use' (default value: ada-indent-broken) - Indentation for the lines in a `use' statement. + If the function has no parameters, 'ada-indent-broken' is used + relative to line containing 'function'. -`ada-indent-when' (default value: 3) - Indentation for `when' relative to `exception', `case', or `or' in - `select'. +'ada-indent-use' (default value: ada-indent-broken) + Indentation for the lines in a 'use' statement. -`ada-indent-with' (default value: ada-indent-broken) - Indentation for the lines in a `with' context clause. +'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 file invoked by an `el_file' Emacs Ada mode +overridden in an elisp file invoked by an 'el_file' Emacs Ada mode project file statement, or in a file local variable section. The following keys indent portions of the text: -`RET' + +'RET' Insert and indent a new line. -`TAB' +'TAB' Indent the current line, or the current region. -`C-c TAB' +'C-c TAB' Indent 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. If the code is +syntactic role for keywords and other words in the code. If the code is accepted by the parser, the indentation is done according to the rules in the indentation engine. If the code is not accepted (because it is partially complete during editing), the indentation engine falls back to the trivial algorithm of -indenting each new line the same as the previous line. Once enough new +indenting each new line the same as the previous line. Once enough new text has been entered to make the code acceptable to the parser, the statement or declaration is properly indented. @@ -1289,13 +1331,13 @@ statement or declaration is properly indented. B; end if; - when you type `RET B', `B' is indented to the same column as `if', -because the parser does not find `end if;'. Then when you type the -final `;' followed by , all three lines are indented, putting `B' + when you type 'RET B', 'B' is indented to the same column as 'if', +because the parser does not find 'end if;'. Then when you type the +final ';' followed by , all three lines are indented, putting 'B' where it belongs. To be more user friendly, the parser accepts a superset of the Ada -grammer. For example, the parser accepts this code for an `if' +grammer. For example, the parser accepts this code for an 'if' statement: if then @@ -1308,7 +1350,7 @@ omitted. Statement skeletons::. In rare cases, the parser gets confused; it can be reset by invoking -menu . Please report such cases as a bug. +menu . Please report such cases as a bug.  File: ada-mode.info, Node: Statement skeletons, Next: Aligning code, Prev: Indentation, Up: Top @@ -1316,8 +1358,8 @@ File: ada-mode.info, Node: Statement skeletons, Next: Aligning code, Prev: In 9 Statement skeletons ********************* -`C-c C-e' expands the previous one or two words into a statment -skeleton. For example, `i f C-c C-e' expands to: +'C-c C-e' expands the previous one or two words into a statment +skeleton. For example, 'i f C-c C-e' expands to: if then elsif then @@ -1329,16 +1371,18 @@ this is a convenient way to insert statements with correct indentation. 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: +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 + Named blocks work similarly: 'declare A_Block C-c C-e' expands (without prompting) to: A_Block: @@ -1347,8 +1391,18 @@ following code is inserted: exception end A_Block; - Note that the order of the keyword `declare' and the name `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 @@ -1357,7 +1411,7 @@ File: ada-mode.info, Node: Aligning code, Next: Automatic casing, Prev: State **************** Aligning code adds space in each line so that similar parts of -successive lines are aligned vertically. For example, a sequence of +successive lines are aligned vertically. For example, a sequence of declarations: A : Integer; @@ -1370,7 +1424,7 @@ declarations: Another : Float := 1.0; More : Integer := 2; - Alignment is invoked by `C-c C-a', which aligns the sequence of + 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: @@ -1394,37 +1448,37 @@ File: ada-mode.info, Node: Automatic casing, Next: Comment Handling, Prev: Al ******************* 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. +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' +'ada-case-keyword' Value must be one of: - `downcase-word' + 'downcase-word' Ada keywords will be lowercase. - `upcase-word' + 'upcase-word' Ada keywords will be uppercase. -`ada-case-strict' - If non-nil, all identifiers are forced to `Mixed_Case'; first +'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 + 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 -variable `ada-case-exception-file'. Each line in a case exception file -specifies the casing of one word or word fragment. If an exception is +variable 'ada-case-exception-file'. Each line in a case exception file +specifies the casing of one word or word fragment. If an exception is defined in multiple files, the first occurrence is used. - If the word starts with an asterisk (`*'), it defines the casing of -a word fragemnt (or "substring"); part of a word between two -underscores or word boundary. + If the word starts with an asterisk ('*'), it defines the casing of a +word fragment (or "substring"); part of a word between two underscores +or word boundary. For example: @@ -1432,55 +1486,53 @@ underscores or word boundary. *IO GNAT - The word fragment `*IO' applies to any word containing "_io"; -`Text_IO', `Hardware_IO', etc. + The word fragment '*IO' applies to any word containing "_io"; +'Text_IO', 'Hardware_IO', etc. There are two ways to add new items to this 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 +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. If you set up the variable `ada-case-exception-file' as a -list of files, each of them will be parsed and used in your emacs -session. When you create a new exception, you are prompted for the file -to save it in. + 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. +If you set up the variable 'ada-case-exception-file' as a list of files, +each of them will be parsed and used in your emacs session. 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 comment. Normally, comments are not affected by case +'C-c C-w' + Adjust case of the word at point. With prefix arg, adjust case + even if in comment. Normally, comments are not affected by case adjust. -`Ada | Casing | Adjust case region' +'Ada | Casing | Adjust case region' Adjust case in the active region. -`Ada | Casing | Adjust case buffer' +'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 +By default, comment lines get indented like Ada code. There are a few additional functions to handle comments: -`M-;' +'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'. + by 'comment-column'. -`M-q' +'M-q' Fill the current comment paragraph.  @@ -1489,103 +1541,102 @@ File: ada-mode.info, Node: Key summary, Next: Developer overview, Prev: Comme 13 Key summary ************** -This table summarizes the keys described in this manual. Other keys are -bound by Ada mode; see for a complete list. The Ada menu also +This table summarizes the keys described in this manual. Other keys are +bound by Ada mode; see for a complete list. The Ada menu also displays keys bound to menu operations. -`M-/' +'M-/' *Note Identifier completion::. Complete the word before point; repeat to cycle thru possible completions. -`M-;' +'M-;' *Note Comment Handling::. If the region is active, comment or uncomment it. -`M-q' +'M-q' *Note Comment Handling::. Fill the current comment paragraph. -`RET' +'RET' *Note Indentation::. Insert and indent a new line. -`TAB' +'TAB' *Note Indentation::. Indent the current line, or the current region. -`C-c TAB' +'C-c TAB' *Note Indentation::. Indent the current statement or declaration. -`C-c `' +'C-c `' *Note Compiler errors::. Move to the location of the secondary reference in the current compilation error. -`C-c C-a' +'C-c C-a' *Note Aligning code::. Align code. -`C-c C-c' +'C-c C-c' *Note Compile commands::. Build the current main program. -`C-c C-d' +'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' +'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-e' + *Note Statement skeletons::. Expand previous one or two words into + a statement or declaration skeleton. -`C-c C-c' +'C-c C-c' *Note Compile commands::. Build the current file. -`C-c C-n' +'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-o' + *Note Moving Through Ada Code::. Switch between corresponding spec + and body, or find other spec. -`C-c C-p' +'C-c C-p' *Note Moving Through Ada Code::. Move to the previous keyword in the current statement. -`C-c C-r' +'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 +'C-c C-w' + *Note Automatic casing::. Adjust case of the word at point. With prefix arg, adjust case even if in comment. -`C-c C-x' +'C-c C-x' *Note Moving Through Ada Code::. Show all declarations that override the primitive procedure at point. -`C-c C-y' +'C-c C-y' *Note Automatic casing::. Create case exception. -`C-c `' +'C-c `' *Note Compiler errors::. Move to the location of the next secondary compilation error. -`C-x `' +'C-x `' *Note Compiler errors::. Move to the location of the next compilation error or show result. -`M-q' +'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. +If you'd like to contribute to Ada mode, or just understand the sources, +here's an overview. * Menu: @@ -1600,99 +1651,97 @@ File: ada-mode.info, Node: Directory structure, Next: Package organization, P 14.1 Directory structure ======================== -`org.emacs.ada-mode' +'org.emacs.ada-mode' Main source. File extensions: - `*.el' + '*.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. + '*.elc' + Byte-compiled elisp files, not in the distribution. Generated + by the Makefile target 'byte-compile', or by the Emacs package + installer. - Compiling the parse tables (`*-wy.el') speeds up loading them - significantly. Compiling other files speeds up parsing, but + Compiling the parse tables ('*-wy.el') speeds up loading them + significantly. Compiling other files speeds up parsing, but not noticeably. One reason to byte-compile files is to find errors; the byte compiler reports undefined variables, wrong argument counts, etc. - `*-wy.el' - Parse tables, generated from the corresponding grammar `*.wy' - by the OpenToken tool `wisi-generate.exe'. These are in the + '*-wy.el' + Parse tables, generated from the corresponding grammar '*.wy' + by the OpenToken tool 'wisi-generate.exe'. These are in the tarball distribution and the monotone repository so users and Elisp developers don't have to install OpenToken. - `*-wy.output' - Diagnostic output from `wisi-generate.exe', useful for tracing - parses while debugging a grammar issue. Not in the tarball + '*-wy.output' + Diagnostic output from 'wisi-generate.exe', useful for tracing + parses while debugging a grammar issue. Not in the tarball distribution or the monotone repository. - `*.wy' - Grammar files, specifying the language to be parsed. The + '*.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 OpenToken documentation for more info. - The wisi parser (in `wisi-parse.el') is a generalized LALR - parser, so it tolerates some conflicts and ambiguities. This - makes the grammars easier to write, and in particular makes - it possible to let the Ada grammar closely match Annex P of - the Ada Language Reference Manual (the syntax summary). + The wisi parser (in 'wisi-parse.el') is a generalized LALR + parser, so it tolerates some conflicts and ambiguities. This + makes the grammars easier to write, and in particular makes it + possible to let the Ada grammar closely match Annex P of the + Ada Language Reference Manual (the syntax summary). - `*.texi' + '*.texi' Texinfo source for the user guides. - `*.html' + '*.html' Generated user guide in HTML format. - `*.info' + '*.info' Generated user guide in Emacs info format. - -`build' +'build' Makefile for building the user guides, publishing to the web page or Gnu ELPA. Test drivers. -`build/wisi' +'build/wisi' Makefile for building and testing with the wisi-based parser. - Separate from `build', because there used to be a SMIE-based + Separate from 'build', because there used to be a SMIE-based parser, and there might be another parser someday. The emacs used to byte-compile and run tests is given by the 'make' - variable EMACS_EXE, which defaults to 'emacs'; it can be - overridden on the make command line or by an environment variable. + variable EMACS_EXE, which defaults to 'emacs'; it can be overridden + on the make command line or by an environment variable. -`test' +'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 `build/*.el'. + The tests are driven by the elisp code in 'build/*.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 + 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. + '--EMACSCMD:'; they are elisp forms that invoke Ada mode functions. + This is used to test navigation features and other parser effects. -`test/Example_*' +'test/Example_*' Starting files for examples in user guide. -`test/gpr' +'test/gpr' Tests for gpr mode. -`test/subdir' +'test/subdir' More tests; allows testing path search features. -`test/wisi' +'test/wisi' Tests of the elisp wisi grammar compiler and parser.  @@ -1714,73 +1763,72 @@ File: ada-mode.info, Node: Ada mode, Next: gpr mode, Prev: Package organizati 14.2.1 Ada mode --------------- -Ada mode consists of all files with `ada-' prefix in the file name. +Ada mode consists of all files with 'ada-' prefix in the file name. -`ada-mode.el' +'ada-mode.el' The main file, implementing the keymap, menu, and top level functionality. It allows for different backend implementations for compiling, - cross-referencing, and indenting. The functions for each of these + cross-referencing, and indenting. The functions for each of these backends dispatch thru global variables that are set by Emacs Ada - mode project files. They default to the GNAT compiler, the + mode project files. They default to the GNAT compiler, the gnatxref cross reference tool, and the ada-wisi indentation engine. -`ada-build.el' +'ada-build.el' Provides functions for compiling Ada files without a Makefile (or similar tool). -`ada-fix-error.el' +'ada-fix-error.el' Provides an interface to utilities for automatically fixing errors - reported by the compiler. It dispatches to a compiler-specific + reported by the compiler. It dispatches to a compiler-specific backend. -`ada-gnat-compile.el' +'ada-gnat-compile.el' Implements the Ada mode compiler functions for the GNAT compiler. -`ada-gnat-xref.el' +'ada-gnat-xref.el' Implements the Ada mode cross reference functions for the GNAT compiler. -`ada-grammar.*' +'ada-grammar.*' The Ada language grammar, and files generated from it by the - OpenToken tool `wisi-generate.exe'. + OpenToken tool 'wisi-generate.exe'. -`ada-indent-user-options.el' +'ada-indent-user-options.el' All user-settable options for the Ada indentation engine. -`ada-mode-compat-23.4.el' +'ada-mode-compat-23.4.el' Defines functions used by Ada mode that are not in Emacs 23.4. - Emacs Ada mode is written for Emacs 24.3. Emacs version 23.4 is - partially supported. Earlier versions of Emacs are not supported. + Emacs Ada mode is written for Emacs 24.3. Emacs version 23.4 is + partially supported. Earlier versions of Emacs are not supported. -`ada-mode.texi' +'ada-mode.texi' The Ada mode user guide source and compiled versions. -`ada-skel.el' +'ada-skel.el' Skeletons for expansion of Ada syntax (*note Statement - skeletons::). Extends the Emacs skeleton functions with "tokens", + skeletons::). Extends the Emacs skeleton functions with "tokens", inspired by the lamented Else package (which was inspired by DEC LSE). -`ada-wisi-opentoken.el' +'ada-wisi-opentoken.el' Indentation functions useful when editing OpenToken code; an example of extending the Ada mode indentation engine for special circumstances. -`ada-wisi.el' +'ada-wisi.el' Implements the Ada mode indentation functions for the wisi indentation engine backend. -  File: ada-mode.info, Node: gpr mode, Next: GNAT core, Prev: Ada mode, Up: Package organization 14.2.2 gpr mode --------------- -gpr mode consists of all files with `gpr-' prefix in the file name. The +gpr mode consists of all files with 'gpr-' prefix in the file name. The functions in each file are similar to the similarly-named Ada mode files. @@ -1790,27 +1838,24 @@ File: ada-mode.info, Node: GNAT core, Next: Wisi, Prev: gpr mode, Up: Packag 14.2.3 GNAT core ---------------- -`gnat-core.el' +'gnat-core.el' GNAT is actually a multi-language tool; it builds on top of the multi-language gcc. - `gnat-core.el' is a start at a language-agnostic interface to the - GNAT tools. It was first factored out from `ada-gnat.el' and - `ada-mode.el' to support the multi-language `gnat-inspect.el', - which is still experimental. + 'gnat-core.el' is a start at a language-agnostic interface to the + GNAT tools. It was first factored out from 'ada-gnat.el' and + 'ada-mode.el' to support the multi-language 'gpr_query.el'. - More code currently in `ada-mode.el' could be migrated to - `gnat-core.el', in particular the project file support. + More code currently in 'ada-mode.el' could be migrated to + 'gnat-core.el', in particular the project file support. -`gnat-inspect.el' - Provides an experimental interface to the experimental - multi-language cross-reference tool `gnatinspect' from AdaCore, - which will supercede `gnatxref'. +'gpr-query.el' + Provides an interface to the external multi-language + cross-reference tool 'gpr_query'. Implements the Ada mode cross-reference functions for the - `gnatinspect' backend, and a minor mode providing similar - functions for C++. - + 'gpr_query' backend, and a minor mode providing similar functions + for C++.  File: ada-mode.info, Node: Wisi, Prev: GNAT core, Up: Package organization @@ -1818,25 +1863,25 @@ File: ada-mode.info, Node: Wisi, Prev: GNAT core, Up: Package organization 14.2.4 Wisi ----------- -The "wisi" parser. "wisi" used to be an acronym, but now it's just a +The "wisi" parser. "wisi" used to be an acronym, but now it's just a name. -`wisi.el' +'wisi.el' Implements the lexer, the main parser driver, parser actions that cache parser information in text properties, utilities for indenting and navigating using the cached information, and general setup. -`wisi-compile.el' - Implements the parse table compiler. `wisi-generate.exe' processes - the grammar source `*.wy' into an elisp source representation of a - parse table `*-wy.el'. That is compiled into an internal structure - containing the state transitions and executable actions. The +'wisi-compile.el' + Implements the parse table compiler. 'wisi-generate.exe' processes + the grammar source '*.wy' into an elisp source representation of a + parse table '*-wy.el'. That is compiled into an internal structure + containing the state transitions and executable actions. The actions can be any elisp form; the intent is that they be calls to - the action functions provided by `wisi.el'. `wisi-compile.el' uses - some features provided by `semantic'. + the action functions provided by 'wisi.el'. 'wisi-compile.el' uses + some features provided by 'semantic'. -`wisi-parse.el' +'wisi-parse.el' Implements the generalized LALR parser.  @@ -1845,15 +1890,15 @@ File: ada-mode.info, Node: OpenToken, Next: ELPA, Prev: Package organization, 14.3 OpenToken ============== -Ada mode uses the OpenToken tool `wisi-generate.exe' to process the -grammar sources into elisp parse tables. See -`http://stephe-leake.org/emacs/ada-mode/emacs-ada-mode.html' for -current information about which version of OpenToken is required, and -how to get it. +Ada mode uses the OpenToken tool 'wisi-generate.exe' to process the +grammar sources into elisp parse tables. See + for current +information about which version of OpenToken is required, and how to get +it. - The Makefile variable `WISI_OPENTOKEN' gives the path to the build + The Makefile variable 'WISI_OPENTOKEN' gives the path to the build directory for OpenToken; you probably need to override it with an -external environment variable or on the `make' command line. +external environment variable or on the 'make' command line.  File: ada-mode.info, Node: ELPA, Prev: OpenToken, Up: Developer overview @@ -1861,8 +1906,8 @@ File: ada-mode.info, Node: ELPA, Prev: OpenToken, Up: Developer overview 14.4 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 +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 @@ -1873,7 +1918,7 @@ Gnu ELPA via git: cd /Projects git clone @git.savannah.gnu.org/emacs/elpa.git - `build/Makefile' contains targets for copying Ada mode source to the + 'build/Makefile' contains targets for copying Ada mode source to the elpa workspace, and for building the elpa archive there.  @@ -1885,7 +1930,7 @@ 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. @@ -1910,21 +1955,21 @@ Appendix A GNU Free Documentation License 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 + 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 + 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. + 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 @@ -1942,12 +1987,12 @@ Appendix A GNU Free Documentation License 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. + 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 @@ -1958,27 +2003,27 @@ Appendix A GNU Free Documentation License 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". + 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. + 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 @@ -2016,8 +2061,8 @@ Appendix A GNU Free Documentation License 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. + 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. @@ -2031,12 +2076,11 @@ Appendix A GNU Free Documentation License 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. + 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 @@ -2044,40 +2088,39 @@ Appendix A GNU Free Documentation License 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. + 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. + 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: + 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. + 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 @@ -2107,31 +2150,30 @@ Appendix A GNU Free Documentation 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. + 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. + 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 + 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. + 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. @@ -2144,11 +2186,11 @@ Appendix A GNU Free Documentation License 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. + 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 @@ -2157,15 +2199,15 @@ Appendix A GNU Free Documentation License 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. + 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 @@ -2175,8 +2217,8 @@ Appendix A GNU Free Documentation License 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, + 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. @@ -2203,20 +2245,20 @@ Appendix A GNU Free Documentation License 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. + 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. + 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 + 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 @@ -2261,8 +2303,8 @@ Appendix A GNU Free Documentation 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 + 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. @@ -2274,33 +2316,33 @@ Appendix A GNU Free Documentation License 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. + 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 + 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 + 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 + 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also @@ -2330,7 +2372,6 @@ Appendix A GNU Free Documentation License 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 ==================================================== @@ -2347,7 +2388,7 @@ notices just after the title page: Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover -Texts, replace the "with...Texts." line with this: +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 @@ -2358,9 +2399,9 @@ 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. +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.  File: ada-mode.info, Node: Index, Prev: GNU Free Documentation License, Up: Top @@ -2371,7 +2412,7 @@ Index [index] * Menu: -* ada-case-adjust-at-point: Automatic casing. (line 65) +* ada-case-adjust-at-point: Automatic casing. (line 64) * ada-case-create-exception: Automatic casing. (line 48) * ada-find-other-file: Moving Through Ada Code. (line 32) @@ -2384,57 +2425,59 @@ Index * ada-prev-statement-keyword: Moving Through Ada Code. (line 27) * ada-show-overridden: Moving Through Ada Code. - (line 66) + (line 65) * ada-show-overriding: Moving Through Ada Code. - (line 61) + (line 60) * ada-show-references: Moving Through Ada Code. - (line 56) + (line 55) * comment-dwim: Comment Handling. (line 10) * fill-paragraph: Comment Handling. (line 18)  Tag Table: -Node: Top954 -Node: Overview2521 -Node: Installation3731 -Node: gnatinspect4494 -Node: Customization5223 -Node: Non-standard file names5704 -Node: Other compiler7543 -Node: Other cross-reference8122 -Node: Other customization8840 -Node: Compiling Executing11313 -Node: Compile commands12047 -Node: Compiling Examples14779 -Node: No project files15611 -Node: Set compiler options20966 -Node: Set source search path22924 -Node: Use GNAT project file25373 -Node: Use multiple GNAT project files28146 -Node: Use a Makefile30863 -Node: Compiler errors32177 -Node: Project files32991 -Node: Project file overview34015 -Node: Project file variables35541 -Node: Moving Through Ada Code39048 -Node: Identifier completion41744 -Node: Indentation42705 -Node: Statement skeletons46838 -Node: Aligning code48044 -Node: Automatic casing48988 -Node: Comment Handling51682 -Node: Key summary52200 -Node: Developer overview54825 -Node: Directory structure55165 -Node: Package organization58642 -Node: Ada mode58877 -Node: gpr mode61068 -Node: GNAT core61350 -Node: Wisi62296 -Node: OpenToken63258 -Node: ELPA63859 -Node: GNU Free Documentation License64467 -Node: Index89647 +Node: Top945 +Node: Overview2576 +Node: Installation3787 +Node: Ada Reference Manual4753 +Node: gpr_query5029 +Node: Upgrading6094 +Node: Customization6666 +Node: Non-standard file names7148 +Node: Other compiler8989 +Node: Other cross-reference9568 +Node: Other customization10503 +Node: Compiling Executing13140 +Node: Compile commands13875 +Node: Compiling Examples16613 +Node: No project files17445 +Node: Set compiler options22811 +Node: Set source search path24773 +Node: Use GNAT project file27226 +Node: Use multiple GNAT project files30000 +Node: Use a Makefile32720 +Node: Compiler errors34035 +Node: Project files34852 +Node: Project file overview35879 +Node: Project file variables37407 +Node: Moving Through Ada Code41037 +Node: Identifier completion43736 +Node: Indentation44698 +Node: Statement skeletons48750 +Node: Aligning code50535 +Node: Automatic casing51480 +Node: Comment Handling54184 +Node: Key summary54703 +Node: Developer overview57330 +Node: Directory structure57670 +Node: Package organization61156 +Node: Ada mode61391 +Node: gpr mode63587 +Node: GNAT core63870 +Node: Wisi64704 +Node: OpenToken65671 +Node: ELPA66273 +Node: GNU Free Documentation License66883 +Node: Index92044  End Tag Table