コードエディター
4Dは、インテリジェントなコード補完、コードナビゲーション、デバッグ、検索など、生産性の高いコード編集のための幅広い機能を提供する強力なコードエディターを搭載しています。
コードエディターはテキストエディターのように動作します。 メソッドやクラスの記述は通常、テキストの入力、コンポーネントの選択、そしてエクスプローラーやその他のウィンドウからのドラッグ操作によりおこないます。 メソッドの記述をより効率的におこなうために、タイプアヘッド機能も提供されています。
メソッド、クラス、関数の内容はスクロールして確認することができ、最大32,000行、2GBのコードを記述できます。
4Dのコードエディターは基本的なシンタックスチェック機能を提供します。 メソッド実行時には追加のエラーチェックがおこなわれます。 エラーハンドリングについての詳細は、デバッガー の章を参照ください。
インターフェース
ツールバー
コードエディターにはメソッドの実行と編集に関連する基本的な機能に素早くアクセスするためのツールバーがあります。
機能 | アイコン | 説明 |
---|---|---|
メソッド実行 | コードエディターウィンドウには、そのエディターで開かれているメソッドを実行するためのボタンがあります。 このボタンに関連付けられているメニューから実行オプションを選択できます:
| |
メソッド中を検索 | 検索 エリア を表示します。 | |
マクロ | 選択対象にマクロを挿入します。 ドロップダウンの矢印をクリックすると、利用可能なマクロがすべて表示されます。 詳細は マクロの作成と利用 を参照してください。 | |
すべて折りたたむ / すべて展開 | これらのボタンを使用してコードの制御フロー構造を折りたたんだり展開したりできます。 | |
メソッド情報 | メソッドプロパティ ダイアログボックスを表示します (プロジェクトメソッドのみ)。 | |
最新のクリップボードの値 | 直近でクリップボードに保存された値を表示します。 | |
クリップボード | コードエディターで利用可能な 9つのクリップボードです。 クリップボードのアイコンをクリックするか、あるいはキーボードショートカットによって、これらのクリップボードを利用 できます。 環境設定オプション を使用するとそれらを非表示にすることができます。 | |
ナビゲーションドロップダウン | 自動的にタグ付けされたコンテンツや手動で宣言されたマーカーを使用して、メソッドやクラス内を移動できます。 後述参照。 |
編集エリア
このエリアを使用してコードを 入力/編集 します。 エディターは、コードテキストのインデントを自動で設定し、異なるシンタックス要素ごとに色を付けて、コード構造を明確に表示します。
この編集エリアの表示はカスタマイズできます。 カスタマイズした内容は、すべてのコードエディターに反映されます:
オプション | 説明 | 設定場所 |
---|---|---|
フォント と フォントサイズ | 編集エリアの文字フォントとサイズを設定します | 環境設定 の メソッド ページ、または メソッド メニューから 表示 > フォントを大きく / フォントを小さく で設定します。 |
シンタックス要素のスタイルとカラー | 4Dランゲージの要素タイプごとに異なる色やスタイルを割り当てることができます。 また、編集エリアのインターフェースで使用されている色 (ハイライト、背景色など) を変更することができます。 | ランゲージ要素 (変数、キーワード等) 上でコンテキストメニューを表示し、 スタイル サブメニューからオプションを選択します。 または、環境設定 の メソッド ページでも設定できます。 |
スペース | 単語間のスペースを空白ではなくピリオド (.) で表示することができます。 この設定は、すべてのコード要素 (コマンド名、変数、コメントなど) に適用されます。 | メソッド > 表示 > ホワイトスペース |
テーマ | Dark または Light テーマが選択できるほか、カスタムテーマも設定可能です | 環境設定 > メソッド |
コードインデント幅 | コードのインデント幅を設定します | 環境設定 > メソッド |
更新行の通知
エディターで開いた後に更新されたコードの行には色つきのバーが表示されます:
変更が保存されたかどうかは、バーの色で表されます:
- 黄色: 行は変更されたが、保存されていない。
- 緑色: 行は変更され、保存された。
リストエリア
リストエリアにはメソッドやクラスの記述に必要となるコード要素 (コマンド、定数、フォーム等) のリストを 1つ以上表示できます。 表示するリストの数や種類は変更することができます。
デフォルトで、コードエディターには 4つのリストが表示されます。 ウィンドウの右下にあるアイコンをクリックすると、すべてのリストを表示/非表示にすることができます。
リストの境界をドラッグして、リストの幅を相対的に調整できます。 また、編集エリアとの境界線をドラッグして、リストエリアの高さを調整できます。
- リストの項目をダブルクリックすると、現在のカーソル位置にその項目が挿入されます。
- リストの 表示内容を変更 するには、リストのタイトルエリアをクリックすると現れるポップアップメニューから表示したい項目を選択します。
-
リストを追加/削除するには、リストのタイトルエリアをクリックし、一番下の対応するメニューを選択します。 このリストを取り除く コマンドは、リストが残り1つのときは無効になります。 すべてのリストを非表示にするには、ウィンドウ右下の リストを表示\非表示 ボタンをクリックするか、環境設定 でデフォルトで非表示にする必要があります。
-
すべてのウィンドウでリストを非表示にするには、次の方法があります:
- メソッド メニューの 表示>リスト オプションの選択を解除する
- 環境設定 の メソッド ページで オプション > リスト表示 の選択を解除する。 環境設定 ダイアログボックスでおこなった変更は、開かれているメソッドやクラス、関数を一度閉じて再度開いたときに反映されます。
リストのタイプ
コードエディターウィンドウのリストエリアには以下の項目を表示できます:
- すべてのテーブルとフィールド: データベーステーブルとフィールドの名前 (階層リスト形式)。 ダブルクリックでフィールド名をコードに挿入すると、4D はシンタックスに合わせてテーブル名も挿入します。
- テーブル (サブメニュー): サブメニューを使用 して選択したテーブルのフィールド名。
- カレントテーブル: カレントテーブルのフィールド名 (トリガー、フォームメソッド、オブジェクトメソッドで利用可能)。
- プロジェクトフォーム: データベースのプロジェクトフォーム名。 プロジェクトフォーム名をダブルクリックすると、4D はダブルクォートで囲まれたフォーム名を挿入します。
- テーブルフォーム: データベースのテーブルフォーム名 (階層リスト形式)。 ダブルクリックでテーブルフォーム名を挿入すると、4D はテーブル名の後にセミコロン、そしてダブルクォートで囲まれたフォーム名を挿入します。 例: [Table];"Form"。
- メソッド: データベースに定義されたプロジェクトメソッド名。
- すべてのフォルダー: データベースに定義されたオブジェクトフォルダーおよびサブフォルダー名 (階層リスト形式)。 フォルダーは、カスタマイズされた方法でオブジェクトをグループ化するために使用します。 フォルダーは、エクスプローラーのホームページで管理します。
- フォルダー (サブメニュー): サブメニューを使用して選択されたフォルダーの中身。
- マクロ: データベースに定義されたマクロ名 (マクロの作成と利用 参照)。
- コマンド: 4Dランゲージコマンド (文字順)。
- コマンドリスト (テーマ順): テーマごとにグループ化された 4Dランゲージコマンド (階層リスト形式)。
- メニューバー: 4Dメニューバーエディターで作成した メニューバーの名前と番号。
- 定数: 4D やプラグインに定義された定数 (テーマ別階層リスト形式)。
- リスト: リスト名。
- すべてのプラグインコマンド: データベースにインストールされたプラグインのコマンド名 (テーマ別階層リスト形式)。
- SQLキーワード: 4D の SQLシンタックスパーサーが解釈可能なキーワードのリスト。 このリストには、コマンド (例: SELECT)、句 (例: WHERE)、関数 (ABS) が含まれます。
- SQL関数: 4D SQL 関数。
注: マクロ要素を除き、すべてのリストは文字順です。
テンプレートとして保存
コードエディターウィンドウに設定したリストをテンプレートとして保存できます。 テンプレートとして保存すると、新規にコードエディターを開くたびにその設定が使用されます。
テンプレートには以下のパラメーターが保存されます:
- 編集とリストエリアの相対サイズ
- リストの数
- 各リストの位置と表示内容
- 各リストの相対幅
設定をテンプレートとして保存するには、メソッド メニューから テンプレートとして保存 を選択します。 テンプレートは即座に保存されます (ダイアログボックスは表示されません)。 設定は、4Dアプリケーションの 環境設定 に保存されます。 既存のテンプレートがあれば、上書きされます。
ブレークポイントエリア
編集エリアの左にあるこのエリアでは、行番号を表示したり、ブレークポイントを直接挿入したりできます。 ブレークポイントはプログラムのデバッグに使用します。 ブレークポイントが設定された場所でコード実行が停止し、デバッガーを表示します。
ブレークポイントに関する詳細は、デバッガー の章を参照ください。
コードエディターの各ウィンドウごとに、ブレークポイントエリアにおける行番号の表示/非表示を切り替えられます。
- 行番号の表示/非表示のデフォルト設定は 環境設定 > メソッド ページの 行番号を表示 で設定します。
- 各ウィンドウの設定を切り替えるには、メソッド メニューの 表示 > 行番号 を選択します。
行番号を表示すると、ウィンドウ内で特定の行を見つけやすくなります。 メソッド メニューの 行番号を指定して移動... コマンドを利用する場合も、この行番号を使用します。
このような検索は、実行時エラーで コンパイラー が示すエラー行を表示するのに便利です。
ステータスバー
エディターウィンドウの右下にはステータスバーがあり、カーソルの位置を表示します:
- 行: 行番号
- 階層: 階層番号 (プログラム構造の階層レベル)。 先頭のレベルは 0 です。 この数値は、コード中でエラーが発生した際にインタープリターから提供されるのでデバッグ時に利用できます。
- 文字: 行内の文字位置。
- : リストの表示/非表示。
4Dコマンド、関数や変数にカーソルを置くと、ステータスバーにコマンドのシンタックスが表示されます。 引数を入力したり選択したりすると、そのエリアには現在の引数が 太字 で表示されます:
ナビゲーションドロップダウン
ナビゲーションドロップダウンは、コードを整理し、クラスやメソッド内の移動を助けるツールです。
いくつかのタグは自動的に追加されますが、マーカー を使ってドロップダウンリストを補完することもできます。
コードのナビゲーション
ドロップダウンリストの項目をクリックすると、当該項目のコードの先頭行に移動します。 また、矢印キーで項目を選択し Enter キーで決定して移動することもできます。
自動タグ
コンストラクター、メソッド宣言、関数、計算属性は自動的にタグ付けされ、ドロップダウンリストに追加されます。
クラス/メソッドにタグがない場合、ツールは "タグなし" アイコンを表示します。
次の項目が自動的に追加されます:
アイコン | 項目 |
---|---|
タグなし | |
クラスコンストラクターまたはメソッド宣言 | |
計算属性 (get, set, orderBy, query) | |
クラス関数名 |
手動タグ
コードにマーカーを追加して、以下のタグをドロップダウンに追加できます:
アイコン | 項目 |
---|---|
MARK: タグ | |
TODO: タグ | |
FIXME: タグ |
タグは、次のようにコメントを付けて宣言します:
// FIXME: 要修正
タグ宣言の際、文字の大小は区別されません。 fixme:
と記述することもできます。
MARK:
タグの後にハイフンを付けると、コードエディターとドロップダウンメニューに区切り線が引かれます。 つまり、次のように書くと:
このような結果になります:
関数内のマーカーはドロップダウンリスト内でインデント (字下げ) されますが、関数末尾の MARK:
タグの後に指示がない場合を除きます。 この場合は、インデントなしで表示されます。
表示順
タグは、メソッド/クラス内の出現順に表示されます。
メソッドやクラスのタグをアルファベット順に表示するには、次のいずれかを実行します:
- ドロップダウンツールを 右クリックする
- macOS では option、Windows では Alt を押しながら、ドロップダウンツールをクリックします。
関数内のタグは、親項目と一緒に移動します。
ショートカット
4D コードエディターの複数の機能について、デフォルトのキーボードショートカットを使って利用できます。
macOSでは Ctrl の代わりに Command を使用してください。
ショートカット | 動作 |
---|---|
選択およびナビゲージョン | |
ダブルクリック | ランゲージ要素名を選択します。 |
[Alt]+ダブルクリック | スペースを含むランゲージ要素名 (定数、メソッドなど) を選択します。 |
[Shift]+[右矢印] | 選択範囲を作成し、一文字ずつ右に拡大します。または、選択範囲を一文字ずつ左から縮小します。 |
[Shift]+[左矢印] | 選択範囲を作成し、一文字ずつ左に拡大します。または、選択範囲を一文字ずつ右から縮小します。 |
[Shift]+[下矢印] | 選択範囲を作成し、上から下へと 1行ずつ拡大します。 |
[Shift]+[上矢印] | 選択範囲を作成し、下から上へと 1行ずつ拡大します。 |
[Ctrl]+[Shift]+[右矢印] | 選択範囲を単語単位で右方向に作成・拡大します。 |
[Ctrl]+[Shift]+[左矢印] | 選択範囲を作成し、単語単位で左に拡大します。または、選択範囲を単語単位で右から縮小します。 |
[Ctrl]+[右矢印] | 挿入カーソルを単語単位で左から右に移動します。 |
[Ctrl]+[左矢印] | 挿入カーソルを単語単位で右から左に移動します。 |
[Alt]+[下矢印] | カーソルのある行を下へ移動します。 |
[Alt]+[上矢印] | カーソルのある行を上へ移動します。 |
[Home] | 挿入カーソルを行の先頭に移動します。 |
[End] | 挿入カーソルを行の最後に移動します。 |
[Ctrl]+[Home] | 挿入カーソルをメソッドの先頭に移動します。 |
[Ctrl]+[End] | 挿入カーソルをメソッドの最後に移動します。 |
[Shift]+[Home] | 行の先頭からカーソルまでを選択します。 |
[Shift]+[End] | カーソルから行の最後までを選択します。 |
[PgUp] | メソッドをページ単位で上にスクロールします (挿入カーソル位置は変更されません)。 |
[PgDn] | メソッドをページ単位で下にスクロールします (挿入カーソル位置は変更されません)。 |
イントロスペクション | |
[Ctrl]+K または [Alt]+ダブルクリック | 定義を開く コマンドと同じ。 |
トークン上で [Ctrl] (Windows) または [Alt] を押しながらマウスオーバー | トークン (認識されたランゲージ要素) に下線を引きます。 下線が引かれたトークンをクリック = 定義を開く コマンドと同じ。 |
検索と置換 | |
[Ctrl]+F | 検索 |
[Ctrl]+G | 次を検索 |
[Ctrl]+[Shift]+G | 前を検索 |
[Ctrl]+E | 次の同じものを検 索 |
[Ctrl]+[Shift]+E | 前の同じものを検索 |
[Ctrl]+[Alt]+F | 置換 |
[Ctrl]+[Alt]+G | 次を置換 |
[Ctrl]+[Alt]+[Shift]+G | 前を置換 |
クリップボード | |
クリップボードアイコン上で [Shift]+クリック または [Alt]+クリック | 選択したテキストをクリップボードにコピー |
[Ctrl]+[Shift]+数値キー | 選択したテキストを、その番号のクリップボードにコピー |
クリップボードアイコン上で [Ctrl]+クリック | カーソル位置にクリップボードの内容をペースト |
[Ctrl]+数値キー | その番号のクリップボードの内容をカーソル位置にペースト |
これらのショートカットのほとんどは、4D 環境設定 ダイアログボックスでカスタマイズすることができます。
コードの編集
コードエディターへの入力と編集には標準のテキスト編集テクニックを使用します。
コードエディターは、シンタックス要素ごとに、指定されたスタイルやカラーを使用した表示をおこないます。 この設定は変更できます。 入力を確定するごとに、また改行を挿入する際に、4D は行のテキストを評価して適切な表示フォーマットを適用します。 また、If や End if などのプログラム構造が使用された場合、4D は自動でインデントをおこないます。
行に移動するには矢印キーを使用します。 矢印による移動では行の評価がおこなわれないため、クリックよりもすばやく移動できます。
Windows では、日本語や中国語を入力するために IME (Input Method Editor) がサポートされています。
コードエディターでは、複数の ナビゲーションショートカット がサポートされています。
バックスラッシュの使用
バックスラッシュ文字 (\
) は、4Dランゲージでは次の通りにサポートされています:
- 行末に挿入すると、一つのステートメントを 複数行 に分割して書くことができます。
- エスケープシーケンス に使用します。
バックスラッシュ文字 (\
) は、Windows のパス名 において区切り文字として使用されます。 通常、4D はコードエディターに入力された Windows のパス名のバックスラッシュを自動で \
に置き換えることで、これを正しく解釈します。 たとえば、C:\MyDocuments
と入力すると C:\\MyDocuments
に変換されます。 しかし、"C:\MyDocuments\New"
と入力した場合、4Dは "C:\\MyDocuments\New"
と表示します。 この場合、二番目のバックスラッシュは \N
([行送り](../Concepts/quick-tour.md#エスケープシーケンス)) と解釈されてしまいます。 このようなケースでは、開発者がバックスラッシュを 2つ入力するようにしなければなりません。