CSV/TSVモードで使うマクロの例です
CSV/TSVモードを示すキーワードはないので、「ファイルタイプ別の設定」を確認する。
getconfig関数を使い、「タブの文字数」の設定が 通常モード TSV/CSVモード 自由配置モード か判定する。
各モードと、CSV/TSVを別々に判定。
#TabMode = getconfig("TabMode") //#TabMode と 0x000f で ANDした値がモードになる。 //0x0000 通常モード //0x0001 TSV/CSVモード(TSVかCSVかは0x0100で判断) //0x0002 自由配置モード
#Mode = #TabMode & 0x000f; #CsvTsv = #TabMode & 0x0f00;
if(#Mode == 0x000){ //通常モード else if(#Mode == 0x001){ //TSV/CSVモード if(#CsvTsv == 0x0100){ //CSVモード }ekse{ //TSVモード } else if(#Mode == 0x002){ //自由配置モード }
各モードと、CSV/TSVを一度に判定。
#TabMode = getconfig("TabMode") //#TabMode と 0x000f で ANDした値がモードになる。 //0x0000 通常モード //0x0001 TSV/CSVモード(TSVかCSVかは0x0100で判断) //0x0002 自由配置モード //0x0f00 TSV/CSV判別(&した値) //0x0100 TSV/CSV判別はCSVモード(0x0001もあるとき) #MODE_CSV = 0x0101; #MODE_TSV = 0x0001; #Mode = #TabMode & 0x0f0f;
if(#Mode == #MODE_CSV){ //CSVモード else if(#Mode == #MODE_TSV){ //TSVモード else{ //CSV/TSV以外 }
config文で、設定する
#TabMode = getconfig("TabMode");
if((0x0f0f & #TabMode) != 0x0101){
//CSVモードではないので、CSVモードに設定する。
config("xTabMode:0x0101");
}
名前が同じでも共有フラグが異なる場合は、別の「静的な変数」と認識されます。
setstaticvariable "check", "hidemaru editor", 0;
setstaticvariable "check", "秀丸エディタ", 1;
//名前は大文字小文字は区別されない
$n1 = getstaticvariable("CHECK", 0);
$n2 = getstaticvariable("CHECK", 1);
message $n1 + "\n" + $n2;
//後始末
setstaticvariable "check", "", 0;
setstaticvariable "check", "", 1;
endmacro;
「静的な変数」は外部DLLから取得・設定が可能です。共有フラグ「-1」だと、通常の文字変数と同じなので、外部DLLとのやり取りで使用するには都合がいいです。