English help on website



colormarker文(Ver9.35対応版)
目次検索系文colormarker文− JSON/オブジェクト指定について
colormarkerのJSON/オブジェクト指定について
colormarker文のパラメータ1が文字列で"{"から始まる場合、文字列をJSONとして解釈し、まとめて処理できます。(V9.19以降)[非同期]
JavaScriptの場合、オブジェクトを指定できます。
この場合、パラメータ2以降は無視されます。

プロパティ名と意味:
プロパティ名 値の種類 意味
unit         文字列   位置の単位
text         文字列   文字色 例:"#FFFF00"
back         文字列   背景色 例:"#000088"
wave         文字列   波線色 例:"#FF0000"
style        文字列   スタイル
kind         文字列   編集操作の種類
colorcode    文字列   強調表示の種類
userdata     数値     ユーザーデータ
funcid       数値     関数ID
layer        文字列   レイヤー名
items        配列     上位のオブジェクトを継承して、上書きできる入れ子構造
line1        数値     開始行
col1         数値     開始桁
line2        数値     終了行
col2         数値     終了桁
clear        数値     消去
noredraw     数値     再描画しない
$json = """
  {
    "layer": "mywave",
    "kind": "erase",
    "wave":"#FF0000",
    "items": [
      {"line1":1,"col1":0,"line2":2,"col2":0},
      {"line1":4,"col1":0,"line2":5,"col2":0},
      {"line1":6,"col1":0,"line2":7,"col2":0,"wave":"#FFFF00"},
    ]
  }
  """;
colormarker $json;
js{
  var obj = {
    layer: "yellowline",
    kind: "erase",
    text: "#000000",
    back: "#FFFF00",
    line1: lineno(),
    col1: 0,
    line2: lineno(),
    col2: linelen2(),
  };
  colormarker(obj);
}
unitは、"xy" "char" "wcs" "ucs4" "cmu" "gcu" のいずれかで、文字の単位に準じます。"xy"は秀丸単位(座標)で、"char"は秀丸単位(文字列/行)です。既定は"char"です。
既定の"char"のとき、line1, line2は1から数えます。col1, col2は0から数えます。

styleは、"normal" "bold" "underline" "underline bold" "italic" "italic bold" "underline italic" "underline italic bold" "outline" "superbold" "shadow" "transparent"のいずれかで、それぞれ数値のスタイル(0〜11)に対応します。
既定は"transparent"です。(V9.19のヘルプで"normal"となっていたのは誤り)

kindは、"fix" "split" "erase"のいずれかで、それぞれパラメータ4の種類(0x00〜0x02)に対応します。既定は"fix"です。

colorcodeは、"script" "hilight1"(〜8) "number" "hilightline1"(〜4) "comment" "string" "ifdef" "especially1"(〜4)のいずれかで、パラメータ4の種類の上位16ビットの数値に対応します。
既定は無しです。

userdataは、ユーザーデータです。

funcidは、hidemaru.getFunctionIdで取得できるIDです。
関数は、秀丸エディタ本体から必要時に呼ばれるようになります。関数のパラメータはuserdataになります。

itemsは、配列を指定します。配列の要素の書き方は、このオブジェクトそのものと全く同じです。
色やスタイルは上位のオブジェクトを継承し、上書きできます。上書きしても継承元は変わりません。
unit, text, back, wave, style, kind, colorcode, userdata, funcid, layerは継承されます。
line1, col1, line2, col2, clear, noredrawは継承されません。
入れ子の階層構造は指定するときのみで、最終的には上書きされた平坦な形式で格納されます。

line1, col1, line2, col2の4つが揃って記述されたら実行されます。
効果が無い状態(text, back, wave, styleは透明/透過、kindは0相当、userdataは0)にしたとき、消去の意味になります。

clearは、line1, col1, line2, col2と共に指定されている場合は、範囲を消去します。
範囲が無い場合は、指定されているレイヤーの全てを消去します。

noredrawは、どこかに1つでもあったら有効です。

末尾のカンマはありでもなしでも可ですが、他のプログラムとやりとりする場合はだめなことがあるので、注意が必要です。

JavaScriptによる実行では、オブジェクト指定時に限って、非同期の関数中で呼ぶことができます。詳細
JSONの文字列だけでなく、オブジェクトそのものを指定できます。
js{
  selectallfound();
  colormarker({
    wave: "#08F",
    items: getselectedrange().items
  });
}
colormarker, getcolormarker, setselectionrange, getselectedrangeのオブジェクト指定はだいたい同じ書き方になっていて、相互に呼び換えることができます。