コード支援機能のリファレンス

提供: RAD Studio
移動先: 案内検索

コード エディタ(IDE チュートリアル):インデックス への移動


支援機能とは、コード エディタに組み込まれている機能の一部で、コード パラメータ ヒント、コード ヒント、ヘルプ インサイト、コード補完、クラス補完、エラー インサイト、コード参照など、コーディング作業に役立つものを指します。 これらの機能は、コードによく挿入されるステートメントの特定、プロパティやメソッドの選択などに役立ちます。 これらの機能の一部について、以下の各セクションで詳しく説明します。

コード支援機能を有効にし、設定するには、[ツール|オプション...|ユーザー インターフェイス|エディタ設定オプション|ソース]を選択し、[支援機能]オプションをクリックします。

メモ:

支援機能は、言語ごとに定義されています。

Delphi 使用時、LSP(Language Server Protocol)か(デフォルト)、従来の実装を支援機能に使用することができます。

C++ の場合、IDE は自動的に LSP(Language Server Protocol)または従来の支援機能プロバイダを、使用されているコンパイラによって(CLang またはクラシック)使用します。

Delphi LSP(Language Server Protocol)を使用する支援機能

LSP(Language Server Protocal)は、IDE と通信する個別のサーバー プロセスを介して言語サービスを提供する仕様です。 このため、コード支援機能は個別のプロセスによって、非同期に提供されます。

メモ: LSP(Language Server Protocal) を使用する支援機能は、通常のコード編集時だけでなく、デバッグ時に使用できます。

言語

言語は、[オプション|言語]設定ペインで定義されており、ここでは利用可能なすべての言語を確認することができます。 また、新しい言語を作成することもできます。

Language.png

エディタ設定のオプションと構文の強調表示

エディタ設定オプションと構文強調表示は、言語ごとに定義されています。 これらは、[オプション...|ユーザー インターフェイス|エディタ設定オプション|ソース][オプション]をクリックすることで確認できます。

Editor.png

この設定ペインでは、言語を選択することができます。 すると、その言語について、エディタ設定オプションと共に、その言語で使用される構文強調表示も確認することができます。

Syntax highlighter.png

支援機能 / LSP マネージャの変更

Delphi LSP がデフォルトでは有効化されています。 [Delphi プロジェクト|タスク マネージャ]を開き、DelphiLSP.exe プロセスを探すことで、IDE は Delphi LSP を使用しているかどうか、チェックすることができます。

言語の最後のタブは、支援機能です。 ここでは、ユーザー エディタ フォント と、一連の 支援機能 設定があります。

支援機能マネージャは、言語に対して支援機能を提供します: そのマネージャがその言語を対象としていない場合でも、そこに一覧されているマネージャにこれを設定できます。

メモ:

支援機能マネージャ には、IDE に登録されているすべてのマネージャが一覧されます。

Delphi: 支援機能マネージャを、クラシックまたはLSP(Language Server Protocol)から選択することができます。

C++: 支援機能マネージャは変更できません。 クラシックまたは Clang のコンパイラに対して、自動的にクラシックまたは LSP を使用します。
注意: 使用中の言語を対象としていないものに、支援機能マネージャを変更することは推奨されません。

LSP または クラシック(従来のもの) のどちらの支援機能実装を使用するか、Delphi を変更するには、次のように選択します:

  • Delphi(LSP: Language Server Protocol): 新しい LSP サポート。
  • Delphi(従来の支援機能): 10.3.3 以前で使用されていた支援機能の古い実装です。このオプションを選択した場合、LSP はオフにします。

Code insight.png

また、新しい LSP マネージャを作成することもできます。[新規作成]をクリックすると、LSP サーバー実行可能ファイルとオプション群を指定することができるダイアログが表示されます。これには、呼び名、言語識別し、サーバーが強制的に再起動されるまでのタイムアウト、その他初期化 JSON RPC 呼び出しに挿入されるサーバー固有の初期化オプションなどが含まれます。

このオプションを使用して、Python やその他の言語に対して、サーバーを追加することができます。

メモ: RAD Studio は、標準 I/O(コンソール I/O)上で通信するサーバーのみをサポートします。

New LSP.png

コード補完 — Ctrl+Space

コード補完機能では、識別子のいずれかにおいて、型付き文字列を含むすべての項目のドロップダウン リストを表示します。 コード補完を行うには、コード エディタの使用時、Ctrl+Space を押します。 文字を選択し、Enter を押して、コードのカーソル位置にテキストを挿入します。

特定の言語のコード補完を呼び出すには、次の方法を使用します。

  • C++
  • Ctrl+Space キーを押します(常にコード補完が起動されます)。
  • . または -> を入力([支援機能]ページで、自動呼び出しが有効なときにのみ動作します)。
  • コード補完をキャンセルするには、Esc キーを押します。

CodeCompletionC++.PNG

