English help on website



getselectedrange() 関数(Ver9.34対応版)
目次関数(その他関数)− getselectedrange() 関数
getselectedrange関数は、範囲選択の情報をまとめて取得します。(V9.20以降)
パラメータ1(文字列型、省略可能)
JSON形式で取得する単位を指定します。
省略すると既定の"char"になります。

返り値(文字列型)
JSONの文字列を返します。

JavaScript
JavaScriptの場合、パラメータ1はオブジェクトを指定できます。(JSONの文字列でも可)
返り値はオブジェクトになります。


JSON指定/オブジェクト指定について
マクロの関数の場合は、取得する単位をJSONの文字列で指定し、JSONの文字列を返します。
JavaScriptの場合は、オブジェクトを指定し、オブジェクトを取得します。
書き方はgetcolormarkerと同じで、単位と範囲だけに限定されたものになります。

指定するプロパティ名と意味:
プロパティ名 値の種類 意味
unit         文字列   位置の単位(既定は"char")
結果のプロパティ名と意味:
プロパティ名 値の種類 意味
unit         文字列   位置の単位
items        配列     入れ子構造のオブジェクトの配列
line1        数値     開始行
col1         数値     開始桁
line2        数値     終了行
col2         数値     終了桁
unitは、"xy" "char" "wcs" "ucs4" "cmu" "gcu" のいずれかで、文字の単位に準じます。"xy"は秀丸単位(座標)で、"char"は秀丸単位(文字列/行)です。既定は"char"です。
既定の"char"のとき、line1, line2は1から数えます。col1, col2は0から数えます。
結果は、選択が0個でも1個でも複数でも、"items"の配列があるオブジェクトとして返ります。
選択が1個以上ある場合は、"unit"が根本にあり、"items"の配列に"line1","col1","line2","col2"があるオブジェクトとして返ります。
js{
  range = getselectedrange();
  message("選択個数:"+range.items.length);
}
endmacro;
js{
  //単位を指定して取得
  range = getselectedrange({unit:"wcs"});
}
endmacro;
js{
  //アウトプット枠に整形して出す
  debuginfo(2);
  range = getselectedrange();
  console.log( JSON.stringify(range,null," ").replace(/\n/g,"\r\n") );
}
endmacro;
colormarker, getcolormarker, setselectionrange, getselectedrangeのオブジェクト指定はだいたい同じ書き方になっていて、相互に呼び換えることができます。
js{
  //選択箇所に色を付ける(複数でも)
  colormarker({
    text: "#F00",
    items: getselectedrange({}).items
    });
}
endmacro;
js{
  //選択箇所に色を付ける(複数でも)
  cm=getselectedrange();
  cm.text="#0FF";
  colormarker(cm);
}
endmacro;