Ft_ada

Nvim :help 页面,生成源代码 使用 tree-sitter-vimdoc 解析器。


ADA 文件类型插件参考手册~

ADA

1. 语法高亮 ft-ada-syntax 2. 文件类型插件 ft-ada-plugin 3. 全局补全 ft-ada-omni 3.1 使用 "gnat xref" 的全局补全 gnat-xref 3.2 使用 "ctags" 的全局补全 ada-ctags 4. 编译器支持 ada-compiler 4.1 GNAT compiler-gnat 4.2 Dec Ada compiler-decada 5. 参考资料 ada-reference 5.1 选项 ft-ada-options 5.2 命令 ft-ada-commands 5.3 变量 ft-ada-variables 5.4 常量 ft-ada-constants 5.5 函数 ft-ada-functions 6. 额外插件 ada-extra-plugins

1. 语法高亮~

ft-ada-syntax
此模式专为 2005 版 Ada(“Ada 2005”)而设计,其中包括对面向对象编程、受保护类型等的支持。它也处理为原始 Ada 语言(“Ada83”、“Ada87”、“Ada95”)编写的代码,尽管使用 Ada 2005 专用关键字的代码将被错误地着色(无论如何应该修复此类代码)。有关 Ada 的更多信息,请参阅 http://www.adapower.com
Ada 模式处理许多情况很干净。
例如,它知道“-5”中的“-”是数字,但“A-5”中的相同字符是运算符。通常,引用另一个编译单元的“with”或“use”子句以与 C 的“#include”相同的颜色着色。如果您有“Conditional”或“Repeat”组以不同的颜色着色,那么“end if”和“end loop”将作为这些各自组的一部分着色。
您可以使用 vim 的“highlight”命令将这些设置成不同的颜色(例如,要更改循环的显示方式,请输入命令“:hi Repeat”,后跟颜色规范;在简单的终端上,颜色规范 ctermfg=White 通常显示良好)。
您可以在此 Ada 模式中选择多个选项。有关完整列表,请参阅 ft-ada-options
要启用它们,请为该选项分配一个值。例如,要打开一个
let g:ada_standard_types = 1
要禁用它们,请使用“:unlet”。例如
unlet g:ada_standard_types
您只需使用“:”并在命令行中键入这些内容来临时设置这些内容,然后加载 Ada 文件。您可以通过将“let”命令(不带冒号)添加到您的 init.vim 文件中来使这些选项设置永久生效。
即使在慢速 (90Mhz) PC 上,此模式也能快速运行,但如果您发现性能不可接受,请打开 g:ada_withuse_ordinary
g:ada_folding 设置时,将添加语法折叠指令 (fold-syntax)。

2. 文件类型插件~

ft-ada-indent ft-ada-plugin
Ada 插件提供了对以下内容的支持
自动缩进 (indent.txt)
插入补全 (i_CTRL-N)
用户补全 (i_CTRL-X_CTRL-U)
标签搜索 (tagsrch.txt)
快速修复 (quickfix.txt)
退格处理 ('backspace')
注释处理 ('comments''commentstring')
该插件仅在打开 Ada 文件时激活 Ada 模式的功能,并将 Ada 相关条目添加到主菜单和弹出菜单。

3. 全局补全~

ft-ada-omni
Ada 全局补全 (i_CTRL-X_CTRL-O) 使用由“gnat xref -v”或“Universal Ctags” (https://ctags.io) 创建的标签数据库。完整功能将自动检测用于创建标签文件的工具。

3.1 使用 "gnat xref" 的全局补全~

gnat-xref
GNAT XREF 使用编译器内部信息 (ali-files) 来生成标签文件。这具有 100% 正确的优势,并可以选择深度嵌套分析。但是,代码必须编译,生成器相当慢,并且创建的标签文件仅包含每个条目的基本 Ctags 信息 - 不足以满足一些更高级的 Vim 代码浏览器插件。
注意:“gnat xref -v”使用起来非常棘手,因为它几乎没有诊断输出 - 如果没有打印任何内容,通常是参数错误。以下是一些重要提示
1) 您需要先编译代码,并使用“-aO”选项指向您的 .ali 文件。2) “gnat xref -v ../Include/adacl.ads”不起作用 - 请改用“gnat xref -v -aI../Include adacl.ads”。3) gnat xref -v -aI../Include *.ad? 不起作用 - 请使用“cd ../Include”,然后 gnat xref -v *.ad? 4) 项目管理器支持完全中断 - 不要尝试“gnat xref -Padacl.gpr”。5) 当标签文件已排序时,Vim 会更快 - 请使用“sort --unique --ignore-case --output=tags tags”。6) 请记住将“!_TAG_FILE_SORTED 2 %sort ui”作为第一行插入以标记已排序的文件。

