コード エディタ

提供: Appmethod Topics
移動先: 案内検索

Appmethod 入門 への移動


コード エディタフォーム デザイナは、IDE ウィンドウの中央のペインにあります。コード エディタは、構文強調表示、複数取り消し機能、および言語要素の状況依存型ヘルプを備えたフル機能のカスタマイズ可能な UTF8 エディタです。

アプリケーションのユーザー インターフェイスを設計する際、Appmethod によって基底のコードが生成されます。オブジェクトのプロパティを変更すると、変更内容が自動的にソース ファイルに反映されます。

また、すべてのプログラムが同じ特性を共有するので、Appmethod によって自動生成されたコードを使用して、すぐに作業を開始できます。自動生成コードは、プログラムを作成するために検討できるアウトラインと考えることができます。

コード エディタのコンテキスト メニューは、コード エディタコンテキスト メニューのコマンドを説明しています。

ビデオ『Appmethod Code Editor(Appmethod 2010 エディタ)』(英語版、Mike Rozlog 解説)では、エディタ機能を理解するうえで有用なヒントや秘訣が紹介されています。

コード エディタは、コードの記述に役立つ次の機能を備えています。

変更バー

コード エディタ の左マージンに表示される緑色の変更バーは、現在の編集セッションで変更されていない行を示します。黄色の変更バーは、最後の[ファイル > 保存]操作の後に変更が行われたことを示します。

ただし、この変更バーの色(デフォルトの緑色と黄色)は、カスタマイズして別の色に変更できます。[ツール|オプション...|編集オプション| を選択します。[要素]ドロップダウン メニューで、[変更された行]を選択してから、前景色や背景色を変更します。

コードのインデント

Tab キーを使用すると、コード エディタの現在の行、またはコードのブロックをインデントできます。Tab キーがインデントするスペースの数は、[ツール|オプション...|エディタ設定|ソース オプション]ダイアログ ボックスの [Block indent]オプションによって決まります。

  • コードのある行をインデントするには、その行の先頭にカーソルを置いて Tab キーを押します。
  • コードのあるブロック全体をインデントするには、そのコード ブロックを強調表示させて Tab キーを押します。
  • テキストを左側に移動("インデントを解除")するには、Shift+Tab キーを使います。

コードの整形

Appmethod には、カスタマイズ可能なソース コード フォーマッタが用意されています。コード エディタで、Object Pascal や C++ のコードを編集する際に、[ソースの整形]コンテキスト メニュー コマンド(または、[編集|ソースの整形]メニュー コマンド)を適用して、ソース コードを整形することができます。インデントスペース改行大文字表記整列といった各整形オプションは、[オプション]ダイアログ ボックス([ツール|オプション...|フォーマッタ])の[フォーマッタ]グループ下で、設定することができます。[ソースの整形]コマンドはコードを自動で整形することに注意してください。[オプション]ダイアログ ボックスで指定された整形オプションだけが考慮され、コード エディタで手動で実行した整形の結果はすべて上書きされます。たとえば、手動で挿入したコードのインデントは無視されます。 コード ブロックを選択してから[ソースの整形]コマンドを呼び出すと、選択したブロックだけを整形できます。

メモ: ツール オプションのエディタ設定ページでは、その他にも整形オプションを提供しており、それらには、ソース オプション表示キーの割り当て支援機能などがあります。「コード エディタをカスタマイズする」を参照してください。

支援機能

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

支援機能 を呼び出すには、コード エディタ の使用中に Ctrl+Space を押します。ポップアップ ウィンドウに、現在のカーソル位置で有効なシンボルのリストが表示されます。

支援機能を有効にし、構成するには、[ツール|オプション...|エディタ設定]を選択し、[支援機能]をクリックします。

Object Pascal 言語を使用している場合、プロパティの read/write 句で参照されるインターフェイス メソッド宣言は、ポップアップ ウィンドウに表示されません。このウィンドウには、インターフェイス型で宣言されているスタンドアロン メソッドとプロパティだけが表示されます。支援機能は、uses 句のすべてのユニットに含まれる似た名前の定数に基づいて、WM_xxx、CM_xxx、および CN_xxx 形式のメッセージ メソッドをサポートします。

コード パラメータ ヒント

メソッド呼び出しの引数の名前と型をヒントとして表示します。呼び出し(ShowMessage ( | ) など)のかっこの中で使用できます。

コード パラメータ ヒントを呼び出すには、Ctrl+Shift+Space を押します。

コード ヒント

シンボルの型、宣言元のファイルと行番号などの情報をヒントとして表示します。

コード ヒントを表示するには、コード エディタで作業中に、マウス ポインタをコード内の識別子の上に置きます。

メモ: コード ヒントは、Object Pascal では、ヘルプ インサイト機能を無効にした場合にのみ動作します。ヘルプ インサイトを無効にするには、[ヘルプ インサイト][ツール|オプション...|エディタ設定|ヘルプ インサイト] ダイアログ ボックス内)の選択をキャンセルします。

