| *ft_ada.txt* For Vim version 7.4. Last change: 2010 Jul 20 |
| |
| |
| 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 "exuberant Ctags (http://ctags.sourceforge.net). 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* |
| |
| Exuberant Ctags uses its own multi-language code parser. The parser is quite |
| fast, produces a lot of extra information (hence the name "Exuberant Ctags") |
| and can run on files which currently do not compile. |
| |
| There are also lots of other Vim-tools which use exuberant Ctags. |
| |
| You will need to install a version of the Exuberant Ctags which has Ada |
| support patched in. Such a version is available from the GNU Ada Project |
| (http://gnuada.sourceforge.net). |
| |
| The Ada parser for 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 |