Hidemaru Q and A

第III部〜秀丸マクロのいろはにほへと
 CSV/TSVモード


CSV/TSVモード

はじめに

CSV/TSVモードで使うマクロの例です

関連キーワード

tabcolumn
カーソルがどの位置(列)に含まれるかを表す。(Ver.8.88以降) forwardtab、backtabの数え方に対応。
tabcolumnmax
tabcolumn の数え方で、現在のテキスト内容から得られる最大の値(最大列数)。(Ver.8.98以降)

関連する文、関数

forwardtab
タブ区切り/カンマ区切りの次の位置にジャンプします。
backtab
タブ区切り/カンマ区切りの前の位置にジャンプします。
selectcolumn
タブストップまたはTSV/CSVモードの選択を行います。(Ver.8.30以降)
getconfig
"TabMode"で設定を取得。
config
"xTabMode"で、CSV/TSVモードに変更する。

CSV/TSVモードの判定及び切替

CSV/TSVモードを示すキーワードはないので、「ファイルタイプ別の設定」を確認する。

getconfig関数を使い、「タブの文字数」の設定が 通常モード TSV/CSVモード 自由配置モード か判定する。

その1

各モードと、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){ //自由配置モード }

その2

各モードと、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以外 }

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;

共有フラグの「-1」について

「静的な変数」は外部DLLから取得・設定が可能です。共有フラグ「-1」だと、通常の文字変数と同じなので、外部DLLとのやり取りで使用するには都合がいいです。


ページトップ 目次に戻る