ヘルプ インサイト

ヘルプ インサイトは、シンボルについての情報(型、ファイル、宣言されている行番号など)を、そのシンボルに関連付けられている XML ドキュメント と共に(ある場合には)、ヒントとして表示します。

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

コード補完

コード補完機能は、現在のカーソル位置で使用できるシンボルのドロップダウン リストを表示します。特定の言語のコード補完を呼び出すには、次の方法を使用します。

  • Object Pascal の場合:
    • Ctrl+Space キーを押します(常にコード補完が起動されます)。
    • . を入力します([支援機能]ページにおいて[自動起動]が有効になっている場合にのみ動作します)。
  • C++ の場合:
    • Ctrl+Space キーを押します(常にコード補完が起動されます)。
    • . または -> を入力します([支援機能]ページにおいて[自動起動]が有効になっている場合にのみ動作します)。

コード補完をキャンセルするには、Esc キーを押します。

クラス補完

クラス補完は、宣言されるクラス メンバのスケルトン コードを生成することで、新規クラスの定義と実装を簡略化します。ユニットの interface セクションにあるクラス宣言内にカーソルを置き、Ctrl+Shift+Cを押す(または、右クリックしてコード エディタのコンテキスト メニューから[カーソル位置のクラスを補完]を選択)することにより、すべての未完成のプロパティ宣言が補完されます。実装が必要なすべてのメソッドに対しては、空のメソッドが implementation セクションに追加されます。

また、クラス補完を利用して、imprementation セクションで定義したメソッドのための、インターフェイス宣言を補完することも可能です。

ブロック補完

コード エディタでの作業中に、正しく閉じられていないコード ブロックがある場合、そこで ないコード ブロックがある場合は、そこで Enter キーを押すと、現在のカーソル位置の後にある次の空行にブロックを閉じるためのトークンが挿入されます。たとえば、Object Pascal 言語でコード エディタを使用している場合、トークン begin を入力し、Enter キーを押すと、begin end になるように自動的にステートメントが補完されます。この機能は C++ 言語でも同様に動作します。

コード参照(Ctrl+クリック)

コード エディタを使用して FireMonkey フォーム アプリケーションなどのアプリケーションを編集中に、Ctrl+クリックすると、ある識別子を定義しているコードに、自動的に "ジャンプ" できます。コードを参照するには、任意のクラス、変数、プロパティ、メソッドなどの識別子の名前の上にマウス ポインタを移動させ、Ctrl キーを押します。マウス ポインタが手の形になり、識別子が下線付きで強調表示されてから、その識別子をクリックすると、コード エディタがその識別子の宣言にジャンプし、必要に応じてソース ファイルを開きます。

識別子を右クリックしてコンテキスト メニューの[定義の検索]をクリックしても、同じことができます。

コード参照で検索して開くことができるのは、プロジェクトの検索パスおよびグローバル参照パスにあるユニットだけです。以下の順にディレクトリが検索されます。

  1. プロジェクト指定の Object Pascal の[検索パス][プロジェクト|オプション...|Object Pascal コンパイラ])、または C++ の[インクルード ファイルの検索パス][プロジェクト|オプション...|ディレクトリと条件定義])のいずれか。
  2. グローバルな[参照パス](Object Pascal の場合は[ツール|オプション...|環境オプション|Object Pascal オプション|ライブラリ]、C++ の場合は[ツール|オプション...|環境オプション|C++ オプション|パスとディレクトリ])。

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

ナビゲーション ツールバー

ナビゲーション ツールバーは、コード エディタの上部に表示されるもので、コード内を移動するのに役立ちます。

NavigationToolbar.png