メモ: 拡張 C++ コンパイラの場合、この機能は言語サーバー プロトコルのサーバーを使用します。 これは非同期であり、ブロッキングを行いません。
  • Delphi
  • Ctrl+Space キーを押します(常にコード補完が起動されます)。
  • . を入力([支援機能]ページで、自動呼び出しが有効なときにのみ動作します)。
  • コード補完をキャンセルするには、Esc キーを押します。

Codecompletiondelphi.png

文字を入力する際、選択/マッチングの動作は、入力されるにつれ、次のように認識していきます。

  • 入力されたものと識別子で完全一致するものがあった場合、それを選択。
  • そうでなければ、入力されたもので始まる最初の識別子を選択。
  • そうでなければ、入力されたものを含む最初の識別子を選択。

たとえば、エディタで MyControl と入力、コード補完を呼び出し、その後 rect を入力すると、Rect で始まるプロパティやメソッドだけでなく、ClientRect、BoundsRect なども一致します。識別子文字列内に rect を含むものはすべて表示されます。

コード補完は次のような状況で、正しい結果を含め、正しく機能します:

  • まだディスク上に存在しない
  • プロジェクトもユニットもディスク上に存在しない新しいプロジェクト
  • 現在の IDE コード内で補完結果に影響を与える変更が行われている、まだ保存されていない、変更済みユニット
  • ターゲット プラットフォームや他のプロジェクト オプションを変更したときの結果は正しい(そして正しく変更された)
メモ:
  • マッチングでは、大文字小文字は区別されません。
  • コード補完は、匿名メソッド内では動作しません。

Parameter Completion — Ctrl+Shift+Space

コード エディタ使用時に、関数呼び出しの左かっこを開いた後、または Ctrl+Shift+Space を押した後に、自動的に呼び出されます。ポップアップ ウィンドウに、メソッド呼び出しの引数の名前と型をヒントとして表示します。 選択範囲内の文字と一致検索させる文字を入力し、Return キーを押して、コードのカーソル位置にテキストを挿入できます。

例:

  • C++

Parametercompletionc++.png

メモ: 拡張 C++ コンパイラの場合、この機能は言語サーバー プロトコルのサーバーを使用します。 これは非同期であり、ブロッキングを行いません。
  • Delphi

Parametercompletiondelphi.png

コード ヒント

コード ヒントでは、型や宣言元のファイルと行番号などのシンボルに関する情報をヒントとして表示します。 コード エディタ で作業中に、マウス ポインタをコード内の識別子の上に置くことで、コード ヒントを表示させることができます。

メモ: ヘルプ インサイト機能が無効になっている場合には、コード ヒントは Delphi に対してのみ動作します。ヘルプ インサイトを無効にするには、[ヘルプ インサイト][ツール|オプション...|エディタ設定|ヘルプ インサイト] ダイアログ ボックス内)のチェックを外します。

例:

Code hint.png

ツールチップ式評価

カーソルでポイントした、変数の現在の値が表示されます。 この機能は、デバッグ セッション中にプログラムの実行が一時停止したとき、使用できます。

例:

  • C++

Tooltip expresion c++.png

  • Delphi

Tooltip evaluation delphi.png

ツールチップ インサイト

シンボルの上にマウスを持っていくと発生します。

ツールチップ|シンボル インサイト

コード エディタ内でシンボルにカーソルでポイントすると、その識別子の宣言情報がツールチップ ウィンドウ内に表示されます。

例:

  • C++

Tooltip symbol c++.png

  • Delphi

Tooltip symbol delphi.png

ツールチップ|ヘルプ インサイト

コード エディタ内で記号の上にマウス ポインタを置くと、ツールチップ ウィンドウに簡単な説明が表示されます。

例:

  • C++

Tooltip help insight c++.png

メモ: これは、クラシック コンパイラの使用時のみ利用できます。
  • Delphi

Tooltip help insight delphi.png

定義に移動

これは、特定の型または変数が元々どこで定義されていたかを見つけます。[定義に移動]を呼び出すには、変数の上で Ctrl-クリックを押すか、右クリックし、[定義の検索]を選択します。

例:

  • C++

Go to definition c++.png

  • Delphi

Go to definition delphi.png

ブロック補完 — Enter

コード エディタで作業中に、正しく閉じられていないコード ブロックがある場合は、そこで Enter キーを押すと、現在のカーソル位置の後の空行にブロックを閉じるためのトークンが挿入されます。

ドロップダウン メニューでは、既存のステートメントをブロック記号で囲む場合のブロック補完動作を設定します。

  • 改行なし - 作成したブロックの後にカかいーソルを置きます。
  • 改行あり - 作成したブロックの内部にカーソルを置きます。
  • 新しいブロックのみ - ブロック補完機能を新しいブロックの開始時にのみ呼び出します。

例:

  • C++

