top > イベント リファレンス

イベント リファレンス

萌ディタに対してキー入力、マウス入力、その他を行うと、萌ディタはそれぞれのイベントに対応するスクリプト側のイベントハンドラを呼び出します。

イベントは、スクリプト側で定義した関数オブジェクトのプロトタイプに対して定義します。例えば:

f = class_plaintext.prototype;
f.onInitProp = function (arg, classname, methodname) {
    ;
}

すべてのハンドラは、常に 3 つの引数 arg、classname、methodname を取ります。このうち、classname、methodname はイベントが発生した拡張子クラス名、呼び出されたイベント名です。arg の内容はイベントごとに異なりますが、基本的にキー入力系のイベントの場合は Shift キー、Ctrl キーの押下状態を示すビットパターン、それ以外のイベントの場合は名前つきコレクションです。

萌ディタ側からのハンドラの呼び出しは、直接ではなく core.javascript.txt に定義された小さい関数 invoke() を経由して行います。この関数は拡張子クラスのツリーを指定のイベントのハンドラが見つかるまで親へ向かってさかのぼり、最初に見つかったものを実行します。そのため、ハンドラの定義は拡張子クラスに必須ではありません。ハンドラを定義しない場合は親のハンドラが実行されます。

このしくみを利用して、親の拡張子クラスで定義したハンドラに処理を追加するには、ハンドラ内で invoke() を呼びます。

f.onKeyPrintable = function (arg, classname, methodname) {
    invoke(arg, this.parent, methodname); //親のハンドラ呼び出し
    
    //以降、追加する処理を書く
}

以下はイベントの一覧です。

onInitProp

萌ディタが起動し、起動時に読み込まれるスクリプトをすべて評価し終わった後、おのおのの拡張子クラスごとに呼ばれます。

arg は未使用です(0 が渡されます)。

このイベントで拡張子クラスに固有の設定を行います。

onInitApp

萌ディタが起動し、すべての拡張子クラスの onInitProp イベントが呼ばれた直後に呼ばれます。

arg は未使用です(0 が渡されます)。

onInitProp、onInitApp が呼ばれるタイミングでは、バッファやウィンドウは存在していません。そのため、スクリプトからそれらを参照してはいけません。

onCreate(仕様未決)
onLoad

バッファが生成され、ファイルがロードされた直後に呼ばれます。*Untitled* バッファでも同様です。

arg はファイル名です。

onSaving

バッファをファイルへ保存する直前に呼ばれます。

arg は未使用です(0 が渡されます)。

onSave

バッファをファイルへ保存した直後に呼ばれます。

arg は未使用です(0 が渡されます)。

onDestroy(仕様未決)
onTimer(仕様未決)
onEvaluate

ウィンドウの 1 行入力バッファにスクリプトが入力されたときに呼ばれます。

arg は入力された文字列です。

onFindRequest

ウィンドウの 1 行入力バッファに検索文字列が入力された、または検索ダイアログで検索が実行されたときに呼ばれます。

arg は名前つきコレクションです。

  • 'find' - 入力された検索文字列が格納されています
  • 'option' - 検索オプションがカンマ区切りの文字列の形式で格納されています
onReplaceRequest

ウィンドウの 1 行入力バッファに検索/置換文字列が入力された、または置換ダイアログで置換が実行されたときに呼ばれます。

arg は名前つきコレクションです。

  • 'find' - 入力された検索文字列が格納されています
  • 'replace' - 入力された置換文字列が格納されています
  • 'option' - 検索オプションがカンマ区切りの文字列の形式で格納されています
onKeyPrintable

表示可能な文字が入力されたときに呼ばれます。

arg は入力された文字列です。

onMultiStroke

マルチストローク状態のときに表示可能な文字が入力されたときに呼ばれます。マルチストロークの状態は、plaintext 拡張子クラスの '$multi-stroke' プロパティで参照することができます。

arg は入力された文字列です。

onComposition

IME への入力が確定されたときに呼ばれます。

arg は入力確定された文字列です。

onQuitApp(仕様未決)
onMenuRequest

メニューが表示される直前に仮想項目を実体化するために呼ばれます。メニュー定義リファレンスも参照してください。

arg は名前つきコレクションです。

  • 'menuitem' - メニューアイテムオブジェクトが格納されています
  • 'category1' - カテゴリー 1 が文字列の形式で格納されています
  • 'category2' - カテゴリー 2 が文字列の形式で格納されています
onKeyCompleteRequest

補完開始を要求されたときに呼ばれます。このイベントは、萌ディタ側からではなく、スクリプト側から適当なタイミングで呼ばれます。

arg はスクリプト側の呼び出しに依存します。

onKeyCompletion

補完中に表示可能ではない文字列が入力されたときに呼ばれます。このイベントで補完リストに対する追加のキーバインドを定義します。