ナビゲーション ツールバーには、左から右に次のコントロールが含まれています。

  • [使用ユニット]: このボタン(UsedUnits.png)についているドロップダウン メニューには、現在のユニットで使用されているすべてのユニットのリストが表示されます。リストからユニットを選択すると、そのユニットが開きます。このメニューには宣言順にユニットが表示されます。このドロップダウン メニューは、ショートカット Ctrl+Alt+N、Ctrl+Alt+U を押して開くこともできます。
  • [ファイル セクション]: このボタン(UnitSections.png)に付いているドロップダウン メニューには、ファイル内のセクションのリストが表示されます。この一覧には、[ファイル先頭][interface セクション][interface セクションの uses 句][implementation セクション][implementation セクションの uses 句][initialization セクション][ファイル末尾]が含まれます。いずれかのセクションを選択すると、そのセクションが表示され、セクションの先頭にカーソルが置かれます。このドロップダウン メニューは、ショートカット Ctrl+Alt+N、Ctrl+Alt+S を押して開くこともできます。
  • [型]: このコンボ ボックスには、現在のユニットで宣言されているすべての型の名前が表示されます。いずれかの型を選択すると、その型の宣言にカーソルが移動します。ショートカット Ctrl+Alt+N、Ctrl+Alt+T を押すと、型のコンボ ボックスが開きます。
  • [メソッド]: このコンボ ボックスには、現在のユニットに含まれているすべての手続きおよび関数の名前が表示されます。いずれかの項目を選択すると、その手続きまたは関数の実装にカーソルが移動します。ショートカット Ctrl+Alt+N、Ctrl+Alt+P を押すと、メソッドのコンボ ボックスが開きます。
  • [プロジェクト シンボル検索]: Glass.png ボタンを使用すると、選択しているアクティブなプロジェクトの中のすべてのシンボルを検索することができます。ショートカット Ctrl+Alt+N、Ctrl+Alt+F を押すと、プロジェクト シンボル検索ツールが開きます。プロジェクト シンボル検索では、入力するにつれて対象が絞り込まれます。検索ウィンドウには、シンボル名の文字列の一部が一致したものが検索結果として表示されます。たとえば、about は、AboutBoxTAboutBoxreabout に一致します。

詳細は、「ナビゲーション ツールバーの使用」を参照してください。

コード ナビゲーション

以下のセクションでは、コード エディタの使用中にコード内を移動するための機能について説明します。

メソッド間の移動

一連のエディタ ホットキーを使って、メソッド間を移動できます。メソッド間の移動を現在のクラス内のメソッドに制限することもできます。たとえば、クラス内制限を有効にし、TComponent のメソッドの 1 つにいる場合は、TComponent のメソッド間でのみ移動が行われます。

メソッド間の移動に使用するキーボード ショートカットは次のとおりです。

  • Ctrl+Q^L -- クラス内制限のオン/オフ
  • Ctrl+Alt+Up arrow -- 現在のメソッドの先頭または前のメソッドに移動
  • Ctrl+Alt+Down arrow -- 次のメソッドに移動
  • Ctrl+Alt+Home -- ソース内の最初のメソッド
  • Ctrl+Alt+End -- ソース内の最後のメソッド
  • Ctrl+Alt+Mouse_Wheel -- メソッド間のスクロール移動

クラスの検索

クラスを検索できます。[検索|クラスの検索...]コマンドを使用して、選択できるクラスのリストを表示します。クラスを選択すると、そのクラスの宣言に移動します。

ユニットの検索

Object Pascal 言語のプログラミング中に、名前空間またはユニットを検索するリファクタリング機能を使用できます。ユニットの検索...コマンドを使用して、ユニットを検索し、コード ファイルに追加できます。

次の変更および前の変更の検索

コードの編集時にキー入力を使用して、それまでに行った次の変更と前の変更にすばやく移動できます。キーボード ショートカットを次に示します。

  • Ctrl+Shift+F7 -- ファイルを開いた後変更された前の行(マージンが緑色)に移動します。
  • Ctrl+Shift+F8 -- ファイルを開いた後変更された次の行(マージンが緑色)に移動します。
  • Alt+Shift+F7 -- 前回の保存後に変更された前の行(マージンが黄色)に移動します。
  • Alt+Shift+F8 -- 前回の保存後に変更された次の行(マージンが黄色)に移動します。

