123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516 |
- *ft_ada.txt* For Vim version 9.0. Last change: 2022 Mar 13
- ADA FILE TYPE PLUG-INS REFERENCE MANUAL~
- ADA *ada.vim*
- 1. Syntax Highlighting |ft-ada-syntax|
- 2. File type Plug-in |ft-ada-plugin|
- 3. Omni Completion |ft-ada-omni|
- 3.1 Omni Completion with "gnat xref" |gnat-xref|
- 3.2 Omni Completion with "ctags" |ada-ctags|
- 4. Compiler Support |ada-compiler|
- 4.1 GNAT |compiler-gnat|
- 4.2 Dec Ada |compiler-decada|
- 5. References |ada-reference|
- 5.1 Options |ft-ada-options|
- 5.2 Commands |ft-ada-commands|
- 5.3 Variables |ft-ada-variables|
- 5.4 Constants |ft-ada-constants|
- 5.5 Functions |ft-ada-functions|
- 6. Extra Plug-ins |ada-extra-plugins|
- ==============================================================================
- 1. Syntax Highlighting ~
- *ft-ada-syntax*
- This mode is designed for the 2005 edition of Ada ("Ada 2005"), which includes
- support for objected-programming, protected types, and so on. It handles code
- written for the original Ada language ("Ada83", "Ada87", "Ada95") as well,
- though code which uses Ada 2005-only keywords will be wrongly colored (such
- code should be fixed anyway). For more information about Ada, see
- http://www.adapower.com.
- The Ada mode handles a number of situations cleanly.
- For example, it knows that the "-" in "-5" is a number, but the same character
- in "A-5" is an operator. Normally, a "with" or "use" clause referencing
- another compilation unit is coloured the same way as C's "#include" is coloured.
- If you have "Conditional" or "Repeat" groups coloured differently, then "end
- if" and "end loop" will be coloured as part of those respective groups.
- You can set these to different colours using vim's "highlight" command (e.g.,
- to change how loops are displayed, enter the command ":hi Repeat" followed by
- the colour specification; on simple terminals the colour specification
- ctermfg=White often shows well).
- There are several options you can select in this Ada mode. See |ft-ada-options|
- for a complete list.
- To enable them, assign a value to the option. For example, to turn one on:
- >
- > let g:ada_standard_types = 1
- >
- To disable them use ":unlet". Example:
- >
- > unlet g:ada_standard_types
- You can just use ":" and type these into the command line to set these
- temporarily before loading an Ada file. You can make these option settings
- permanent by adding the "let" command(s), without a colon, to your "~/.vimrc"
- file.
- Even on a slow (90Mhz) PC this mode works quickly, but if you find the
- performance unacceptable, turn on |g:ada_withuse_ordinary|.
- Syntax folding instructions (|fold-syntax|) are added when |g:ada_folding| is
- set.
- ==============================================================================
- 2. File type Plug-in ~
- *ft-ada-indent* *ft-ada-plugin*
- The Ada plug-in provides support for:
- - auto indenting (|indent.txt|)
- - insert completion (|i_CTRL-N|)
- - user completion (|i_CTRL-X_CTRL-U|)
- - tag searches (|tagsrch.txt|)
- - Quick Fix (|quickfix.txt|)
- - backspace handling (|'backspace'|)
- - comment handling (|'comments'|, |'commentstring'|)
- The plug-in only activates the features of the Ada mode whenever an Ada
- file is opened and adds Ada related entries to the main and pop-up menu.
- ==============================================================================
- 3. Omni Completion ~
- *ft-ada-omni*
- The Ada omni-completions (|i_CTRL-X_CTRL-O|) uses tags database created either
- by "gnat xref -v" or the "Universal Ctags" (https://ctags.io). The complete
- function will automatically detect which tool was used to create the tags
- file.
- ------------------------------------------------------------------------------
- 3.1 Omni Completion with "gnat xref" ~
- *gnat-xref*
- GNAT XREF uses the compiler internal information (ali-files) to produce the
- tags file. This has the advantage to be 100% correct and the option of deep
- nested analysis. However the code must compile, the generator is quite
- slow and the created tags file contains only the basic Ctags information for
- each entry - not enough for some of the more advanced Vim code browser
- plug-ins.
- NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic
- output - If nothing is printed then usually the parameters are wrong.
- Here some important tips:
- 1) You need to compile your code first and use the "-aO" option to point to
- your .ali files.
- 2) "gnat xref -v ../Include/adacl.ads" won't work - use the "gnat xref -v
- -aI../Include adacl.ads" instead.
- 3) "gnat xref -v -aI../Include *.ad?" won't work - use "cd ../Include" and
- then "gnat xref -v *.ad?"
- 4) Project manager support is completely broken - don't even try "gnat xref
- -Padacl.gpr".
- 5) Vim is faster when the tags file is sorted - use "sort --unique
- --ignore-case --output=tags tags" .
- 6) Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark
- the file assorted.
- ------------------------------------------------------------------------------
- 3.2 Omni Completion with "ctags"~
- *ada-ctags*
- Universal/Exuberant Ctags use their own multi-language code parser. The
- parser is quite fast, produces a lot of extra information and can run on files
- which currently do not compile.
- There are also lots of other Vim-tools which use Universal/Exuberant Ctags.
- Universal Ctags is preferred, Exuberant Ctags is no longer being developed.
- You will need to install Universal Ctags which is available from
- https://ctags.io
- The Ada parser for Universal/Exuberant Ctags is fairly new - don't expect
- complete support yet.
- ==============================================================================
- 4. Compiler Support ~
- *ada-compiler*
- The Ada mode supports more than one Ada compiler and will automatically load the
- compiler set in |g:ada_default_compiler| whenever an Ada source is opened. The
- provided compiler plug-ins are split into the actual compiler plug-in and a
- collection of support functions and variables. This allows the easy
- development of specialized compiler plug-ins fine tuned to your development
- environment.
- ------------------------------------------------------------------------------
- 4.1 GNAT ~
- *compiler-gnat*
- GNAT is the only free (beer and speech) Ada compiler available. There are
- several versions available which differ in the licence terms used.
- The GNAT compiler plug-in will perform a compile on pressing <F7> and then
- immediately shows the result. You can set the project file to be used by
- setting:
- >
- > call g:gnat.Set_Project_File ('my_project.gpr')
- Setting a project file will also create a Vim session (|views-sessions|) so -
- like with the GPS - opened files, window positions etc. will be remembered
- separately for all projects.
- *gnat_members*
- GNAT OBJECT ~
- *g:gnat.Make()*
- g:gnat.Make()
- Calls |g:gnat.Make_Command| and displays the result inside a
- |quickfix| window.
- *g:gnat.Pretty()*
- g:gnat.Pretty()
- Calls |g:gnat.Pretty_Program|
- *g:gnat.Find()*
- g:gnat.Find()
- Calls |g:gnat.Find_Program|
- *g:gnat.Tags()*
- g:gnat.Tags()
- Calls |g:gnat.Tags_Command|
- *g:gnat.Set_Project_File()*
- g:gnat.Set_Project_File([{file}])
- Set gnat project file and load associated session. An open
- project will be closed and the session written. If called
- without file name the file selector opens for selection of a
- project file. If called with an empty string then the project
- and associated session are closed.
- *g:gnat.Project_File*
- g:gnat.Project_File string
- Current project file.
- *g:gnat.Make_Command*
- g:gnat.Make_Command string
- External command used for |g:gnat.Make()| (|'makeprg'|).
- *g:gnat.Pretty_Program*
- g:gnat.Pretty_Program string
- External command used for |g:gnat.Pretty()|
- *g:gnat.Find_Program*
- g:gnat.Find_Program string
- External command used for |g:gnat.Find()|
- *g:gnat.Tags_Command*
- g:gnat.Tags_Command string
- External command used for |g:gnat.Tags()|
- *g:gnat.Error_Format*
- g:gnat.Error_Format string
- Error format (|'errorformat'|)
- ------------------------------------------------------------------------------
- 4.2 Dec Ada ~
- *compiler-hpada* *compiler-decada*
- *compiler-vaxada* *compiler-compaqada*
- Dec Ada (also known by - in chronological order - VAX Ada, Dec Ada, Compaq Ada
- and HP Ada) is a fairly dated Ada 83 compiler. Support is basic: <F7> will
- compile the current unit.
- The Dec Ada compiler expects the package name and not the file name to be
- passed as a parameter. The compiler plug-in supports the usual file name
- convention to convert the file into a unit name. Both '-' and '__' are allowed
- as separators.
- *decada_members*
- DEC ADA OBJECT ~
- *g:decada.Make()*
- g:decada.Make() function
- Calls |g:decada.Make_Command| and displays the result inside a
- |quickfix| window.
- *g:decada.Unit_Name()*
- g:decada.Unit_Name() function
- Get the Unit name for the current file.
- *g:decada.Make_Command*
- g:decada.Make_Command string
- External command used for |g:decada.Make()| (|'makeprg'|).
- *g:decada.Error_Format*
- g:decada.Error_Format string
- Error format (|'errorformat'|).
- ==============================================================================
- 5. References ~
- *ada-reference*
- ------------------------------------------------------------------------------
- 5.1 Options ~
- *ft-ada-options*
- *g:ada_standard_types*
- g:ada_standard_types bool (true when exists)
- Highlight types in package Standard (e.g., "Float").
- *g:ada_space_errors*
- *g:ada_no_trail_space_error*
- *g:ada_no_tab_space_error*
- *g:ada_all_tab_usage*
- g:ada_space_errors bool (true when exists)
- Highlight extraneous errors in spaces ...
- g:ada_no_trail_space_error
- - but ignore trailing spaces at the end of a line
- g:ada_no_tab_space_error
- - but ignore tabs after spaces
- g:ada_all_tab_usage
- - highlight all tab use
- *g:ada_line_errors*
- g:ada_line_errors bool (true when exists)
- Highlight lines which are too long. Note: This highlighting
- option is quite CPU intensive.
- *g:ada_rainbow_color*
- g:ada_rainbow_color bool (true when exists)
- Use rainbow colours for '(' and ')'. You need the
- rainbow_parenthesis for this to work.
- *g:ada_folding*
- g:ada_folding set ('sigpft')
- Use folding for Ada sources.
- 's': activate syntax folding on load
- 'p': fold packages
- 'f': fold functions and procedures
- 't': fold types
- 'c': fold conditionals
- 'g': activate gnat pretty print folding on load
- 'i': lone 'is' folded with line above
- 'b': lone 'begin' folded with line above
- 'p': lone 'private' folded with line above
- 'x': lone 'exception' folded with line above
- 'i': activate indent folding on load
- Note: Syntax folding is in an early (unusable) stage and
- indent or gnat pretty folding is suggested.
- For gnat pretty folding to work the following settings are
- suggested: -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5
- For indent folding to work the following settings are
- suggested: shiftwidth=3 softtabstop=3
- *g:ada_abbrev*
- g:ada_abbrev bool (true when exists)
- Add some abbreviations. This feature is more or less superseded
- by the various completion methods.
- *g:ada_withuse_ordinary*
- g:ada_withuse_ordinary bool (true when exists)
- Show "with" and "use" as ordinary keywords (when used to
- reference other compilation units they're normally highlighted
- specially).
- *g:ada_begin_preproc*
- g:ada_begin_preproc bool (true when exists)
- Show all begin-like keywords using the colouring of C
- preprocessor commands.
- *g:ada_omni_with_keywords*
- g:ada_omni_with_keywords
- Add Keywords, Pragmas, Attributes to omni-completions
- (|compl-omni|). Note: You can always complete then with user
- completion (|i_CTRL-X_CTRL-U|).
- *g:ada_extended_tagging*
- g:ada_extended_tagging enum ('jump', 'list')
- use extended tagging, two options are available
- 'jump': use tjump to jump.
- 'list': add tags quick fix list.
- Normal tagging does not support function or operator
- overloading as these features are not available in C and
- tagging was originally developed for C.
- *g:ada_extended_completion*
- g:ada_extended_completion
- Uses extended completion for <C-N> and <C-R> completions
- (|i_CTRL-N|). In this mode the '.' is used as part of the
- identifier so that 'Object.Method' or 'Package.Procedure' are
- completed together.
- *g:ada_gnat_extensions*
- g:ada_gnat_extensions bool (true when exists)
- Support GNAT extensions.
- *g:ada_with_gnat_project_files*
- g:ada_with_gnat_project_files bool (true when exists)
- Add gnat project file keywords and Attributes.
- *g:ada_default_compiler*
- g:ada_default_compiler string
- set default compiler. Currently supported are 'gnat' and
- 'decada'.
- An "exists" type is a boolean considered true when the variable is defined and
- false when the variable is undefined. The value to which the variable is set
- makes no difference.
- ------------------------------------------------------------------------------
- 5.2 Commands ~
- *ft-ada-commands*
- :AdaRainbow *:AdaRainbow*
- Toggles rainbow colour (|g:ada_rainbow_color|) mode for
- '(' and ')'.
- :AdaLines *:AdaLines*
- Toggles line error (|g:ada_line_errors|) display.
- :AdaSpaces *:AdaSpaces*
- Toggles space error (|g:ada_space_errors|) display.
- :AdaTagDir *:AdaTagDir*
- Creates tags file for the directory of the current file.
- :AdaTagFile *:AdaTagFile*
- Creates tags file for the current file.
- :AdaTypes *:AdaTypes*
- Toggles standard types (|g:ada_standard_types|) colour.
- :GnatFind *:GnatFind*
- Calls |g:gnat.Find()|
- :GnatPretty *:GnatPretty*
- Calls |g:gnat.Pretty()|
- :GnatTags *:GnatTags*
- Calls |g:gnat.Tags()|
- ------------------------------------------------------------------------------
- 5.3 Variables ~
- *ft-ada-variables*
- *g:gnat*
- g:gnat object
- Control object which manages GNAT compiles. The object
- is created when the first Ada source code is loaded provided
- that |g:ada_default_compiler| is set to 'gnat'. See
- |gnat_members| for details.
- *g:decada*
- g:decada object
- Control object which manages Dec Ada compiles. The object
- is created when the first Ada source code is loaded provided
- that |g:ada_default_compiler| is set to 'decada'. See
- |decada_members| for details.
- ------------------------------------------------------------------------------
- 5.4 Constants ~
- *ft-ada-constants*
- All constants are locked. See |:lockvar| for details.
- *g:ada#WordRegex*
- g:ada#WordRegex string
- Regular expression to search for Ada words.
- *g:ada#DotWordRegex*
- g:ada#DotWordRegex string
- Regular expression to search for Ada words separated by dots.
- *g:ada#Comment*
- g:ada#Comment string
- Regular expression to search for Ada comments.
- *g:ada#Keywords*
- g:ada#Keywords list of dictionaries
- List of keywords, attributes etc. pp. in the format used by
- omni completion. See |complete-items| for details.
- *g:ada#Ctags_Kinds*
- g:ada#Ctags_Kinds dictionary of lists
- Dictionary of the various kinds of items which the Ada support
- for Ctags generates.
- ------------------------------------------------------------------------------
- 5.5 Functions ~
- *ft-ada-functions*
- ada#Word([{line}, {col}]) *ada#Word()*
- Return full name of Ada entity under the cursor (or at given
- line/column), stripping white space/newlines as necessary.
- ada#List_Tag([{line}, {col}]) *ada#Listtags()*
- List all occurrences of the Ada entity under the cursor (or at
- given line/column) inside the quick-fix window.
- ada#Jump_Tag ({ident}, {mode}) *ada#Jump_Tag()*
- List all occurrences of the Ada entity under the cursor (or at
- given line/column) in the tag jump list. Mode can either be
- 'tjump' or 'stjump'.
- ada#Create_Tags ({option}) *ada#Create_Tags()*
- Creates tag file using Ctags. The option can either be 'file'
- for the current file, 'dir' for the directory of the current
- file or a file name.
- gnat#Insert_Tags_Header() *gnat#Insert_Tags_Header()*
- Adds the tag file header (!_TAG_) information to the current
- file which are missing from the GNAT XREF output.
- ada#Switch_Syntax_Option ({option}) *ada#Switch_Syntax_Option()*
- Toggles highlighting options on or off. Used for the Ada menu.
- *gnat#New()*
- gnat#New ()
- Create a new gnat object. See |g:gnat| for details.
- ==============================================================================
- 6. Extra Plugins ~
- *ada-extra-plugins*
- You can optionally install the following extra plug-ins. They work well with
- Ada and enhance the ability of the Ada mode:
- backup.vim
- http://www.vim.org/scripts/script.php?script_id=1537
- Keeps as many backups as you like so you don't have to.
- rainbow_parenthsis.vim
- http://www.vim.org/scripts/script.php?script_id=1561
- Very helpful since Ada uses only '(' and ')'.
- nerd_comments.vim
- http://www.vim.org/scripts/script.php?script_id=1218
- Excellent commenting and uncommenting support for almost any
- programming language.
- matchit.vim
- http://www.vim.org/scripts/script.php?script_id=39
- '%' jumping for any language. The normal '%' jump only works for '{}'
- style languages. The Ada mode will set the needed search patterns.
- taglist.vim
- http://www.vim.org/scripts/script.php?script_id=273
- Source code explorer sidebar. There is a patch for Ada available.
- The GNU Ada Project distribution (http://gnuada.sourceforge.net) of Vim
- contains all of the above.
- ==============================================================================
- vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab
- vim: filetype=help
|