arg は名前つきコレクションです。

  • 'key' - 押されたキーの名前が文字列の形式で格納されています
  • 'modifier' - Shift キー、Ctrl キーの状態のビットパターンが数値の形式で格納されています

このイベントを受信する関数は、値を返す必要があります。値は数値で、core.javascript.txt に定義されています。

var
    COMPLETION_NOP = 0,
    COMPLETION_CANCEL = 1,
    COMPLETION_OK = 2,
    COMPLETION_LIST_HOME = 3,
    COMPLETION_LIST_END = 4,
    COMPLETION_LIST_UP = 5,
    COMPLETION_LIST_DOWN = 6,
    COMPLETION_LIST_PGUP = 7,
    COMPLETION_LIST_PGDN = 8,
    COMPLETION_CARET_LEFT = 9,
    COMPLETION_CARET_RIGHT = 10,
    COMPLETION_CARET_DEL = 11,
    COMPLETION_CARET_BS = 12;
onMouseClick

特定のコントロールがクリックされたときに呼ばれます。

arg は名前つきコレクションです。

  • 'modifier' - Shift キー、Ctrl キーの状態のビットパターンが数値の形式で格納されています
  • 'screen-x' - スクリーン座標系でのマウスカーソルの X 座標が数値の形式で格納されています
  • 'screen-y' - スクリーン座標系でのマウスカーソルの Y 座標が数値の形式で格納されています
  • 'client-x' - クリックされたコントロールの座標系でのマウスカーソルの X 座標が数値の形式で格納されています
  • 'client-y' - クリックされたコントロールの座標系でのマウスカーソルの Y 座標が数値の形式で格納されています
  • 'target' - 何が押されたかを示す文字列が格納されています
    • 'line-number' - ビューの行番号領域
    • 'wrap-overed' - ビューの折り返し桁以降の領域
    • 'text' - テキストの表示される領域
    • 'ruler' - ルーラ
    • 'file-name' - ファイル名を表示しているラベル
    • 'file-info' - 拡張子クラス/エンコーディング/改行コードを表示しているラベル
    • 'caret-position' - キャレットの座標を表示しているラベル
    • 'code-point' - キャレット位置の文字のコードポイントを表示しているラベル
    • 'unknown' - 上記以外
  • 'count' - クリックされた回数
onKeyBackspace

それぞれのキーが押されたときに呼ばれます。

arg は Shift キー、Ctrl キーの状態のビットパターンです。その値は core.javascript.txt に定義されています。

var
    KEYMASK_CTRL = 1,
    KEYMASK_SHIFT = 2,
    KEYMASK_DESCRIPTION = 64,
    KEYMASK_REPEAT = 128,
    KEYMASK = KEYMASK_CTRL | KEYMASK_SHIFT;

arg の KEYMASK_DESCRIPTION ビットが立っているときは、イベントの概要を求められていることを示します。このときは、エディタとしての動作を一切行わず、概要となる文字列を返す必要があります。

KEYMASK_DESCRIPTION は現在、onKeyF1 〜 onKeyF12 のイベントで有効です。

onKeyTab
onKeyReturn
onKeyEscape
onKeyPageUp
onKeyPageDown
onKeyEnd
onKeyHome
onKeyLeft
onKeyUp
onKeyRight
onKeyDown
onKeyInsert
onKeyDelete
onKeyF1 〜 onKeyF12
onKeyA 〜 onKeyZ

それぞれのキーが押されたときに呼ばれます。これらのキーについては、常に Ctrl が押されています(Ctrl が押されていなければ、onKeyPrintable の方が呼ばれるため)。

arg は Shift キー、Ctrl キーの状態のビットパターンです。

onKey0 〜 onKey9
onKeySpace
onKeyBackquote
onKeyExclamation
onKeyAtmark
onKeyHash
onKeyDoller
onKeyPercent
onKeyCaret
onKeyAmpersand
onKeyAsterisk
onKeyLeftParen
onKeyRightParen
onKeyHyphen
onKeyEqual
onKeyLeftBracket
onKeyRightBracket
onKeyBackslash
onKeySemicoron
onKeySingleQuote
onKeyComma
onKeyPeriod
onKeySlash
onKeyUnderscore
onKeyPlus
onKeyLeftCarlyBrace
onKeyRightCarlyBrace
onKeyVerticalBar
onKeyColon
onKeyDouble
onKeyLessThan
onKeyGreaterThan
onKeyQuestion
onKeyNum0 〜 onKeyNum9
onKeyMultiply
onKeyAdd
onKeySeparator
onKeySubtract
onKeyDecimal
onKeyDivide
※アクションのイベントハンドラ各アクションが選択されたタイミングでイベントが発生します。イベント名は、'on' + アクション名 + 'Execute' です。アクション リファレンスも参照してください。

更新履歴


top > イベント リファレンス