次の行または前の行が非表示の(折りたたまれた)ブロック内にある場合は、そのブロックが展開されます。コードの折りたたみについては、このトピックの後半で説明します。

各種キー入力は、キーボード マッピング(デフォルト、IDE クラシック、BRIEF、Epsilon)と同じです。Visual Studio および Visual Basic のキーボード マッピングには、次の変更および前の変更に移動するキー入力はありません。

ソース コード内の使用箇所の検索

Object Pascal 言語でプログラミングを行っている場合には、[使用箇所の検索]機能を使って、ソース コード プロジェクト内のクラス、メソッド、変数、オーバーライド メソッド、派生クラス、実装インターフェイスの使用箇所を検索できます。

ライブ テンプレート

ライブ テンプレートは、記述済みコードの辞典として使用できます。このコードをコード エディタの使用中にプログラムに挿入できます。これにより、入力が必要な作業量を削減できます。

ライブ テンプレートの作成と使用については、このトピックの最後にあるリンクを参照してください。

コードの折りたたみ

コードの折りたたみ機能を使用すると、コードの領域(ブロック)を折りたたんだり展開することができます。コードを折りたたむと、コードが階層構造で表示され、判読やナビゲーションが容易になります。折りたたまれたコードは削除されたのではなく、展開するまで非表示になるだけです。コードの折りたたみ機能はデフォルトでオンになっています。

コードの折りたたみ機能を使用するには、コード エディタの左端にあるプラス記号([+])およびマイナス記号([-])をクリックします。

  • プラス記号([+])をクリックすると、関連するコードの領域が展開されます。
  • マイナス記号([-])をクリックすると、関連するコードの領域が折りたたまれます。

