src/projecteditor の MDI エディタ(ProjectEditor.exe)の現行仕様です。言語は language.md、ビルドと配布物は build.md。キーワード解説の HTML は src/projecteditor/help/actba64_ref.html です。
エディタ自身は 64bit GUI です。ユーザーのソースを 32bit / 64bit のどちらに訳すかは、隣に置く actba64.exe の起動オプションで切り替えます。
引数なしでは空の untitled を 1 枚開きます。第 1 引数が実在するファイルならそれを開きます。相対パスは、そのまま見つからなければ exe のあるディレクトリ基準で探します。
| 引数 | 動作 |
|---|---|
| なし | untitled(UTF-8、BOM なし) |
*.pj |
プロジェクトウィンドウだけ開く。ソースは開かない |
| それ以外のファイル | そのファイルをソース子ウィンドウで開く |
| ディレクトリ、または見つからないパス | 引数なしと同じ |
ファイルのドロップも同じです。複数ドロップしたときは先頭の 1 件だけ開きます。
フレームのクライアントは MDI です。ソースは子ウィンドウで、同時に 最大 8 枚です。9 枚目の新規作成・開くは何もしません。
プロジェクトウィンドウは別クラスの MDI 子で、8 枚の枠を使いません。Window メニューは Cascade / Tile Horizontal / Tile Vertical です。MDI 標準の Ctrl+F4(子を閉じる)、Ctrl+Tab / Ctrl+F6(子の切り替え)は有効です。
未保存のまま子やフレームを閉じても確認しません。閉じた子の内容は捨てます。プロジェクトウィンドウを閉じると、開いているプロジェクトは解除されます。
子ウィンドウとフレームのタイトルは同じです。
editor - (untitled) [64bit, UTF-8]
editor - C:\work\hello.sbp [32bit, Shift-JIS] *
* は未保存です。保存したあと Undo で内容が戻っても、* は付いたままです。
編集対象は前面のソースです。プロジェクトウィンドウを前面にしても、直前のソースが編集対象のまま残ります。
既定の表示は英語です。Language=ja のときの見出しは次のとおりです(括弧内はニーモニック)。ソース子にフォーカスがあるとき、次の Ctrl キーが使えます。
| キー | 動作 |
|---|---|
| Ctrl+C / Ctrl+X / Ctrl+V | コピー / 切り取り / 貼り付け |
| Ctrl+A | すべて選択 |
| Ctrl+Z / Ctrl+Y | 元に戻す / やり直し |
| Ctrl+S | 上書き保存 |
| メニュー | 項目 |
|---|---|
| ファイル(&F) | 新規(&N) / 開く(&O) / 名前を付けて保存(&A) / 上書き保存(&S) |
| 編集(&E) | 元に戻す(&U) / やり直し(&R) / 切り取り(&T) / コピー(&C) / 貼り付け(&P) / すべて選択(&A) / 削除(&D) |
| Basic | 64bit / 32bit(チェック) / 実行(&R) / 実行(終了後に待機)(&W) / コンパイル(&C) |
| 設定(&S) | 設定 |
| ヘルプ(&H) | キーワード / actba64 ヘルプ |
| ウィンドウ(&W) | 重ねて表示(&C) / 上下に並べる(&H) / 左右に並べる(&V) |
編集メニューは、ソース子が 1 枚もないときは動きません。右クリックメニューは、元に戻す、切り取り、コピー、貼り付け(クリップボードが空なら無効)、削除、すべて選択、actba64 ヘルプです。キャレット位置に識別子があるときだけ「キーワードのヘルプ」を足します。やり直しは右クリックにはありません。
ファイルダイアログのフィルタは Source (*.sbp;*.abp;*.bas)、Project (*.pj)、All (*.*) です。名前を付けて保存の既定拡張子は sbp で、上書き前に確認します。パスが空の上書き保存は、名前を付けて保存になります。
内部テキストは UTF-8 のギャップバッファです。キャレットは UTF-8 の 1 文字ずつ動きます。
| 操作 | 動作 |
|---|---|
| Ctrl+C / Ctrl+X / Ctrl+V / Ctrl+A / Ctrl+Z / Ctrl+Y / Ctrl+S | メニューの同名操作 |
| 文字入力 | 挿入。選択中なら選択範囲を置き換える |
| Enter | LF(0A)を挿入する。CR は付けない |
| Backspace | 直前の 1 文字を消す |
| Delete | 選択範囲、なければ次の 1 文字を消す |
| 左右上下 | 1 文字、または 1 行。Shift なしでは選択を解除する |
| Shift+左右上下 | 起点から 1 文字、または 1 行ずつ選択を伸ばす・縮める |
| Page Up / Page Down | 表示行数だけスクロールする。キャレットは動かない |
| ホイール | 3 行スクロール |
| クリック | その位置へキャレットを移し、選択を解除する |
| Shift+クリック | 起点からその位置までを選択する。ドラッグ中も起点は変えない |
| ドラッグ | 押した位置から離した位置までを選択する。窓の外では 1 行ずつ送る |
| F1 | キャレット位置のキーワードヘルプ |
| Tab / Home / End | 未対応 |
行の区切りは CR、LF、CRLF です。既存ファイルの改行バイトはそのまま残し、Enter で足した行だけ LF です。
選択範囲は、ドラッグ、Shift を押したままの移動またはクリック、すべて選択 で作ります。起点は、選択が無ければその操作の前のキャレットです。選択が無いときのコピーと切り取りは、文書全体が対象です。切り取りで選択が無いときは文書を空にします。貼り付けは Unicode テキストを優先し、無ければ CP932 のテキストとして読みます。
Undo は全文スナップショットで、最大 64 段です。入力は 1 文字ずつ 1 段になります。貼り付け・切り取り・削除は 1 操作で 1 段です。別の子へ切り替えると、その子の Undo は初期化されます(開いた直後の全文が最初の 1 段)。
IME の変換中文字列はキャレット位置に重ねて表示し、確定した文字列を UTF-8 で挿入します。変換ウィンドウはキャレット位置に合わせます。
開いたファイルの判定は次の順です。
EF BB BF なら UTF-8 BOM新規文書は UTF-8(BOM なし)です。保存は開いたときの符号のまま書き戻します。UTF-8 BOM は BOM を付けて書き、CP932 は UTF-8 バッファから CP932 へ変換します。タイトルの符号名は UTF-8 / UTF-8 BOM / Shift-JIS です。符号を選ぶ UI はありません。
.pj を開くと(ファイル → 開く、ドロップ、起動引数)、ソースは開かずプロジェクトウィンドウが出ます。別の .pj を開くと一覧が差し替わります。見本は src/actba64/samples/mdi/mdi.pj です。
#SOURCE の次の行から、次に # で始まる行の手前までを一覧します。空行と ' コメントは除きます。最大 128 件で、超えた分は無視します。表示文字列は .pj に書いた相対パスです。クリック(リストの選択変更)でそのファイルを開き、既に開いていれば前面にします。
パスの結合は .pj のあるディレクトリ基準です。\ または / で始まるパスと、2 文字目が : のパスはそのまま使います。同じファイルかどうかは、区切りを \ に揃え、英字の大小を無視して比べます。
プロジェクトから読む指令は次の 2 つだけです。比較は大小を区別しません。
| 指令 | 用途 |
|---|---|
#OUTPUT_RELEASE |
コンパイル出力。無ければ .pj の拡張子を .exe にしたもの |
#USEWINDOW |
実行時にコンソールを残すか。値は 10 進整数。未指定と 0 はコンソール、1 以上は exe を直接起動 |
#SOURCE の外でも、この 2 つはファイル全体から読みます。
Basic の 64bit(既定)と 32bit は排他です。選択は exe と同じディレクトリの editor.target に 64 または 32 と保存します。ファイルが無い、または先頭 2 バイトが 32 でないときは 64bit です。
コンパイラは exe と同じディレクトリの actba64.exe です。そこにファイルが無いときは起動せず、メッセージウィンドウに見つからない旨を出します。
呼び方は次です。パスに空白があるときだけ、その引数を二重引用符で囲みます。
actba64 <入力> -o <出力>
actba64 -actba32 <入力> -o <出力>
| 状態 | 入力 | 出力 |
|---|---|---|
| プロジェクトが開いている | その .pj |
#OUTPUT_RELEASE(.pj のあるディレクトリ基準)。無ければ .pj の拡張子を .exe にしたもの |
| プロジェクトを開いていない | 前面のソース 1 ファイル | そのパスの拡張子を .exe にしたもの |
プロジェクトを開いているあいだは、前面が別ファイルでも Compile / Run はその .pj を渡します。
コンパイル前に保存します。失敗したらコンパイルしません。
標準出力と標準エラーをまとめてメッセージウィンドウへ出します。末尾に Compile succeeded. または Compile failed. (exit=N) を足します。コンパイラが無言で成功したときは Compile succeeded. だけ、失敗で無言のときは Compile failed. (exit=N) だけです。
実行 はコンパイルが終了コード 0 のあと起動します。起動できなければ Failed to run program. を足します。実行(終了後に待機) も同じ手順でコンパイルしたあと、#USEWINDOW と #console に関係なく cmd /k "<exe>" で起動し、終了後もコンソールを残します。
| 状態 | 起動 |
|---|---|
プロジェクトで #USEWINDOW が 0(未指定も同じ) |
cmd /k "<exe>" |
プロジェクトで #USEWINDOW が 1 以上 |
exe を直接起動 |
単体で、先頭 120 行のいずれかの行頭が #console |
cmd /k "<exe>" |
| それ以外の単体 | exe を直接起動 |
単体の #console は、行頭の空白とタブを除いた先頭 8 文字が #console と一致するときだけです。大小は区別します。
コンパイルを始めると、別ウィンドウ「Message」が開きます。閉じる操作は隠すだけで、次のコンパイルで再表示します。
error: または warning: で始まる行を、押した位置から 3 ピクセル以内で離すと移動します。ドラッグでは移動しません。
| 行の形 | 移動先 |
|---|---|
error: file(行): / warning: file(行): |
そのファイルの行頭。未オープンなら開く |
error: line 行: / warning: line 行: |
前面ソースのその行。ファイル名は無い |
file が相対パスのとき、プロジェクトがあれば .pj のディレクトリ、無ければ前面ソースのディレクトリを前置します。行番号は 1 始まりです。位置の取れない行は無視します。
ヘルプメニューの「actba64 ヘルプ」と、キーワード指定なしの表示は、次の順で見つけた actba64_ref.html をブラウザで開きます。
help\actba64_ref.htmlhelp\actba64_ref.htmlhelp\actba64_ref.html「キーワード」と F1 は、キャレット位置の識別子(英数字と _。先頭の # は除く)を小文字にして、既知の語なら HTML のアンカーを付けます。未知の語はアンカーなしで同じ HTML を開きます。ファイルが無いときはメッセージボックスを出します。
UI 文字列の既定は英語(組み込み)です。exe と同じディレクトリの setting.ini に Language=<code> があると、ProjectEditor_lang_<code>.csv で上書きします。省略、空、en は英語のままです。ja は同梱の ProjectEditor_lang_ja.csv を読みます。
CSV は UTF-8 の id,text です。空行と、# ; [ で始まる行は読み飛ばします。id は UiStrings.sbp の UI_* と一致します。パックに無い id は英語のままです。
設定ダイアログは English / Japanese の 2 択です。言語を変えて OK すると setting.ini を書き直し、「再起動して設定を読み直しますか?」と尋ねます。はいなら新しいプロセスを起動して現在のウィンドウを閉じます。再起動時に、開いていたファイルは渡しません。コンパイル結果の英文(Compile succeeded. など)はパックの対象外です。
等幅フォントは、exe と同じディレクトリの fonts\UDEVGothic-Regular.ttf(フォント名 UDEV Gothic)です。読み込めなければ Consolas です。文字高さは 16、行の高さは 18、上の余白は 10 です。左にはソースの行番号(1 始まり)を出し、その右に本文を置きます。行数に合わせて欄の幅が広がります。キャレットのある行の番号は濃い色です。折り返しと横スクロールはありません。
| 対象 | 色 |
|---|---|
キーワード、対応する # 指令 |
青 RGB(0, 0, 200) |
' から行末、および /* … */(行をまたぐ) |
緑 RGB(0, 128, 0) |
" で囲んだ文字列 |
赤 RGB(163, 21, 21) |
| それ以外(数値を含む) | 黒 |
キーワードとして色を付ける語は、and or xor mod、if then elseif else end、dim const typedef type、sub function declare lib alias、while wend for next、do loop until select case、exit return print input、as byref byval to step、varptr addressof sizeof、long byte word string integer dword、hwnd hdc true false null、line circle sleep locate paint、class public private、sin cos tan abs sqr atn です。大小は区別しません。$ で終わる名前も 1 語として見ます。
# 指令として青くするのは #n88basic #prompt #console #strict #include #usewindow です。
縦スクロールは行単位です。キャレットが画面外なら、見える位置まで寄せます。
検索・置換、折り返し、閉じる前の保存確認、符号の手選び、プロジェクトの新規作成ウィザード、デバッガ、フォームデザイナは持っていません。Ctrl+N や Ctrl+O もありません。RAD 用の Callback.wbp / MakeWindow.wbp は、このエディタ自身を組むためのファイルです。