3.2 使用 "ctags" 的全局补全~

ada-ctags
Universal/Exuberant Ctags 使用他们自己的多语言代码解析器。解析器非常快,会产生大量额外信息,并且可以在当前无法编译的文件上运行。
还有许多其他使用 Universal/Exuberant Ctags 的 Vim 工具。Universal Ctags 优先于 Exuberant Ctags,Exuberant Ctags 已经不再开发。
您需要安装 Universal Ctags,可从 https://ctags.io 获取。
Universal/Exuberant Ctags 的 Ada 解析器相当新 - 不要期待完全支持。

4. 编译器支持~

ada-compiler
Ada 模式支持多个 Ada 编译器,并在打开 Ada 源代码时自动加载在 g:ada_default_compiler 中设置的编译器。提供的编译器插件分为实际的编译器插件和一组支持函数和变量。这使得可以轻松开发专门的编译器插件,这些插件可以针对您的开发环境进行微调。

4.1 GNAT~

compiler-gnat
GNAT 是唯一可用的免费 (啤酒和言论) Ada 编译器。有几个版本可用,它们在使用的许可条款上有所不同。
GNAT 编译器插件将在按下 <F7> 时执行编译,然后立即显示结果。您可以通过设置来设置要使用的项目文件
call g:gnat.Set_Project_File ('my_project.gpr')
设置项目文件还会创建一个 Vim 会话 (views-sessions),因此 - 与 GPS 一样 - 打开的文件、窗口位置等将为所有项目分别保存。
gnat_members
GNAT 对象
g:gnat.Make()
g:gnat.Make() 调用 g:gnat.Make_Command 并在 quickfix 窗口中显示结果。
g:gnat.Pretty()
g:gnat.Pretty() 调用 g:gnat.Pretty_Program
g:gnat.Find()
g:gnat.Find() 调用 g:gnat.Find_Program
g:gnat.Tags()
g:gnat.Tags() 调用 g:gnat.Tags_Command
g:gnat.Set_Project_File()
g:gnat.Set_Project_File([{file}]) 设置 gnat 项目文件并加载相关会话。打开的项目将关闭并写入会话。如果在不带文件名的情况下调用,则文件选择器将打开以选择项目文件。如果使用空字符串调用,则项目和相关会话将关闭。
g:gnat.Project_File
g:gnat.Project_File string 当前项目文件。
g:gnat.Make_Command
g:gnat.Make_Command string 用于 g:gnat.Make() 的外部命令 ('makeprg')。
g:gnat.Pretty_Program
g:gnat.Pretty_Program string 用于 g:gnat.Pretty() 的外部命令
g:gnat.Find_Program
g:gnat.Find_Program string 用于 g:gnat.Find() 的外部命令
g:gnat.Tags_Command
g:gnat.Tags_Command string 用于 g:gnat.Tags() 的外部命令
g:gnat.Error_Format
g:gnat.Error_Format string 错误格式 ('errorformat')
Dec Ada (也称为 - 按时间顺序 - VAX Ada、Dec Ada、Compaq Ada 和 HP Ada) 是一个相当过时的 Ada 83 编译器。支持是基本的:<F7> 将编译当前单元。
Dec Ada 编译器需要传递包名而不是文件名作为参数。编译器插件支持通常的文件名约定,将文件转换为单元名。允许使用“-”和“__”作为分隔符。
decada_members
DEC ADA 对象
g:decada.Make()
g:decada.Make() function 调用 g:decada.Make_Command 并在 quickfix 窗口中显示结果。
g:decada.Unit_Name()
g:decada.Unit_Name() function 获取当前文件的单元名。
g:decada.Make_Command
g:decada.Make_Command string 用于 g:decada.Make() 的外部命令 ('makeprg')。
g:decada.Error_Format
g:decada.Error_Format string 错误格式 ('errorformat')。

