-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathft_ada.jax
505 lines (393 loc) · 21.8 KB
/
ft_ada.jax
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
*ft_ada.txt* For Vim バージョン 9.1. Last change: 2024 Sep 29
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" または "Universal Ctags"
(https://ctags.io) によって作られた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*
Universal/Exuberant Ctags は内蔵の多言語コードパーサーを使う。このパーサーはと
ても高速で、大量の付加情報を生成する。また、コンパイルが通らないファイルに対し
ても実行できる。
Universal/Exuberant Ctags を使用する他のVimのツールもたくさんある。
Exuberant ctags は開発されなくなったので、Universal 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')
<
プロジェクトファイルを設定すると、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