Epsalyオブジェクト(ActiveX スクリプト用)

■プロパティ

CurLineNo
機能:現カーソル位置の表示行番号を取得/設定します。
説明:

表示行番号は、1から始まる一連の番号です。 これは、論理行番号ではないので、ご注意ください。

このプロパティから取得した値は、現カーソル位置の表示行番号になります。

このプロパティに数値を代入すると、その値の表示行番号へ、カーソルが移動します。 この代入値が 1 以下の時、先頭行へ移動します。 この代入値が最大表示行を超える時、最終行へ移動します。 移動後の桁位置は、可能なら移動前と同じになります。不可能ならそれに最も近い桁 (同じ近さなら左側の桁)になります。 フリーカーソル時は、行末を越える桁へ移動できます。

用例:JScript の場合:
  Epsaly.CurLineNo = 100;
これを実行すると、カーソルは、第 100 行目に移動します。
CurColumn
機能:現カーソル位置の表示桁番号を取得/設定します。
説明:

表示桁番号は、1から始まる一連の番号です。 これは、行頭からのバイト数や字数ではないので、ご注意ください。

このプロパティから取得した値は、現カーソル位置の表示桁番号になります。

このプロパティに数値を代入すると、その値の表示桁番号へ、カーソルが移動します。 その時、行位置は変わりません。 代入された値の桁へ移動できない時は、それに最も近い桁(同じ近さなら左側の桁)へ 移動します。フリーカーソル時は、行末を越える桁へ移動できます。

用例:JScript の場合:
  Epsaly.CurColumn = Epsaly.CurColumn + 8;
これを実行すると、カーソルは、現桁位置よりも 8 桁右に移動します。
MaxLineNo
機能:現編集テキストの全表示行数を取得します。
説明:このプロパティから取得した値は、 現編集テキストの全表示行数になります。このプロパティには代入できません。
MaxColumn
機能:現編集テキストの折り返し桁数を取得/設定します。
説明:

このプロパティから取得した値は、現在の折り返し桁数になります。

このプロパティに数値を代入すると、 現在の折り返し桁数が、その値に設定されます。その際、画面の表示が更新されます。 設定可能な範囲は、20 〜 1024 桁です。

用例:JScript の場合:
  Epsaly.MaxColumn = 80;
これを実行すると、折り返し桁数が、80 桁に設定されます。
SelText
機能:選択範囲の文字列を取得または設定します。
説明:

このプロパティから取得した値は、選択範囲の文字列になります。
矩形範囲が選択されている場合、その範囲内の各行の選択部の 末尾には改行コードが無条件に付加されます。

このプロパティに文字列を代入すると、 現選択範囲の文字列が、その代入文字列に置き換わります。その際、範囲選択の形態と方向は、 変わりません。
矩形範囲が選択されている場合、その範囲内の各行の選択部は、 代入文字列が改行コードで区切られる各部分に置き換わります。 この改行コードは、区切りの役目を果たすだけで、実際に挿入されるわけではありません。
選択範囲がない時に代入すると、その文字列が現カーソル位置に挿入されます。 その時、その文字列は、文字範囲選択された状態になります。

用例:JScript の場合:
  Epsaly.SelText = "Hello, world";
を実行すると、選択範囲の文字列が、「Hello, world」に変わります。 また、矩形選択範囲が、
  111222333
  AAABBBCCC
  アアアイイイウウウ
のようになっている時、
  Epsaly.SelText = "--X--\n--Y--\n--Z--\n";
を実行すると、矩形選択範囲が次のように変わります。
  111--X--333
  AAA--Y--CCC
  アアア--Z--ウウウ
SelType
機能:選択範囲の形態を取得/設定します。
説明:

このプロパティから取得した値は、選択範囲の形態(あるいは状態)を示す下記の数値になります。
  0: 範囲選択なし
  1: 文字単位の範囲選択中
  2: 行単位の範囲選択中
  3: 矩形領域の範囲選択中