5. 参考资料~

ada-reference

5.1 选项~

ft-ada-options
g:ada_standard_types
g:ada_standard_types bool (存在时为 true) 高亮显示包 Standard 中的类型(例如,“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) 高亮显示空格中的无关错误 ... g:ada_no_trail_space_error
但忽略行尾的尾随空格 g:ada_no_tab_space_error
但忽略空格后的制表符 g:ada_all_tab_usage
高亮显示所有制表符使用
g:ada_line_errors
g:ada_line_errors bool (存在时为 true) 高亮显示过长的行。 注意:此高亮选项非常占用 CPU。
g:ada_rainbow_color
g:ada_rainbow_color bool (存在时为 true) 对“('”和“')”使用彩虹色。为此,您需要 rainbow_parenthesis。
g:ada_folding
g:ada_folding set ("sigpft") 对 Ada 源代码使用折叠。's': 在加载时激活语法折叠 'p': 折叠包 'f': 折叠函数和过程 't': 折叠类型 'c': 折叠条件 'g': 在加载时激活 gnat 漂亮打印折叠 'i': 独立的“is”与上面的行一起折叠 'b': 独立的“begin”与上面的行一起折叠 'p': 独立的“private”与上面的行一起折叠 'x': 独立的“exception”与上面的行一起折叠 'i': 在加载时激活缩进折叠
注意:语法折叠处于早期(不可用)阶段,建议使用缩进或 gnat 漂亮打印折叠。
要使 gnat 漂亮打印折叠正常工作,建议使用以下设置: -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5
要使缩进折叠正常工作,建议使用以下设置: shiftwidth=3 softtabstop=3
g:ada_abbrev
g:ada_abbrev bool (存在时为 true) 添加一些缩写。此功能或多或少地被各种完成方法所取代。
g:ada_withuse_ordinary
g:ada_withuse_ordinary bool (存在时为 true) 将“with”和“use”显示为普通关键字(当用于引用其他编译单元时,它们通常会以特殊的方式突出显示)。
g:ada_begin_preproc
g:ada_begin_preproc bool (存在时为 true) 使用 C 预处理器命令的颜色显示所有类似于 begin 的关键字。
g:ada_omni_with_keywords
g:ada_omni_with_keywords 向 omni-completions (compl-omni) 添加关键字、编译指示和属性。 注意:您始终可以使用用户补全 (i_CTRL-X_CTRL-U) 来完成它们。
g:ada_extended_tagging
g:ada_extended_tagging enum ("jump", "list") 使用扩展标记,有两个选项可用 "jump": 使用 tjump 跳转。 "list": 添加标签快速修复列表。 正常标记不支持函数或运算符重载,因为这些功能在 C 中不可用,而标记最初是为 C 开发的。
g:ada_extended_completion
g:ada_extended_completion 为 <C-N><C-R> 补全 (i_CTRL-N) 使用扩展补全。 在此模式下,'.' 用作标识符的一部分,以便 'Object.Method' 或 'Package.Procedure' 可以一起完成。
g:ada_gnat_extensions
g:ada_gnat_extensions bool (true when exists) 支持 GNAT 扩展。
g:ada_with_gnat_project_files
g:ada_with_gnat_project_files bool (true when exists) 添加 gnat 项目文件关键字和属性。
g:ada_default_compiler
g:ada_default_compiler string 设置默认编译器。 当前支持的编译器包括 "gnat" 和 "decada"。
"exists" 类型是一个布尔值,当变量已定义时被视为 true,而当变量未定义时被视为 false。 设置变量的值无关紧要。

5.2 命令 ~

ft-ada-commands
:AdaRainbow :AdaRainbow
切换 '(' 和 ')' 的彩虹颜色 (g:ada_rainbow_color) 模式。
:AdaLines :AdaLines
切换行错误 (g:ada_line_errors) 显示。
:AdaSpaces :AdaSpaces
切换空格错误 (g:ada_space_errors) 显示。
:AdaTagDir :AdaTagDir
为当前文件的目录创建标签文件。
:AdaTagFile :AdaTagFile
为当前文件创建标签文件。
:AdaTypes :AdaTypes
切换标准类型 (g:ada_standard_types) 颜色。
:GnatFind :GnatFind
调用 g:gnat.Find()
:GnatPretty :GnatPretty
调用 g:gnat.Pretty()
:GnatTags :GnatTags
调用 g:gnat.Tags()

