Ft_ada

Nvim :help 頁面,從 原始碼 使用 tree-sitter-vimdoc 解析器產生


ADA 檔案類型外掛程式參考手冊~

ADA

1. 語法高亮 ft-ada-syntax 2. 檔案類型外掛程式 ft-ada-plugin 3. Omni 自動完成 ft-ada-omni 3.1 使用 "gnat xref" 的 Omni 自動完成 gnat-xref 3.2 使用 "ctags" 的 Omni 自動完成 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
此模式是為 Ada 的 2005 版本("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. Omni 自動完成 ~

ft-ada-omni
Ada Omni 自動完成 (i_CTRL-X_CTRL-O) 使用由 "gnat xref -v" 或 "Universal Ctags" (https://ctags.io) 建立的標籤資料庫。完整函式將會自動偵測使用哪個工具來建立標籤檔案。

3.1 使用 "gnat xref" 的 Omni 自動完成 ~

gnat-xref
GNAT XREF 使用編譯器內部資訊 (ali 檔案) 來產生標籤檔案。此方法的優點是 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" 的 Omni 自動完成~

ada-ctags
Universal/Exuberant Ctags 使用它們自己的多語言程式碼剖析器。剖析器速度相當快,會產生許多額外資訊,並且可以在目前未編譯的檔案上執行。
還有許多其他使用 Universal/Exuberant Ctags 的 Vim 工具。Universal 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,並在 快速修正 視窗內顯示結果。
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([{檔案}]) 設定 gnat 專案檔案並載入關聯的會期。開啟的專案將會關閉,並寫入會期。如果呼叫時沒有檔案名稱,則會開啟檔案選取器以選取專案檔案。如果呼叫時使用空字串,則會關閉專案和關聯的會期。
g:gnat.Project_File
g:gnat.Project_File 字串 目前的專案檔案。
g:gnat.Make_Command
g:gnat.Make_Command 字串 用於 g:gnat.Make() 的外部命令 ('makeprg')。
g:gnat.Pretty_Program
g:gnat.Pretty_Program 字串 用於 g:gnat.Pretty() 的外部命令
g:gnat.Find_Program
g:gnat.Find_Program 字串 用於 g:gnat.Find() 的外部命令
g:gnat.Tags_Command
g:gnat.Tags_Command 字串 用於 g:gnat.Tags() 的外部命令
g:gnat.Error_Format
g:gnat.Error_Format 字串 錯誤格式 ('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() 函式 呼叫 g:decada.Make_Command,並在 快速修正 視窗內顯示結果。
g:decada.Unit_Name()
g:decada.Unit_Name() 函式 取得目前檔案的單元名稱。
g:decada.Make_Command
g:decada.Make_Command 字串 用於 g:decada.Make() 的外部命令 ('makeprg')。
g:decada.Error_Format
g:decada.Error_Format 字串 錯誤格式 ('errorformat')。

5. 參考資料 ~

ada-reference

5.1 選項 ~

ft-ada-options
g:ada_standard_types
g:ada_standard_types 布林值 (存在時為 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 布林值 (存在時為 true) 反白顯示空格中的多餘錯誤 ... g:ada_no_trail_space_error
但忽略行尾的尾隨空格 g:ada_no_tab_space_error
但忽略空格後的 Tab 鍵 g:ada_all_tab_usage
反白顯示所有 Tab 鍵使用
g:ada_line_errors
g:ada_line_errors 布林值 (存在時為 true) 反白顯示過長的行。注意:此反白顯示選項相當耗用 CPU 資源。
g:ada_rainbow_color
g:ada_rainbow_color 布林值 (存在時為 true) 為 '(' 和 ')' 使用彩虹顏色。您需要 rainbow_parenthesis 才能使用此功能。
g:ada_folding
g:ada_folding 設定 ("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 布林值 (存在時為 true) 新增一些縮寫。此功能或多或少已被各種完成方法取代。
g:ada_withuse_ordinary
g:ada_withuse_ordinary 布林值 (存在時為 true) 將 "with" 和 "use" 顯示為一般關鍵字 (當用於參考其他編譯單元時,它們通常會特別反白顯示)。
g:ada_begin_preproc
g:ada_begin_preproc 布林值 (存在時為 true) 使用 C 前置處理器命令的著色來顯示所有類似 begin 的關鍵字。
g:ada_omni_with_keywords
g:ada_omni_with_keywords 為 omni-completions (compl-omni) 新增關鍵字、編譯指示 (Pragmas) 和屬性。注意:您隨時可以使用使用者補全功能 (i_CTRL-X_CTRL-U) 來完成。
g:ada_extended_tagging
g:ada_extended_tagging 列舉 ("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 布林值 (存在時為 true) 支援 GNAT 擴展。
g:ada_with_gnat_project_files
g:ada_with_gnat_project_files 布林值 (存在時為 true) 新增 gnat 專案檔關鍵字和屬性。
g:ada_default_compiler
g:ada_default_compiler 字串 設定預設編譯器。目前支援 "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 物件 控制物件,管理 GNAT 編譯。當載入第一個 Ada 原始碼時,如果 g:ada_default_compiler 設定為 "gnat",則會建立此物件。請參閱 gnat_members 取得詳細資訊。
g:decada
g:decada 物件 控制物件,管理 Dec Ada 編譯。當載入第一個 Ada 原始碼時,如果 g:ada_default_compiler 設定為 "decada",則會建立此物件。請參閱 decada_members 取得詳細資訊。

5.4 常數 ~

ft-ada-constants
所有常數都已鎖定。請參閱 :lockvar 取得詳細資訊。
g:ada#WordRegex
g:ada#WordRegex 字串 用於搜尋 Ada 單字的正規表示式。
g:ada#DotWordRegex
g:ada#DotWordRegex 字串 用於搜尋以點分隔的 Ada 單字的正規表示式。
g:ada#Comment
g:ada#Comment 字串 用於搜尋 Ada 註解的正規表示式。
g:ada#Keywords
g:ada#Keywords 字典列表 以 omni 補全使用的格式列出的關鍵字、屬性等等。請參閱 complete-items 取得詳細資訊。
g:ada#Ctags_Kinds
g:ada#Ctags_Kinds 字典列表 字典,其中包含 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()
將 GNAT XREF 輸出中遺失的標籤檔標頭資訊 (!_TAG_) 新增至目前檔案。
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 的修補程式。
Vim 的 GNU Ada 專案發行版 (http://gnuada.sourceforge.net) 包含以上所有內容。

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

主頁
命令索引
快速參考