コードの折りたたみ機能を有効または無効にするには:

  • [ツール|オプション...|エディタ設定ダイアログ ボックスの[コードの折りたたみ]チェック ボックスを使用します。
  • キーボード ショートカットの Ctrl+Shift+K+O を使用します。

また、コンテキスト メニューの[コードの折りたたみ]コマンドを使用すると、型、メソッド、XML ドキュメント コメント(Object Pascal の場合)、'最も近い' 領域など、特定の種類の領域を折りたたむことができます。[コードの折りたたみ]コマンドおよび[コードの展開]コマンドについては、「コード エディタのコンテキスト メニュー」で説明しています。コードの折りたたみ領域の作成方法など、コードの折りたたみ機能の詳細は、「コードを折りたたむ」を参照してください。

リファクタリング

リファクタリングは、コードの外部機能を変更せずにコードを改善する処理です。たとえば、メソッドの抽出リファクタリングを使用すれば、選択したコード フラグメントをメソッドに変更できます。IDE は、抽出されたコードを現在のメソッドの外に移動し、必要なパラメータを決め、必要であればローカル変数を生成します。また、戻り値の型を決め、元のコードを新しいメソッドの呼び出しに置き換えます。その他にも、シンボル名の変更、変数の宣言などのリファクタリング メソッドを使用できます。

同期編集

ビデオ:Sync Editing in Appmethod(Appmethod の同期編集機能について)』(Mike Rozlog 解説)

同期編集機能を使用すると、コード内の同一の識別子を同時に編集できます。最初の識別子を変更すると、同じ変更が残りの識別子にも自動的に適用されます。また、ジャンプ ポイントを設定して、コード内の特定のセクションに移動することもできます。

To-Do リスト

To-Do リスト は、プロジェクトで完了する必要があるタスクを記録します。[To-Do リスト]に追加されたタスクは、編集したり、コードにコメントとして追加したり、完了したことを示すようにマークしたり、リストから削除したりすることができます。フィルタを設定して、目的のタスクだけをリストに表示することもできます。

キー入力マクロ

コードの編集中に、一連のキー入力をマクロとして記録することができます。マクロを記録した後、それを再生して同じキー入力を繰り返すことができます(これは現在の IDE を開いている間に限り有効です)。マクロを記録すると、前に記録したマクロが上書きされます。

しおり

しおりは、長いファイル内の移動に便利です。コード内の任意の場所にしおり(ブックマーク)を付けて、ファイル内のどこからでもその場所にジャンプできます。

しおりを設定すると、本のアイコン(Bookmark iconが、コード エディタの左マージンに表示されます。1 つのファイルで、0 番(Bookmark0.bmp)から 9 番(Bookmark9.bmp)までの 10 個のしおりを使用できます。

コード エディタのマージンでしおりアイコンをドラッグ アンド ドロップできます。移動先のしおりは、元のしおり番号が保持されます。

プロトタイプの同期

Appmethod には、Object Pascal メソッド プロトタイプのインターフェイスと実装を同期させる、プロトタイプ同期機能があります。

プロトタイプ同期機能を使用できるのは Object Pascal の場合だけです。この機能では、メソッドの種類(関数、手続き、コンストラクタ、またはデストラクタ)、パラメータ、パラメータの型、パラメータの修飾子、関数の戻り値の型を同期することができます。関数名や関数の修飾子を同期することはできません。

メソッド プロトタイプを同期するには:

  1. メソッド プロトタイプのインターフェイスまたは実装に変更を加えます。
  2. プロトタイプ同期のショートカット Ctrl+Shift+Alt+P を押すか、コンテキスト メニューの[プロトタイプ同期]を選択します。
  3. Appmethod により、必要な変更が行われ、プロトタイプが同期されます。

プロトタイプ同期機能によって、プロトタイプ メソッドのインターフェイスと実装の同期を保つことができます。

同期するメソッドが見つからなければ、「同期可能なメソッドが見つかりません」というメッセージが表示されます。

制限事項: 以下の制限事項に注意してください。

  • オーバーロードされたメソッドは同期できません。
  • メソッドのプロトタイプを同期させても、上位クラスまたは下位クラスのメソッドのプロトタイプは変更されません。

構造強調表示

構造強調表示

Appmethod では、コードの構造(begin-end ブロックなど)を線で強調表示することができます。機能強化された Appmethod の構造強調表示で構文を強調表示することで、コードや作業プロセスを整理された状態に保つことができます。

構造強調表示では、コード ブロックをグループ化し、該当するキーワードを識別します。構造強調表示では、交互に変わる 4 色を使用して、特定のブロックの深さを区別します。

構造強調表示の有効/無効の設定や、線の色の構成は、[構造強調表示]オプションのページで行うことができます。

StructuralHighlighting.png

フロー制御の強調表示

Appmethod では、直線的な実行フローを妨げる手続きが使用されているコード内の箇所を強調表示できます。Appmethod のフロー制御強調表示では、プロジェクトの直線的な実行が妨げられているコード行に対する注意を視覚的に喚起します。

そのためのアイコンは、コード エディタの左余白か、フローの変化をもたらす行の行末に表示することができます。

フロー制御強調表示の有効/無効の設定や、アイコンの位置の構成は、[構造強調表示]オプションのページで行うことができます。

FlowControlGutter.pngFlowControlEndLine.png

スマート キー

スマート ホーム キー

スマート ホーム キーのショートカットを使用して、カーソルを行の先頭とテキストの先頭に移動することができます。

コード エディタで Home キーを押すと、カーソルは、カーソルが置かれていた行の先頭に移動します。もう一度 Home キーを押すと、カーソルは、同じ行のテキストの先頭に移動します。繰り返し Home キーを押すと、カーソルの位置は、行の先頭とテキストの先頭の間で交互に切り替わります。

スマート ホーム キーの有効/無効の設定は、[ツール|オプション...|エディタ設定|キーの割り当てで行うことができます。

スマート囲みキー

スマート囲みキー機能を使用すると、コードを "()" や "[]" や "{}" で囲む作業を簡単に行うことができます。

コードを "()"、"[]"、"{}" で囲むには、囲む対象のテキストをコード エディタで選択し、"("、"["、"{" のいずれかを押します。入力した文字に応じて、コード エディタで選択したテキストが "()"、"[]"、または "{}" で囲まれます。

スマート囲みキーの有効/無効の設定は、[ツール|オプション...|エディタ設定|キーの割り当てで行うことができます。

ブロック コメント

コード エディタ でコードを選択し、Ctrl+/(スラッシュ)を押せば、コード セクションをコメントアウトできます。選択したコードの各行の先頭には // が付けられ、コンパイラはこの行を無視します。コードの 1 行目の先頭に // が付いている場合は、Ctrl+/ を押すと、スラッシュが削除されます。Visual Studio または Visual Basic のキー マップを使用する場合は、Ctrl+K+C を使ってコメントのスラッシュを追加または削除します。

関連項目