5.3 变量 ~

ft-ada-variables
g:gnat
g:gnat object 控制对象,管理 GNAT 编译。 当加载第一个 Ada 源代码时创建该对象,前提是 g:ada_default_compiler 设置为 "gnat"。 有关详细信息,请参阅 gnat_members
g:decada
g:decada object 控制对象,管理 Dec Ada 编译。 当加载第一个 Ada 源代码时创建该对象,前提是 g:ada_default_compiler 设置为 "decada"。 有关详细信息,请参阅 decada_members

5.4 常量 ~

ft-ada-constants
所有常量都被锁定。 有关详细信息,请参阅 :lockvar
g:ada#WordRegex
g:ada#WordRegex string 用于搜索 Ada 单词的正则表达式。
g:ada#DotWordRegex
g:ada#DotWordRegex string 用于搜索由点分隔的 Ada 单词的正则表达式。
g:ada#Comment
g:ada#Comment string 用于搜索 Ada 注释的正则表达式。
g:ada#Keywords
g:ada#Keywords list of dictionaries 关键字、属性等的列表,格式与 omni 补全使用的格式相同。 有关详细信息,请参阅 complete-items
g:ada#Ctags_Kinds
g:ada#Ctags_Kinds dictionary of lists Ada 支持 Ctags 生成的各种项目类型的字典。

5.5 函数 ~

ft-ada-functions
ada#Word([{line}, {col}]) ada#Word()
返回光标下(或在给定行/列)的 Ada 实体的完整名称,必要时剥离空格/换行符。
ada#List_Tag([{line}, {col}]) ada#Listtags()
在快速修复窗口中列出光标下(或在给定行/列)的 Ada 实体的所有出现位置。
ada#Jump_Tag ({ident}, {mode}) ada#Jump_Tag()
在标签跳转列表中列出光标下(或在给定行/列)的 Ada 实体的所有出现位置。 模式可以是 "tjump" 或 "stjump"。
ada#Create_Tags ({option}) ada#Create_Tags()
使用 Ctags 创建标签文件。 选项可以是 "file"(表示当前文件)、"dir"(表示当前文件的目录)或文件名。
gnat#Insert_Tags_Header() gnat#Insert_Tags_Header()
将标签文件头信息(!_TAG_)添加到当前文件中,这些信息在 GNAT XREF 输出中缺失。
ada#Switch_Syntax_Option ({option}) ada#Switch_Syntax_Option()
切换高亮选项的开启或关闭。 用于 Ada 菜单。
gnat#New()
gnat#New () 创建一个新的 gnat 对象。 有关详细信息,请参阅 g:gnat

6. 额外插件 ~

ada-extra-plugins
您可以选择安装以下额外插件。 它们与 Ada 配合良好,并增强了 Ada 模式的功能
backup.vim https://www.vim.org/scripts/script.php?script_id=1537 允许您保留任意数量的备份,无需担心丢失文件。
rainbow_parenthesis.vim https://www.vim.org/scripts/script.php?script_id=1561 非常有用,因为 Ada 只使用 '(' 和 ')'。
nerd_comments.vim https://www.vim.org/scripts/script.php?script_id=1218 针对几乎所有编程语言提供出色的注释和取消注释支持。
matchit.vim https://www.vim.org/scripts/script.php?script_id=39 任何语言的 '%' 跳转。 正常的 '%' 跳转只适用于 '{}' 样式的语言。 Ada 模式将设置必要的搜索模式。
taglist.vim https://www.vim.org/scripts/script.php?script_id=273 源代码浏览器侧边栏。 有一个针对 Ada 的补丁可用。
GNU Ada 项目分发 (http://gnuada.sourceforge.net) 的 Vim 包含所有上述内容。

vim: textwidth=78 nowrap tabstop=8 shiftwidth=4 softtabstop=4 noexpandtab

Main
命令索引
快速参考