[COMMITTED] ada: Update gnatpp documentation with --layout switch
Marc Poulhiès
poulhies@adacore.com
Thu Jan 5 14:39:46 GMT 2023
From: Joao Azevedo <azevedo@adacore.com>
Update legacy switches.
gcc/ada/
* doc/gnat_ugn/gnat_utility_programs.rst: add gnatpp --layout
switch and update legacy switches.
Tested on x86_64-pc-linux-gnu, committed on master.
---
.../doc/gnat_ugn/gnat_utility_programs.rst | 831 +++++++-----------
1 file changed, 325 insertions(+), 506 deletions(-)
diff --git a/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst b/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
index 7df45d518aa..639534d90e6 100644
--- a/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
+++ b/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
@@ -496,18 +496,18 @@ building specialized scripts.
where
- * ``switches`` is an optional sequence of switches defining such properties as
- the formatting rules, the source search path, and the destination for the
- output source file
+ * ``switches`` is an optional sequence of switches defining such properties
+ as the formatting rules, the source search path, and the destination for
+ the output source file
* ``filename`` is the name of the source file to reformat; wildcards
or several file names on the same gnatpp command are allowed. The
file name may contain path information; it does not have to follow
the GNAT file naming rules
- Note that it is no longer necessary to specify the Ada language version;
- ``gnatpp`` can process Ada source code written in any version from
- Ada 83 onward without specifying any language version switch.
+ Note that it is no longer necessary to specify the Ada language version;
+ ``gnatpp`` can process Ada source code written in any version from Ada 83
+ onward without specifying any language version switch.
.. _Switches_for_gnatpp:
@@ -519,8 +519,8 @@ building specialized scripts.
``gnatpp``, organized by category.
You specify a switch by supplying a name and generally also a value.
- In many cases the values for a switch with a given name are incompatible with
- each other
+ In many cases the values for a switch with a given name are incompatible
+ with each other
(for example the switch that controls the casing of a reserved word may have
exactly one value: upper case, lower case, or
mixed case) and thus exactly one such switch can be in effect for an
@@ -532,191 +532,267 @@ building specialized scripts.
Abbreviated forms (the name appearing once, followed by each value) are
not permitted.
- .. _Alignment_Control:
- Alignment Control
- ^^^^^^^^^^^^^^^^^
+ .. _Layout_Control:
- .. index:: Alignment control in gnatpp
-
- Programs can be easier to read if certain constructs are vertically aligned.
- By default, alignment of the following constructs is set ON:
-
- * ``:`` in declarations,
- * ``:=`` in initializations in declarations,
- * ``:=`` in assignment statements,
- * ``=>`` in associations, and
- * ``at`` keywords in the component clauses in record representation clauses.
-
- In addition, ``in`` and ``out`` in parameter specifications are lined up.
+ Layout Control
+ ^^^^^^^^^^^^^^
- .. index:: --no-alignment (gnatpp)
- .. index:: --alignment (gnatpp)
- .. index:: --no-align-modes (gnatpp)
+ .. index:: Layout control in gnatpp
+ ``gnatpp`` provides a layout switch which controls the general
+ formatting style:
- :switch:`--no-alignment`
- Set alignment to OFF
+ .. index:: layout(gnatpp)
+ :switch:`--layout=default|minimal|compact|tall`
- :switch:`--alignment`
- Set alignment to ON
+ :switch:`default`
+ The default layout will follow a compact style but add aligment and put
+ some keywords on a separate line.
+
+ Alignment is added in the the following constructs:
+ * ``:`` in declarations,
+ * ``:=`` in initializations in declarations,
+ * ``:=`` in assignment statements,
+ * ``=>`` in associations, and
+ * ``at`` keywords in the component clauses in record representation
+ clauses.
+
+ In addition, ``in`` and ``out`` keywords in parameter specifications are
+ also lined up.
+
+ The keyword ``is`` is placed on a separate line in a subprogram body in
+ case the spec occupies more than one line.
+
+ The keyword ``return`` is placed on a separate line if a subprogram spec
+ does not fit on one line.
+
+ :switch:`minimal`
+ The minimal layout will avoid changing the source layout by keeping all
+ line breaks from the original source (it will not insert or delete any).
+ It will add indentation where appropriate as long as it does not exceed
+ the line length limit.
+
+ :switch:`compact`
+ The compact layout will avoid adding line breaks and alignment by packing
+ as many subexpressions on the same line as possible.
+
+ Whole-line comments that form a paragraph will be filled in typical word
+ processor style (that is, moving words between lines to make them similar
+ in length, except the last one which may be shorter).
+
+ For each whole-line comment that does not end with two hyphens, inserts
+ spaces if necessary after the starting two hyphens to ensure that there
+ are at least two spaces preceding the first non-blank character of the
+ comment.
+
+ :switch:`tall`
+ The tall layout will favor adding lines breaks and alignment. It adds
+ all the alignment and line breaks defined in the ``default`` option,
+ and in addition:
+
+ * Places the keyword ``loop`` in FOR and WHILE loop statements on a
+ separate line
+ * Places the keyword ``then`` in IF statements on a separate line
+ * Places each keyword ``use`` in USE clauses on a separate line
+ * Splits the line just before the keyword ``record`` in a RECORD type
+ declaration
+ * Indents named blocks and loop statments with respect to the name
+ * When necessary, splits binary operators always before the operator
+ * Inserts an extra blank before various occurrences of ``(`` and ``:``
+ * When it is necessary to split a line between two subexpressions (because
+ otherwise the construct would exceed --max-line-length), then all such
+ subexpressions are placed on separate lines
+ * Formats enumeration type declarations “vertically”, e.g. each
+ enumeration literal goes on a separate line
+ * Formats array type declarations “vertically”, e.g. for multidimensional
+ arrays, each index_subtype_definition or discrete_subtype_definition
+ goes on a separate line
+ * Format aggregates “vertically” if named notation is used for all
+ component_associations, e.g. each component_association goes on a
+ separate line
+ * Formats case statements, case expressions, and variant parts with
+ additional line breaks
+ * Inserts blank lines where appropriate (between bodies and other large
+ constructs)
+ * Similarly to the :switch:`compact` layout, two spaces are added in the
+ beginning of a whole-line comment when needed
- :switch:`--no-align-modes`
- Do not line up ``in`` and ``out`` in parameter specifications.
.. _Casing_Control:
-
Casing Control
^^^^^^^^^^^^^^
.. index:: Casing control in gnatpp
- ``gnatpp`` allows you to specify the casing for reserved words,
- pragma names, attribute designators and identifiers.
- For identifiers you may define a
- general rule for name casing but also override this rule
- via a set of dictionary files.
+ ``gnatpp`` allows you to specify the casing for reserved words, pragma
+ names, attribute designators and identifiers. For identifiers you may define
+ a general rule for name casing but also override this rule via a set of
+ dictionary files.
- Three types of casing are supported: lower case, upper case, and mixed case.
- 'Mixed case' means that the first letter, and also each letter immediately
- following an underscore, are converted to their uppercase forms;
- all the other letters are converted to their lowercase forms.
-
- (Note: the casing switches are not yet fully supported in the
- libadalang-based version of gnatpp.)
+ Three types of casing are supported: 'Lower Case', 'Upper Case', and
+ 'Mixed Case'. 'Mixed case' means that the first letter, and also each
+ letter immediately following an underscore, are converted to their
+ uppercase forms and all the other letters are converted to their lowercase
+ forms.
.. index:: --name-case-as-declared (gnatpp)
- :switch:`--name-case-as-declared`
+ :switch:`--name-case-as-declared, -nD`
Name casing for defining occurrences are as they appear in the source file
- (this is the default)
+ (this is the default).
.. index:: --name-upper-case (gnatpp)
- :switch:`--name-upper-case`
- Names are in upper case
+ :switch:`--name-upper-case, -nU`
+ Names are in upper case.
.. index:: --name-lower-case (gnatpp)
- :switch:`--name-lower-case`
- Names are in lower case
+ :switch:`--name-lower-case, -nL`
+ Names are in lower case.
.. index:: --name-mixed-case (gnatpp)
- :switch:`--name-mixed-case`
- Names are in mixed case
+ :switch:`--name-mixed-case, -nM`
+ Names are in mixed case.
.. index:: --attribute-lower-case (gnatpp)
- :switch:`--attribute-lower-case`
- Attribute designators are lower case
+ :switch:`--attribute-lower-case, -aL`
+ Attribute designators are lower case.
.. index:: --attribute-upper-case (gnatpp)
- :switch:`--attribute-upper-case`
- Attribute designators are upper case
+ :switch:`--attribute-upper-case, -aU`
+ Attribute designators are upper case.
.. index:: --attribute-mixed-case (gnatpp)
- :switch:`--attribute-mixed-case`
- Attribute designators are mixed case (this is the default)
+ :switch:`--attribute-mixed-case, -aM`
+ Attribute designators are mixed case (this is the default).
.. index:: --keyword-lower-case (gnatpp)
- :switch:`--keyword-lower-case`
+ :switch:`--keyword-lower-case, -kL`
Keywords (technically, these are known in Ada as *reserved words*) are
- lower case (this is the default)
+ lower case (this is the default).
.. index:: --keyword-upper-case (gnatpp)
- :switch:`--keyword-upper-case`
- Keywords are upper case
+ :switch:`--keyword-upper-case, -kU`
+ Keywords are upper case.
.. index:: --enum-case-as-declared (gnatpp)
- :switch:`--enum-case-as-declared`
- Enumeration literal casing for defining occurrences are as they appear in the
- source file. Overrides -n casing setting.
+ :switch:`--enum-case-as-declared, -neD`
+ Enumeration literal casing for defining occurrences are as they appear in
+ the source file. Overrides -n casing setting.
.. index:: --enum-upper-case (gnatpp)
- :switch:`--enum-upper-case`
+ :switch:`--enum-upper-case, -neU`
Enumeration literals are in upper case. Overrides -n casing
setting.
.. index:: --enum-lower-case (gnatpp)
- :switch:`--enum-lower-case`
+ :switch:`--enum-lower-case, -neL`
Enumeration literals are in lower case. Overrides -n casing
setting.
.. index:: --enum-mixed-case (gnatpp)
- :switch:`--enum-mixed-case`
+ :switch:`--enum-mixed-case, -neM`
Enumeration literals are in mixed case. Overrides -n casing
setting.
.. index:: --type-case-as-declared (gnatpp)
- :switch:`--type-case-as-declared`
+ :switch:`--type-case-as-declared, -ntD`
Names introduced by type and subtype declarations are always
cased as they appear in the declaration in the source file.
Overrides -n casing setting.
.. index:: --type-upper-case (gnatpp)
- :switch:`--type-upper-case`
+ :switch:`--type-upper-case, -ntU`
Names introduced by type and subtype declarations are always in
upper case. Overrides -n casing setting.
.. index:: --type-lower-case (gnatpp)
- :switch:`--type-lower-case`
+ :switch:`--type-lower-case, -ntL`
Names introduced by type and subtype declarations are always in
lower case. Overrides -n casing setting.
.. index:: --type-mixed-case (gnatpp)
- :switch:`--type-mixed-case`
+ :switch:`--type-mixed-case, -ntM`
Names introduced by type and subtype declarations are always in
mixed case. Overrides -n casing setting.
.. index:: --number-upper-case (gnatpp)
- :switch:`--number-upper-case`
+ :switch:`--number-upper-case, -nnU`
Names introduced by number declarations are always in
upper case. Overrides -n casing setting.
.. index:: --number-lower-case (gnatpp)
- :switch:`--number-lower-case`
+ :switch:`--number-lower-case, -nnL`
Names introduced by number declarations are always in
lower case. Overrides -n casing setting.
.. index:: --number-mixed-case (gnatpp)
- :switch:`--number-mixed-case`
+ :switch:`--number-mixed-case, -nnM`
Names introduced by number declarations are always in
mixed case. Overrides -n casing setting.
.. index:: --pragma-lower-case (gnatpp)
- :switch:`--pragma-lower-case`
- Pragma names are lower case
+ :switch:`--pragma-lower-case, -pL`
+ Pragma names are lower case.
.. index:: --pragma-upper-case (gnatpp)
- :switch:`--pragma-upper-case`
- Pragma names are upper case
+ :switch:`--pragma-upper-case, -pU`
+ Pragma names are upper case.
.. index:: --pragma-mixed-case (gnatpp)
- :switch:`--pragma-mixed-case`
- Pragma names are mixed case (this is the default)
+ :switch:`--pragma-mixed-case, -pM`
+ Pragma names are mixed case (this is the default).
+
+ .. index:: --constant-case-as-non-constant (gnatpp)
+
+ :switch:`--constant-case-as-non-constant, -cN`
+ Constant object declaration names have the same case as the name casing
+ (this is the default).
+
+ .. index:: --constant-case-as-declared (gnatpp)
+ :switch:`--constant-case-as-declared, -cD`
+ Constant object declaration names are as they appear in the source file.
+
+ .. index:: --constant-lower-case (gnatpp)
+
+ :switch:`--constant-lower-case, -cL`
+ Constant object declaration names are lower case.
+
+ .. index:: --constant-upper-case (gnatpp)
+
+ :switch:`--constan-upper-case, -cU`
+ Constant object declaration names are upper case.
+
+ .. index:: --constant-mixed-case (gnatpp)
+
+ :switch:`--constant-mixed-case, -cM`
+ Constant object declaration names are mixed case.
.. index:: --syntax-only (gnatpp)
@@ -725,10 +801,9 @@ building specialized scripts.
This means gnatpp will not be able to support any of the
"as-declared" switches.
-
.. index:: --dictionary (gnatpp)
- :switch:`--dictionary={file}`
+ :switch:`--dictionary={file}, -D={file}`
Use ``file`` as a *dictionary file* that defines
the casing for a set of specified names,
thereby overriding the effect on these names by
@@ -741,10 +816,9 @@ building specialized scripts.
to define the casing for the Ada predefined names and
the names declared in the GNAT libraries.
-
.. index:: --dictionary=- (gnatpp)
- :switch:`--dictionary=-`
+ :switch:`--dictionary=-, -D=-`
Do not use the default dictionary file;
instead, use the casing
defined by a ``-n`` switch and any explicit
@@ -762,146 +836,6 @@ building specialized scripts.
on their effect.
- .. index:: -c (gnatpp)
-
-
- :switch:`--comments-unchanged`
- All comments remain unchanged.
-
-
- :switch:`--comments-gnat-indentation`
- GNAT-style comment line indentation.
- This is the default.
-
-
- :switch:`--comments-gnat-beginning`
- GNAT-style comment beginning.
-
-
- :switch:`--comments-fill`
- Fill comment blocks.
- The default is :switch:`--no-comments-fill`.
-
-
- :switch:`--comments-special`
- Keep unchanged special form comments.
- The default is :switch:`--no-comments-special`.
-
-
- .. index:: --comments-only (gnatpp)
-
- :switch:`--comments-only`
- Format just the comments.
-
- .. index:: --no-end-id (gnatpp)
-
-
- :switch:`--no-end-id`
- Do not insert the name of a unit after ``end``; leave whatever comes
- after ``end``, if anything, alone.
-
- .. index:: --no-separate-is (gnatpp)
-
-
- :switch:`--no-separate-is`
- Do not place the keyword ``is`` on a separate line in a subprogram body in
- case if the spec occupies more than one line.
-
- .. index:: --no-separate-return (gnatpp)
-
-
- :switch:`--no-separate-return`
- In :switch:`--no-compact` mode, if a subprogram spec does not fit on
- one line, try to place the ``return`` on the same line as the last
- formal parameter.
-
- .. index:: --separate-loop (gnatpp)
-
-
- :switch:`--separate-loop`
- Place the keyword ``loop`` in FOR and WHILE loop statements
- on a separate line.
-
- .. index:: --no-separate-then (gnatpp)
-
-
- :switch:`--separate-then`
- Place the keyword ``then`` in IF statements
- on a separate line.
-
- .. index:: --no-separate-loop (gnatpp)
-
-
- :switch:`--no-separate-loop`
- Do not place the keyword ``loop`` in FOR and WHILE loop statements
- on a separate line. This option is
- incompatible with the :switch:`--separate-loop` option.
-
- .. index:: --no-separate-then (gnatpp)
-
-
- :switch:`--no-separate-then`
- Do not place the keyword ``then`` in IF statements
- on a separate line. This option is
- incompatible with the :switch:`--separate-then` option.
-
- .. index:: --separate-loop-then (gnatpp)
-
-
- :switch:`--separate-loop-then`
- Equivalent to :switch:`--separate-loop` :switch:`--separate-then`.
-
- .. index:: --no-separate-loop-then (gnatpp)
-
-
- :switch:`--no-separate-loop-then`
- Equivalent to :switch:`--no-separate-loop` :switch:`--no-separate-then`.
-
- .. index:: --use-on-new-line (gnatpp)
-
-
- :switch:`--use-on-new-line`
- Start each USE clause in a context clause from a separate line.
-
-
- .. index:: --insert-blank-lines (gnatpp)
-
-
- :switch:`--insert-blank-lines`
- Insert blank lines where appropriate (between bodies and other large
- constructs).
-
- .. index:: --preserve-blank-lines (gnatpp)
-
-
- :switch:`--preserve-blank-lines`
- Preserve blank lines in the input. By default, gnatpp will squeeze
- multiple blank lines down to one.
-
- .. index:: --preserve-line-breaks (gnatpp)
-
- :switch:`--preserve-line-breaks`
- Preserve line breaks in the input, to the extent possible.
- By default, line breaks are also inserted at appropriate
- places.
-
- .. index:: --source-line-breaks (gnatpp)
-
- :switch:`--source-line-breaks`
- Keep the line breaks from the source; do not insert or delete any
- line breaks.
-
- .. index:: --spaces-only (gnatpp)
-
- :switch:`--spaces-only`
- Disable all formatting except for inserting and removing spaces.
- This implies --source-line-breaks.
-
- The ``--comments`` switches are compatible with one another, except
- that the ``--comments-unchanged`` switch disables all other comment
- formatting switches.
-
-
.. _General_Text_Layout_Control:
General Text Layout Control
@@ -911,19 +845,19 @@ building specialized scripts.
.. index:: --max-line-length (gnatpp)
- :switch:`--max-line-length={nnn}`
+ :switch:`--max-line-length={nnn}, -M={nnn}`
Maximum line length, ``nnn`` from 32...256, the default value is 79
.. index:: --indentation (gnatpp)
- :switch:`--indentation={nnn}`
+ :switch:`--indentation={nnn}, -i={nnn}`
Indentation level, ``nnn`` from 1...9, the default value is 3
.. index:: --indent-continuation (gnatpp)
- :switch:`--indent-continuation={nnn}`
+ :switch:`--indent-continuation={nnn}, -cl={nnn}`
Indentation level for continuation lines (relative to the line being
continued), ``nnn`` from 1...9.
The default
@@ -956,63 +890,6 @@ building specialized scripts.
example, with ``--based-grouping=4``, ``16#0001FFFE#`` will be
changed to ``16#0001_FFFE#``.
-
- .. index:: --split-line-before-record (gnatpp)
-
- :switch:`--split-line-before-record`
- Split the line just before ``record`` in a record type declaration.
-
-
- .. index:: --indent-named-statements (gnatpp)
-
- :switch:`--indent-named-statements`
- Named block and loop statements are indented with respect to
- the name.
-
-
- .. index:: --split-line-before-op (gnatpp)
-
- :switch:`--split-line-before-op`
- If it is necessary to split a line at a binary operator, by default
- the line is split after the operator. With this option, it is split
- before the operator.
-
-
- .. index:: --RM-style-spacing (gnatpp)
-
- :switch:`--RM-style-spacing`
- Do not insert an extra blank before various occurrences of
- '(' and ':'. Alignment is off by default in this mode;
- use :switch:`--alignment` to turn it on.
-
-
- .. index:: --compact (gnatpp)
- .. index:: --no-compact (gnatpp)
-
- :switch:`--compact`
- This is the default. In calls and similar, this packs as many
- subexpressions on the same line as possible. Example:
-
- .. code-block:: ada
-
- Some_Procedure
- (Short_One, Another_Short_One,
- A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
-
- :switch:`--no-compact`
- Turns off --compact mode. In calls and similar, if it is necessary
- to split a line between two subexpressions (because otherwise the
- construct would exceed --max-line-length), then all such subexpressions
- are placed on separate lines. Example:
-
- .. code-block:: ada
-
- Some_Procedure
- (Short_One,
- Another_Short_One,
- A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
-
-
.. index:: --call-threshold (gnatpp)
:switch:`--call-threshold={nnn}`
@@ -1021,40 +898,14 @@ building specialized scripts.
a new line. If ``nnn`` is 0, no check for the number of associations
is made; this is the default.
-
.. index:: --par-threshold (gnatpp)
:switch:`--par-threshold={nnn}`
If the number of parameter specifications is greater than ``nnn``
(or equal to ``nnn`` in case of a function), start each specification from
- a new line. If ``nnn`` is 0, and :switch:`--no-separate-is` was not specified, then
- the ``is`` is placed on a separate line. This feature is disabled by default.
-
- .. index:: --vertical-enum-types (gnatpp)
-
- :switch:`--vertical-enum-types`
- Format enumeration type declarations "vertically", e.g. each
- enumeration literal goes on a separate line.
-
- .. index:: --vertical-array-types (gnatpp)
-
- :switch:`--vertical-array-types`
- Format array type declarations "vertically", e.g. for
- multidimensional arrays, each index_subtype_definition or
- discrete_subtype_definition goes on a separate line.
-
- .. index:: --vertical-named-aggregates (gnatpp)
-
- :switch:`--vertical-named-aggregates`
- Format aggregates "vertically" if named notation is used for all
- component_associations, e.g. each component_association
- goes on a separate line.
-
- .. index:: --vertical-case-alternatives (gnatpp)
-
- :switch:`--vertical-case-alternatives`
- Format case statements, case expressions, and variant parts with
- additional line breaks.
+ a new line. If ``nnn`` is 0, and :switch:`--no-separate-is` was not
+ specified, then the ``is`` is placed on a separate line. This feature is
+ disabled by default.
.. _Setting_the_Source_Search_Path:
@@ -1090,7 +941,7 @@ building specialized scripts.
.. index:: --replace (gnatpp)
- :switch:`--replace`
+ :switch:`--replace, -rnb`
This is the default.
Replace the input source file with the reformatted output without
creating any backup copy of the input source.
@@ -1108,13 +959,13 @@ building specialized scripts.
.. index:: --pipe (gnatpp)
- :switch:`--pipe`
+ :switch:`--pipe, -pipe`
Send the output to ``Standard_Output``
.. index:: --output (gnatpp)
- :switch:`--output={output_file}`
+ :switch:`--output={output_file}, -o={output_file}`
Write the output into ``output_file``.
If ``output_file`` already exists, ``gnatpp`` terminates without
reading or processing the input file.
@@ -1122,24 +973,24 @@ building specialized scripts.
.. index:: --output-force (gnatpp)
- :switch:`--output-force={output_file}`
+ :switch:`--output-force={output_file}, -of={output_file}`
Write the output into ``output_file``, overwriting the existing file
(if one is present).
.. index:: --replace-backup (gnatpp)
- :switch:`--replace-backup`
+ :switch:`--replace-backup, -r`
Replace the input source file with the reformatted output, and copy the
- original input source into the file whose name is obtained by appending the
- :file:`.npp` suffix to the name of the input file.
+ original input source into the file whose name is obtained by appending
+ the :file:`.npp` suffix to the name of the input file.
If a file with this name already exists, ``gnatpp`` terminates without
reading or processing the input file.
.. index:: --replace-force-backup (gnatpp)
- :switch:`--replace-force-backup`
+ :switch:`--replace-force-backup, -rf`
Like ``--replace-backup`` except that if the file with the specified name
already exists, it is overwritten.
@@ -1159,7 +1010,7 @@ building specialized scripts.
.. index:: --wide-character-encoding (gnatpp)
- :switch:`--wide-character-encoding={e}`
+ :switch:`--wide-character-encoding={e}, -W={e}`
Specify the wide character encoding method for the input and output
files. ``e`` is one of the following:
@@ -1198,8 +1049,8 @@ building specialized scripts.
:switch:`-P {file}`
Indicates the name of the project file that describes the set of sources
- to be processed. The exact set of argument sources depends on other options
- specified; see below.
+ to be processed. The exact set of argument sources depends on other
+ options specified; see below.
.. index:: -U (gnatpp)
@@ -1207,9 +1058,8 @@ building specialized scripts.
:switch:`-U`
If a project file is specified and no argument source is explicitly
specified (either directly or by means of ``--files`` option), process
- all the units of the closure of the argument project. Otherwise this option
- has no effect.
-
+ all the units of the closure of the argument project. Otherwise this
+ option has no effect.
:switch:`-U {main_unit}`
If a project file is specified and no argument source is explicitly
@@ -1255,13 +1105,13 @@ building specialized scripts.
.. index:: --pp-on (gnatpp)
:switch:`--pp-on={xxx}`
- Use :switch:`--xxx` as the command to turn pretty printing back on, instead
- of the default ``--!pp on``.
+ Use :switch:`--xxx` as the command to turn pretty printing back on,
+ instead of the default ``--!pp on``.
.. index:: --files (gnatpp)
- :switch:`--files={filename}`
+ :switch:`--files={filename}, -files={filename}`
Take as arguments the files listed in text file ``file``.
Text file ``file`` may contain empty lines that are ignored.
Each nonempty line should contain the name of an existing file.
@@ -1274,9 +1124,10 @@ building specialized scripts.
Do not process the sources listed in a specified file. This option cannot
be used in incremental mode.
+
.. index:: --jobs (gnatpp)
- :switch:`--jobs={n}`
+ :switch:`--jobs={n}, -j={n}`
With ``--incremental``, use *n* ``gnatpp`` processes to perform
pretty printing in parallel. If *n* is 0, then the maximum number
processes is the number of core processors on the platform.
@@ -1284,13 +1135,13 @@ building specialized scripts.
.. index:: --verbose (gnatpp)
- :switch:`--verbose`
+ :switch:`--verbose, -v`
Verbose mode
.. index:: --quiet (gnatpp)
- :switch:`--quiet`
+ :switch:`--quiet, -q`
Quiet mode
If a project file is specified and no argument source is explicitly
@@ -1304,9 +1155,9 @@ building specialized scripts.
Formatting Rules
----------------
- The following subsections show how ``gnatpp`` treats white space,
- comments, program layout, and name casing.
- They provide detailed descriptions of the switches shown above.
+ The following subsections show how ``gnatpp`` treats, comments, program
+ layout, name casing and how to disable ``gnatpp`` in source code regions.
+ They provide more details of the switches shown above.
.. _Disabling_Pretty_Printing:
@@ -1353,32 +1204,13 @@ building specialized scripts.
included in the argument to these switches.
- .. _White_Space_and_Empty_Lines:
-
- White Space and Empty Lines
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
- ``gnatpp`` does not have an option to control space characters.
- It will add or remove spaces according to the style illustrated by the
- examples in the :title:`Ada Reference Manual`.
- The output file will contain no lines with trailing white space.
-
- By default, a sequence of one or more blank lines in the input is
- converted to a single blank line in the output; multiple blank lines
- are squeezed down to one.
- The ``--preserve-blank-lines`` option
- turns off the squeezing; each blank line in the input is copied
- to the output.
- The ``--insert-blank-lines`` option
- causes additional blank lines to be inserted if not already
- present in the input (e.g. between bodies).
-
-
.. _Formatting_Comments:
Formatting Comments
^^^^^^^^^^^^^^^^^^^
+ Only ``--layout=compact`` and ``--layout=tall`` format comments.
+
Comments in Ada code are of two kinds:
* a *whole-line comment*, which appears by itself (possibly preceded by
@@ -1390,38 +1222,21 @@ building specialized scripts.
A whole-line comment is indented according to the surrounding code,
with some exceptions. Comments that start in column 1 are kept
there. If possible, comments are not moved so far to the right that
- the maximum line length is exceeded. The ``--comments-unchanged``
- option turns off comment formatting. Special-form comments such as
+ the maximum line length is exceeded. Special-form comments such as
SPARK-style ``--#...`` are left alone.
For an end-of-line comment, ``gnatpp`` tries to leave the same
number of spaces between the end of the preceding Ada code and the
beginning of the comment as appear in the original source.
- The ``--comments-gnat-beginning`` switch (GNAT style comment
- beginning) has the following effect:
-
- * For each whole-line comment that does not end with two hyphens,
- ``gnatpp`` inserts spaces if necessary after the starting two
- hyphens to ensure that there are at least two spaces between
- these hyphens and the first non-blank character of the comment.
+ For each whole-line comment that does not end with two hyphens or that are
+ not special-form comments, ``gnatpp`` inserts spaces if necessary after the
+ starting two hyphens to ensure that there are at least two spaces between
+ these hyphens and the first non-blank character of the comment.
- The ``--comments-fill`` switch specifies that whole-line comments
- that form a paragraph will be filled in typical word processor style
- (that is, moving words between lines to make the lines other than the
- last similar in length ).
-
- The ``--comments-only`` switch specifies that only the comments are
- formatted; the rest of the program text is left alone. The comments
- are formatted according to the ``--comments-gnat-beginning`` and
- ``--comments-fill`` switches; other formatting switches are ignored. For
- example, ``--comments-only --comments-fill`` means to fill comment
- paragraphs, and do nothing else. Likewise, ``--comments-only
- --comments-gnat-beginning`` ensures comments start with at least two
- spaces after ``--``, and ``--comments-only --comments-gnat-beginning
- --comments-fill`` does both. If ``--comments-only`` is given without
- ``--comments-gnat-beginning`` or ``--comments-fill``, then gnatpp
- doesn't format anything.
+ With ``--layout=compact``, whole-line comments that form a paragraph will be
+ filled in typical word processor style (that is, moving words between lines
+ to make the lines other than the last similar in length).
.. _Name_Casing:
@@ -1643,188 +1458,192 @@ building specialized scripts.
Legacy Switches
^^^^^^^^^^^^^^^
- Some switches have a short form, mostly for legacy reasons,
- as shown below.
-
- .. index:: -n (gnatpp)
-
- :switch:`-nD`
- :switch:`--name-case-as-declared`
-
- :switch:`-nU`
- :switch:`--name-upper-case`
-
- :switch:`-nL`
- :switch:`--name-lower-case`
-
- :switch:`-nM`
- :switch:`--name-mixed-case`
-
- .. index:: -a (gnatpp)
-
- :switch:`-aL`
- :switch:`--attribute-lower-case`
-
- :switch:`-aU`
- :switch:`--attribute-upper-case`
+ .. index:: --alignment (gnatpp)
- :switch:`-aM`
- :switch:`--attribute-mixed-case`
+ :switch:`--alignment, --no-alignment`
+ Programs can be easier to read if certain constructs are vertically
+ aligned.
- .. index:: -k (gnatpp)
+ * ``:`` in declarations,
+ * ``:=`` in initializations in declarations,
+ * ``:=`` in assignment statements,
+ * ``=>`` in associations, and
+ * ``at`` keywords in the component clauses in record representation
+ clauses.
- :switch:`-kL`
- :switch:`--keyword-lower-case`
+ .. index:: --align-modes (gnatpp)
- :switch:`-kU`
- :switch:`--keyword-upper-case`
+ :switch:`--align-modes, --no-align-modes`
- .. index:: -ne (gnatpp)
+ Line up ``in`` and ``out`` in parameter specifications.
- :switch:`-neD`
- :switch:`--enum-case-as-declared`
+ .. index:: --compact (gnatpp)
- :switch:`-neU`
- :switch:`--enum-upper-case`
+ :switch:`--compact, --no-compact`
+ In calls and similar, ``--compact`` packs as many
+ subexpressions on the same line as possible. Example:
- :switch:`-neL`
- :switch:`--enum-lower-case`
+ .. code-block:: ada
- :switch:`-neM`
- :switch:`--enum-mixed-case`
+ Some_Procedure
+ (Short_One, Another_Short_One,
+ A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
- .. index:: -nt (gnatpp)
+ On the contrary, with ``--no-compact``, in calls and similar, if it is
+ necessary to split a line between two subexpressions (because otherwise
+ the construct would exceed --max-line-length), then all such
+ subexpressions are placed on separate lines. Example:
- :switch:`-ntD`
- :switch:`--type-case-as-declared`
+ .. code-block:: ada
- :switch:`-ntU`
- :switch:`--type-upper-case`
+ Some_Procedure
+ (Short_One,
+ Another_Short_One,
+ A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
- :switch:`-ntL`
- :switch:`--type-lower-case`
+ .. index:: --end-id (gnatpp)
- :switch:`-ntM`
- :switch:`--type-mixed-case`
+ :switch:`--end-id, --no-end-id`
+ Insert the name of a unit after ``end``. Otherwise, leave whatever comes
+ after ``end``, if anything, alone.
- :switch:`-nnU`
- :switch:`--number-upper-case`
+ .. index:: --separate-is (gnatpp)
- :switch:`-nnL`
- :switch:`--number-lower-case`
+ :switch:`--separate-is, --no-separate-is`
+ Place the keyword ``is`` on a separate line in a subprogram body in
+ case if the spec occupies more than one line.
- :switch:`-nnM`
- :switch:`--number-mixed-case`
+ .. index:: --separate-return (gnatpp)
- .. index:: -p (gnatpp)
+ :switch:`--separate-return, --no-separate-return`
+ If a subprogram spec does not fit on one line, place the ``return`` on
+ a separate line. Otherwise try to place it in the same line as the last
+ parameter specification.
- :switch:`-pL`
- :switch:`--pragma-lower-case`
+ .. index:: --separate-loop (gnatpp)
- :switch:`-pU`
- :switch:`--pragma-upper-case`
+ :switch:`--separate-loop, --no-separate-loop`
+ Place the keyword ``loop`` in FOR and WHILE loop statements
+ on a separate line.
- :switch:`-pM`
- :switch:`--pragma-mixed-case`
- .. index:: -D (gnatpp)
+ .. index:: --separate-then (gnatpp)
- :switch:`-D{file}`
- :switch:`--dictionary={file}`
+ :switch:`--separate-then, --no-separate-then`
+ Place the keyword ``then`` in IF statements
+ on a separate line.
- .. index:: -D- (gnatpp)
+ .. index:: --separate-loop-then (gnatpp)
- :switch:`-D-`
- :switch:`--dictionary=-`
+ :switch:`--separate-loop-then, --no-separate-loop-then`
+ Equivalent to :switch:`--separate-loop` :switch:`--separate-then`.
- .. index:: -c (gnatpp)
+ .. index:: --split-line-before-record (gnatpp)
- :switch:`-c0`
- :switch:`--comments-unchanged`
+ :switch:`--split-line-before-record, --no-split-line-before-record`
+ Split the line just before ``record`` in a record type declaration.
- :switch:`-c1`
- :switch:`--comments-gnat-indentation`
+ .. index:: --indent-named-statements (gnatpp)
- :switch:`-c3`
- :switch:`--comments-gnat-beginning`
+ :switch:`--indent-named-statements, --no-indent-named-statements`
+ Named block and loop statements are indented with respect to
+ the name.
- :switch:`-c4`
- :switch:`--comments-fill`
+ .. index:: --split-line-before-op (gnatpp)
- :switch:`-c5`
- :switch:`--comments-special`
+ :switch:`--split-line-before-op, --no-split-line-before-op`
+ If it is necessary to split a line at a binary operator, by default
+ the line is split after the operator. With this option, it is split
+ before the operator.
- .. index:: -M (gnatpp)
+ .. index:: --use-on-new-line (gnatpp)
- :switch:`-M{nnn}`
- :switch:`--max-line-length={nnn}`
+ :switch:`--use-on-new-line, --no-use-one-new-line`
+ Start each USE clause in a context clause from a separate line.
- .. index:: -i (gnatpp)
+ .. index:: --vertical-enum-types (gnatpp)
- :switch:`-i{nnn}`
- :switch:`--indentation={nnn}`
+ :switch:`--vertical-enum-types, --no-vertical-enum-types`
+ Format enumeration type declarations "vertically", e.g. each
+ enumeration literal goes on a separate line.
- .. index:: -cl (gnatpp)
+ .. index:: --vertical-array-types (gnatpp)
- :switch:`-cl{nnn}`
- :switch:`--indent-continuation={nnn}`
+ :switch:`--vertical-array-types, --no-vertical-array-types`
+ Format array type declarations "vertically", e.g. for
+ multidimensional arrays, each index_subtype_definition or
+ discrete_subtype_definition goes on a separate line.
- .. index:: -pipe (gnatpp)
+ .. index:: --vertical-named-aggregates (gnatpp)
- :switch:`-pipe`
- :switch:`--pipe`
+ :switch:`--vertical-named-aggregates, --no-vertical-named-aggregates`
+ Format aggregates "vertically" if named notation is used for all
+ component_associations, e.g. each component_association
+ goes on a separate line.
- .. index:: -o (gnatpp)
+ .. index:: --vertical-case-alternatives (gnatpp)
- :switch:`-o {output-file}`
- :switch:`--output={output-file}`
+ :switch:`--vertical-case-alternatives, --no-vertical-case-alternatives`
+ Format case statements, case expressions, and variant parts with
+ additional line breaks.
- .. index:: -of (gnatpp)
+ .. index:: --RM-style-spacing (gnatpp)
- :switch:`-of {output-file}`
- :switch:`--output-force={output-file}`
+ :switch:`--RM-style-spacing`
+ Do not insert an extra blank before various occurrences of
+ '(' and ':'. Alignment is off by default in this mode;
+ use :switch:`--alignment` to turn it on.
- .. index:: -r (gnatpp)
+ .. index:: --insert-blank-lines (gnatpp)
- :switch:`-rnb`
- :switch:`--replace`
+ :switch:`--insert-blank-lines, --no-insert-blank-lines`
+ Insert blank lines where appropriate (between bodies and other large
+ constructs).
- :switch:`-r`
- :switch:`--replace-backup`
+ .. index:: --preserve-blank-lines (gnatpp)
- .. index:: -rf (gnatpp)
+ :switch:`--preserve-blank-lines, --no-preserve-blank-lines`
+ Preserve blank lines in the input. By default, gnatpp will squeeze
+ multiple blank lines down to one.
- :switch:`-rf`
- :switch:`--replace-force-backup`
+ .. index:: --preserve-line-breaks (gnatpp)
- .. index:: -rnb (gnatpp)
+ :switch:`--preserve-line-breaks, --no-preserve-line-breaks`
+ Preserve line breaks in the input, to the extent possible.
+ By default, line breaks are also inserted at appropriate
+ places.
- .. index:: --eol (gnatpp)
+ .. index:: --source-line-breaks (gnatpp)
- .. index:: -W (gnatpp)
+ :switch:`--source-line-breaks, --no-source-line-breaks`
+ Keep the line breaks from the source; do not insert or delete any
+ line breaks.
- :switch:`-W{e}`
- :switch:`--wide-character-encoding={e}`
+ .. index:: --spaces-only (gnatpp)
- .. index:: -files (gnatpp)
+ :switch:`--spaces-only, --no-spaces-only`
+ Disable all formatting except for inserting and removing spaces.
+ This implies --source-line-breaks.
- :switch:`-files {filename}`
- :switch:`--files={filename}`
+ .. index:: -c (gnatpp)
- .. index:: -j (gnatpp)
+ :switch:`--comments-unchanged, -c0`
+ All comments remain unchanged.
- :switch:`-j{n}`
- :switch:`--jobs={n}`
+ :switch:`--comments-gnat-indentation, -c1`
+ GNAT-style comment line indentation.
- .. index:: -v (gnatpp)
+ :switch:`--comments-gnat-beginning, -c3`
+ GNAT-style comment beginning.
- :switch:`-v`
- :switch:`--verbose`
+ :switch:`--comments-fill, -c4`
+ Fill comment blocks.
- .. index:: -q (gnatpp)
+ :switch:`--comments-special, -c5`
+ Keep unchanged special form comments.
- :switch:`-q`
- :switch:`--quiet`
+ :switch:`--comments-only`
+ Format just the comments.
.. only:: PRO or GPL
--
2.34.1
More information about the Gcc-patches
mailing list