このプロパティに、上記の値を代入すると、現選択状態は、一旦解除されて、 その値に対応する新たな状態になります。これによって選択が開始された場合、 現カーソル位置が、その時点での選択範囲の始点と終点になります。 以降、カーソルを移動すると、選択範囲の形態と始点はそのままで、 選択範囲の終点がそのカーソル位置に変わります。

用例:JScript の場合:
  Epsaly.CurLineNo = 100;
  Epsaly.SelType = 2;
  Epsaly.CurLineNo = 200;
これを実行すると、100 行目から 200 行目までが、行範囲選択されます。
SelLineNo
機能:選択範囲の始点の表示行番号を取得します。
説明:このプロパティから取得した値は、 選択範囲の始点の表示行番号になります。範囲選択されていない時、この値は 0 になります。 このプロパティへの代入はできません。 選択範囲の終点の表示行番号は、現カーソル位置の表示行番号と同じです。
SelColumn
機能:選択範囲の始点の表示桁番号を取得します。
説明:このプロパティから取得した値は、 選択範囲の始点の表示桁番号になります。範囲選択されていないか、または、行範囲が選択 されている時、この値は 0 になります。このプロパティへの代入はできません。 選択範囲の終点の表示桁番号は、現カーソル位置の表示桁番号と同じです。
CurLineText
機能:現カーソル位置の表示行の文字列を取得します。
説明:このプロパティから取得した値は、 現カーソル位置の表示行の文字列になります。このプロパティへの代入はできません。
用例:JScript の場合:
  Epsaly.SelType = 0;
  Epsaly.CurColumn = 1;
  Epsaly.Insert( Epsaly.CurLineText );
これを実行すると、現カーソル行が二重化されます。
CurTerm
機能:現カーソル位置の所定区間の文字列を取得します。
説明:現カーソル位置の文字が、
  ・英単語構成文字( A-Z a-z 0-9 _ )
  ・ひらかな
  ・カタカナ
  ・漢字
  ・全角英数字
  ・全角空白
  ・半角空白
  ・半角カタカナ
のうちのどれかの場合、現カーソル位置の前後で、それと同種の文字が連続する範囲の文字列が、 このプロパティから取得されます。現カーソル位置の文字が、
  ・半角括弧 ( ) { } [ ] < > 「 」
  ・全角括弧 ( ){ }[ ]〈 〉「 」
        〔 〕《 》『 』【 】<>
のうちのどれかの場合、それに対応する括弧で囲まれる範囲の文字列が、 このプロパティから取得されます。もし、現カーソル位置の文字が、 上記以外の場合、空文字列が返されます。このプロパティへの代入はできません。
用例:例えば、
  This is a pen.
という文の pen の先頭部にカーソルがある時、Epsaly.CurTerm は、pen の文字列を 返します。また、
  彼は「はい」と答えました。
という文の閉じ括弧の直前にカーソルがある時、 Epsaly.CurTerm は、「はい」の文字列を返します。
CurChar
機能:現カーソル位置の文字を取得します。
説明:このプロパティから取得した値は、 現カーソル位置にある1字の文字列になります。このプロパティへの代入はできません。
FreeCursor
機能:フリーカーソル状態を取得または設定します。
説明:

フリーカーソル状態は、このプロパティから取得した値が、 0 なら OFF で、1 なら ON になっています。

このプロパティに、1 を代入すると、フリーカーソル状態になります。 0 を代入すると、フリーカーソル状態が解除されます。

用例:JScript の場合:
  fc = Epsaly.FreeCursor;  // 現状態を保管
  Epsaly.FreeCursor = 1;  // フリーカーソルにする
  ・・・・・
  Epsaly.FreeCursor = fc;  // 元の状態に戻す
これで、・・・・・ での操作は、フリーカーソル状態で行なわれて、最後は元の状態に戻ります。
FileName
機能:現編集ファイルのフルパス名を取得します。
説明:このプロパティから取得した値は、 現編集ファイルのフルパス名(絶対パス名)になります。このプロパティへの代入はできません。
用例:JScript の場合:
  Epsaly.Insert( Epsaly.FileName );
