vim-jp / vimdoc-ja / ft_ada

ft_ada - Vim日本語ドキュメント

メインヘルプファイルに戻る
*ft_ada.txt*    For Vim バージョン 8.0.  Last change: 2010 Jul 20


                    ADAファイルタイププラグイン リファレンスマニュアル

ADA                                                                   *ada.vim*

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*

このモードはオブジェクト指向プログラムや型保護等の機能がサポートされた、Adaの
2005年版("Ada 2005")を想定して作られている。Ada 2005で追加されたキーワードを使
用しているコード(そのようなコードは修正をすべき)は誤った強調色で表示してしまう
ものの、オリジナルのAda言語("Ada83", "Ada87", "Ada95")で書かれたコードも概ね取
り扱うことができる。Adaについての詳細はhttp://www.adapower.com/を参照。

Adaモードは多くの状況をきれいに取り扱う。

例えば、"-5" のなかの "-" は数字の一部として認識するが、"A-5" という表記の中の
同じ文字は演算子として認識される。通常、他のコンパイルユニットを参照する
"with" や "use" 節は、Cにおける "#include" と同じ強調色で表示される。
"Conditional" や "Repeat" グループを異なる強調色に設定すれば、"end if" と
"end loop" はそれぞれのグループの強調色で表示される。

これらにはコマンド "highlight" を使って異なる強調色を設定することができる。
(例: ループの色を変えるには ":hi Repeat" に続けて強調色指定を続ける; 単純な端
末上ではctermfg=Whiteと指定すると見やすいことが多い)

Adaモードではユーザーが設定できるオプションがいくつか存在する。その完全なリス
トは|ft-ada-options|を参照。

それらを有効化するには、オプションに値を設定する。
あるオプションを有効化する例:

   let ada_standard_types = 1

無効化するには ":unlet" を使用する。例:
   unlet ada_standard_types = 1

Adaファイルを読込む前に、コマンドラインで ":" とこれらのコマンドをキー入力する
ことで、設定することができる。ファイル "~/.vimrc" に、コロン (":") を除いて
"let" コマンドを追加すれば、これらのオプション設定を永続化することができる。

このモードは遅いコンピュータ(90MHz)上でも高速に動作するが、もしもパフォーマン
スが受け入れられないほど低いようならば、|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|)
 - Quick Fix            (|quickfix.txt|)
 - バックスペース制御   (|'backspace'|)
 - コメント制御         (|'comments'||'commentstring'|)

Adaファイルが開かれたときだけこのプラグインはAdaモード機能を有効化し、メニュー
やポップアップメニューにAda関連の項目を追加する。

==============================================================================
3. オムニ補完
                                                                 *ft-ada-omni*

Adaオムニ補完(|i_CTRL-X_CTRL-O|)は、"gnat xref -v" または "exuberant Ctags"
(http://ctags.sourceforge.net) によって作られたtagsデータベースを利用する。補
完関数は、tagsファイルがどちらのツールを使って作られたのかを自動的に判定する。

------------------------------------------------------------------------------
3.1 "gnat xref" を使ったオムニ補完
                                                                   *gnat-xref*

GNAT XREFはコンパイラの内部情報(aliファイル)を使ってtagsファイルを生成する。こ
れは100%正しいというアドバンテージと、深くネストした解析のオプションを持つ。し
かしそのコードはコンパイルが通らねばならず、生成器はとても遅く、生成されたtags
ファイルは各項目に対して基本的なCtags情報しか持たない。これではVimの高度なコー
ドブラウザープラグインに対しては十分ではない。

NOTE: "gnat xref -v" はとてもトリッキーで診断情報をほとんど出力しない。もし何
      も表示されなかったら、たいていパラメーターが間違っている。
      いくつか重要なtips:

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) タグファイルがソートされていることを示すために、1行目に "!_TAG_FILE_SORTED
   2 %sort ui" と入れるのを忘れないこと。

------------------------------------------------------------------------------
3.2 "ctags" を使ったオムニ補完
                                                                   *ada-ctags*

Exuberant Ctagsは内蔵の多言語コードパーサーを使う。このパーサーはとても高速で、
大量の付加情報を生成する(それゆえ "Exuberant Ctags" という名前がつけられている)。
また、コンパイルが通らないファイルに対しても実行できる。

Exuberant Ctagsを利用するVimのツールはたくさんある。