関数を { で記述開始し、ENTER を押すと、コード エディタ が自動的に次のようになるよう文を完成させます: { };

BlockCompletionC++.png

  • Delphi

トークン begin を入力し、ENTER を押すと、コード エディタ が自動的に次のようになるよう文を完成させます: begin end;

BlockCompletionDelphi.png

エラー インサイト

エラー インサイト機能では、無効なコードに赤い下線が付きます。 無効なテキストをカーソルでポイントすると、ツールチップ ウィンドウが開き、可能性のあるエラーの原因が表示されます。

さらに、その式で発生したエラーのリストが[構造]ビューの[エラー]ノードに表示されます。

例:

  • C++

Error insight c++.png

  • Delphi

Error insight delphi.png

ヘルプ インサイト — Ctrl+Shift+H

ヘルプ インサイトは、型、ファイル、宣言された行番号といったシンボルに関する情報が記載されたヒントや、シンボルに関連付けられている XML ドキュメントがある場合はそれも表示します。

ヘルプ インサイトを呼び出すには、コード エディタで作業中に、マウス ポインタをコード内の識別子の上に置きます。 Ctrl+Shift+H を押して、ヘルプ インサイトを呼び出すこともできます。

クラス補完 — Ctrl+Shift+C

クラス補完は、宣言されるクラス メンバのスケルトン コードを生成することで、新規クラスの定義と実装を簡略化します。

ユニットの interface セクションでクラス宣言内にカーソルを置き、Ctrl+Shift+C を押します。 未完成のプロパティ宣言があれば、すべて補完されます。

実装が必要なすべてのメソッドに対しては、空のメソッドが implementation セクションに追加されます。

クラス補完は、オプション[カーソル位置のクラスを補完]コード エディタのコンテキスト メニューから選択することで、実行できます。

コード参照 — Ctrl+Click

コード エディタを使用して Ctrl+クリック を使用して、ある識別子を定義しているコードに、自動的に "ジャンプ" することができます。コードを参照するには、任意のクラス、変数、プロパティ、メソッドなどの識別子の名前の上にマウス ポインタをホバリングさせ、Ctrl キーを押します。

マウス ポインタが手の形になり、識別子が下線付きで強調表示されます。 強調表示されている識別子をクリックすると、コード エディタは、必要に応じてソース ファイルを開き、その識別子の宣言部分にジャンプします。識別子を右クリックし[定義の検索]を選択しても、同じ結果になります。 Alt キーを押しながら左矢印キーを押すと、参照元の場所に戻ります。

コード参照で検索したり開くことができるのは、プロジェクトの検索パスまたはソース パスに含まれているユニット、あるいは製品の参照パスまたはライブラリ パスに含まれているユニットだけです。 以下の順にディレクトリが検索されます。

  1. プロジェクトの検索パス(Delphi の場合)またはインクルード パス(C++ の場合)
  2. プロジェクトのソース パス(プロジェクトが保存されたディレクトリ)
  3. グローバル参照パス
  4. グローバル ライブラリ パス
  5. ライブラリ パス(IDE で開いているプロジェクトがない場合にのみ検索されます)

これらのパスは、それぞれ該当する値を編集することで、変更することができます:

識別子の宣言部に移動する 〔Ctrl〕+クリック の利用は、代わりに、〔Alt〕+〔Up〕(矢印)をp利用することもできます。 その他のキーの組み合わせ利用については、「デフォルトのキーボード ショートカット」を参照してください。

詳細オプション

ツール API サポート

支援機能サポートは、主に LSP(Language Server Protocol)周りに焦点を当てており、上記のダイアログを使用して、新しい LSP サーバーを作成することができる、汎用 LSP サポートがあります。ただし、IDE は 2 つのことを実装しています: 汎用的な非同期の支援機能、そして次に LSP サポートです。これは、非同期支援機能の特殊な実装の 1 つにあたります。

ToolsAPI は、非同期支援機能に対して、数多くの新しい型とインターフェイスを定義しています。LSP はこれらのインターフェイスを使用していますが、必要に応じて非同期のコード支援機能プロバイダを、任意の実装で記述することができます。

インターフェイスは ToolsAPI.pas に置かれます:

  • IOTAAsyncCodeInsightManager は、汎用非同期支援機能マネージャの実装の、メイン インターフェイスです。これは、数多くのコールバックを使っており、そこで定義されています。
  • IOTACodeInsightUIOverride は、特定の UI の動作を上書きするために使用されます。

不具合のファイリングとログ ファイル

ログ ファイルを有効にするには、レジストリを開きます:

  • キーを作成:

HKEY_CURRENT_USER\Software\Embarcadero\BDS\21.0\LSP

  • DWORD 値を、名前 DelphiLSPLog、16 進数値 $ff または 10 進数値 255 で作成

ログ ファイルは C:\Users\<User>\AppData\Local\Temp\DelphiLSP にできます。

Quality Portal のすべてのバグ レポートにログ ファイルを必ず含めてください。問題の原因を追跡するのに非常に役立ちます。

次へ

リファクタリング