これを実行すると、現カーソル位置に、現編集ファイルのフルパス名が挿入されます。
UndoBlock
機能:Undo ブロックを開始/終了します。または、 現在の Undo ブロックの状態を取得します。
説明:

スクリプトの実行で、編集テキストの内容が変更された場合、 Undo で復元することができますが、Undo ブロックを設定していないと、 1回の Undo で、1箇所の変更だけが復元されます。 Undo ブロックを設定しておくと、その範囲内で行なわれた一連の変更が、 1回の Undo でまとめて復元されます。

Undo ブロックを開始するには、このプロパティに 1 を代入します。
Undo ブロックを終了するには、このプロパティに 0 を代入します。

現在の状態を取得するには、このプロパティの値を取得します。 それが、0 でなけれは、Undo ブロック内で、0 なら、Undo ブロック外になります。

用例:JScript の場合:
  Epsaly.UndoBlock = 1;
  ・・・・・
  Epsaly.UndoBlock = 0;
ここで、・・・・・ で行なわれた変更は、1回の Undo で復元されます。

■メソッド

 次に、Epsaly オブジェクトの各メソッドについて説明します。 以下の各メソッドの表題は、便宜上、引数を括弧で囲う形式になっていますが、 これは、必ずしも、実際の言語仕様を反映しているわけではありません。 また、引数名は、説明上、適当に付けているだけで、 言語仕様上の制約ではありません。 なお、以下のどのメソッドも、関数としての値は返しません。


MoveTo( lineno, column )
機能:指定された表示行と表示桁へカーソルを移動します。
説明:lineno は、移動先の表示行番号を指定します。 これは、論理行番号ではないので、ご注意ください。 lineno が 1 以下の時は、先頭行へ移動します。 lineno が最大表示行を超える時は、最終行へ移動します。
column は、移動先の表示桁番号を指定します。これは行頭からのバイト数や字数とは異なります。 column で指定された桁へ移動できない時は、それに最も近い桁(同じ近さなら左側の桁)へ 移動します。フリーカーソル時は、行末を越える桁へ移動できます。
用例:カーソルを 100 行 20 桁へ移動するには、 次のようになります。
JScript の場合:
  Epsaly.MoveTo( 100, 20 );
VBScriptの場合:
  Epsaly.MoveTo 100, 20
Insert( text )
機能:指定された文字列を現カーソル位置に自動字下げなしで挿入します。
説明:text は、挿入する文字列を指定します。 このメソッドの実行時に、選択範囲があると、その範囲の文字列が削除されてから、 text の文字列が挿入されます。この挿入では、text の文字列内に改行コードがあっても、 それに対する自動字下げ(オートインデント)は行なわれません。
用例:現カーソル位置に「Hello, world」という文字列を 挿入するには、次のようになります。
JScript の場合:
  Epsaly.Insert( "Hello, world" );
VBScriptの場合:
  Epsaly.Insert "Hello, world"
InsertInd( text )
機能:指定された文字列を現カーソル位置に自動字下げを伴って挿入します。
説明:text は、挿入する文字列を指定します。 このメソッドの実行時に、選択範囲があると、その範囲の文字列が削除されてから、 text の文字列が挿入されます。この挿入では、text の文字列内に改行コードがあると、 それに対応する自動字下げ(オートインデント)が行なわれます。
用例: 例えば、次のようなテキストがあるとします。
  if( A == B )
  ┃
  X = Y;
このテキストの各行は、TAB インデントされていて、┃ は、現カーソル位置を示す ものとします。次に、JScript で、
    Epsaly.InsertInd( "{\r\n\tA = 1;\r\n\tB = 2;\r\n}" );
を実行すると、このテキストは、
  if( A == B )
  {
    A = 1;
    B = 2;
  }┃
  X = Y;
となります。ちなみに、
  if( A == B ) ┃
  X = Y;