まず最初に、Ada対応のパッチを適用したExuberant Ctagsをインストールしなければな
らない。これはGNU Adaプロジェクトから入手できる。
(http://gnuada.sourceforge.net).

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')

プロジェクトファイルを設定すると、GPSと同じようにVimのセッション
(|views-sessions|)も作成される。これは開いているファイル・ウィンドウ位置などを
プロジェクトごとに記憶しておく。

                                                                *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     文字列
                現在のプロジェクトファイル。

                                                         *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'|)

------------------------------------------------------------------------------
4.2 Dec Ada
                                            *compiler-hpada* *compiler-decada*
                                        *compiler-vaxada* *compiler-compaqada*

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|を呼び出し、結果を|quickfix|ウィンドウ
                に表示する。

                                                        *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    切替 (存在するなら真)
                パッケージ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       切替 (存在するなら真)
                余計な空白文字をエラーとして強調する。
                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         切替 (存在するなら真)
                長すぎる行を強調する。Note: このオプションはCPUに多大な負荷が
                かかる。

                                                         *g:ada_rainbow_color*
g:ada_rainbow_color       切替 (存在するなら真)
                '(' と ')' にレインボーカラーを使う。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':    読み込み時にインデント折り畳みを有効化する。

                Note: 構文折り畳みは初期段階(使用に耐えない)であり、インデント
                        かgnat整形折り畳みが勧められている。

                gnat整形折り畳みを使うときは、次の設定が勧められている:
                -cl3 -M79 -c2 -c3 -c4 -A1 -A2 -A3 -A4 -A5

                インデント折り畳みを使うときは、次の設定が勧められている:
                shiftwidth=3 softtabstop=3

                                                                *g:ada_abbrev*
g:ada_abbrev              切替 (存在するなら真)
                いくつかの短縮入力を追加する。この機能は様々な補完方法によりい
                くぶん取って代わられている。

                                                      *g:ada_withuse_ordinary*
g:ada_withuse_ordinary    切替 (存在するなら真)
                "with" と "use" を通常のキーワードとして表示する(これらが他の
                コンパイルユニットへの参照として使われた場合には、特別に通常の
                強調として表示する)。

                                                         *g:ada_begin_preproc*
g:ada_begin_preproc       切替 (存在するなら真)
                全てのbegin-likeなキーワードをCのプリプロセッサー命令の色で強
                調する。

                                                    *g:ada_omni_with_keywords*
g:ada_omni_with_keywords
                オムニ補完(|compl-omni|)にキーワード、プラグマ、属性を追加する。
                Note: いつでも補完して、それからユーザー定義補完
                (|i_CTRL-X_CTRL-U|)をすることができる。

                                                      *g:ada_extended_tagging*
g:ada_extended_tagging    列挙 ('jump''list')
                拡張タグ機能を使う。2つのオプションがある
                    'jump': ジャンプするのにtjumpを使う
                    'list': QuickFixリストにタグを追加する
                普通のタグ機能は関数や演算子のオーバーロードに対応していない。
                これらの機能が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     切替 (存在するなら真)
                 GNATの拡張に対応する。

                                               *g:ada_with_gnat_project_files*
g:ada_with_gnat_project_files    切替 (存在するなら真)
                 gnatプロジェクトファイルのキーワードと属性を追加する。

                                                      *g:ada_default_compiler*
g:ada_default_compiler    文字列
                デフォルトのコンパイラを設定する。現在対応しているのは 'gnat'
                と 'decada' である。

「存在するなら真」の変数は、その変数が定義されているときは真で、定義されていな
いときは偽となる。その変数がどんな値であろうとも、違いはない。

------------------------------------------------------------------------------
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*
                現在のファイルのディレクトリに対してtagsファイルを作成する。

:AdaTagFile                                                      *:AdaTagFile*
                現在のファイルに対してtagsファイルを作成する。

: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          辞書のリスト
                キーワード、属性などのリスト。オムニ補完で用いられる形式。詳し
                くは|complete-items|を参照。

                                                           *g:ada#Ctags_Kinds*
g:ada#Ctags_Kinds       リストの辞書
                CtagsがAdaのタグを生成する際の、要素の種類の辞書。

------------------------------------------------------------------------------
5.5 関数
                                                            *ft-ada-functions*

ada#Word([{line}{col}])                                         *ada#Word()*
                カーソル下(または指定の行・桁)のAda要素のフルネームを返す。必
                要に応じてスペース・改行は取り除かれる。

ada#List_Tag([{line}{col}])                                 *ada#Listtags()*
                カーソル下(または指定の行・桁)のAda要素の全ての出現位置を
                QuickFixウィンドウ内にリストする。

ada#Jump_Tag ({ident}{mode})                                *ada#Jump_Tag()*
                カーソル下(または指定の行・桁)のAda要素の全ての出現位置を
                タグジャンプリスト内にリストする。引数{mode}
                'tjump''stjump' のどちらかとする。

ada#Create_Tags ({option})                                 *ada#Create_Tags()*
                Ctagsを使ってtagsファイルを作成する。引数{option}が '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
        http://www.vim.org/scripts/script.php?script_id=1537
        可能なかぎりたくさんのバックアップを取ってくれ、自分自身でやる必要がな
        くなる。

rainbow_parenthsis.vim
        http://www.vim.org/scripts/script.php?script_id=1561
        Adaは '(' と ')' しか使わないのでとても助かる。

nerd_comments.vim
        http://www.vim.org/scripts/script.php?script_id=1218
        ほとんど全てのプログラミング言語に対応するコメント化・アンコメント化

matchit.vim
        http://www.vim.org/scripts/script.php?script_id=39
        ほとんどの言語に対応する '%' でのジャンプ。通常の '%' は '{}' 形式の言
        語に対してだけ役に立つ。Adaモードはこれに必要な検索パターンを設定する。

taglist.vim
        http://www.vim.org/scripts/script.php?script_id=273
        ソースコードエクスプローラーサイドバー。Adaで利用可能にするパッチがあ
        る。

GNU Adaプロジェクトが配布するVimは以上を全て含んでいる。

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