という状態で、同スクリプトを実行すると、
  if( A == B ) {
    A = 1;
    B = 2;
  }┃
  X = Y;
となります。
InsertRect( text )
機能:指定された文字列を現カーソル位置に矩形状に挿入します。
説明:text は、挿入する文字列を指定します。 このメソッドの実行時に、選択範囲があると、その範囲の文字列が削除されてから、 text の文字列が矩形状に挿入されます。この挿入では、text の文字列内の改行コードを、 矩形内の各行の区切りとして扱います。この改行コードは、実際には挿入されません。
用例: 例えば、次のようなテキストがあるとします。
  111111
  222222
  333333
ここで、カーソルが、1 行 4 桁目にある時に、JScript で、
    Epsaly.InsertRect( "--X--\n--Y--\n--Z--\n" );
を実行すると、このテキストは、
  111--X--111
  222--Y--222
  333--Z--333
となります。
Overwrite( text )
機能:指定された文字列を現カーソル位置に上書きします。
説明:text は、上書きする文字列を指定します。 このメソッドの実行時に、選択範囲があると、その範囲の文字列が削除されてから、 text の文字列が上書きされます。この上書きでは、 単純に上書きする文字と上書きされる文字を1字ごとに入れ替えるのではなく、 基本的に、上書き文字列の書き込みによって、それ以降の文字の表示位置が、 ズレないようになっています。
用例: 例えば、次のようなテキストがあるとします。
  あいうえお
  かきくけこ
  さしすせそ
ここで、カーソルが、1 行 5 桁目(「う」の前 )にある時に、JScript で、
  Epsaly.Overwrite( "-ABC-\n-XYZ-" );
を実行すると、このテキストは、
  あい-ABC-
  -XYZ- けこ
  さしすせそ
となります。
ExecCmd( cmd )
機能:指定された番号のテキスト編集コマンドを実行します。
説明: 本エディタの環境設定では、各種コマンドが機能割り当てできますが、 そのほとんどは、本メソッドで実行可能です。 引数 cmd には、実行するコマンドの識別番号を指定します。 この値は、MikoScript のインクルードファイル EditCmds.mh から 判読できます。
用例:JScript の場合:
  Epsaly.ExecCmd(80);     // カーソルを上へ移動
  Epsaly.ExecCmd(81);     // カーソルを下へ移動
  Epsaly.ExecCmd(82);     // カーソルを左へ移動
  Epsaly.ExecCmd(83);     // カーソルを右へ移動
  Epsaly.ExecCmd(180);    // 切り取り
  Epsaly.ExecCmd(181);    // コピー
  Epsaly.ExecCmd(184);    // 貼り付け
  Epsaly.ExecCmd(201);    // 次字を削除
  Epsaly.ExecCmd(202);    // 前字を削除
  Epsaly.ExecCmd(203);    // 現論理行を削除
  Epsaly.ExecCmd(220);    // 改行を挿入
  Epsaly.ExecCmd(222);    // 空行を挿入
  ・・・・・
print( text )
機能:指定された文字列をスクリプトコンソールウィンドウにプリントします。
説明: このメソッドは、text で指定された文字列を、「スクリプト コンソールウィンドウ」のテキストの末尾に追加します。 このウィンドウは、デバッグ時等に、各種の内部情報やデータを プリントして確認する時に使うと便利です。このプリント出力は、現操作対象の編集テキストには 影響しません。
用例: 次のスクリプトは、現編集ファイルのフルパス名、現カーソル位置の表示行と表示桁、 それに、選択範囲の文字列を、スクリプトコンソールウィンドウにプリントします。

JScript の場合:
    with( Epsaly )
    {
        print( FileName + ": " + 
               CurLineNo + " 行, " + 
               CurColumn + " 桁\n" );
        print( SelText );
    }

VBScript の場合:
    Set e = Epsaly
    e.print e.FileName & ": "
    e.print e.CurLineNo & " 行, "
    e.print e.CurColumn & " 桁" & vbCrLf
    e.print e.SelText