|
>起動と同時にファイル種別を判断してこのマクロを動かせればいいんですが
>良くわかりません(^^;
こんなんでどうでしょ?。
ファイル種別を判定するのは、"filetype"を使用すればいいのでは
ないでしょうか?。
//---------------- totab.mac ------------------------------------------//
$$ver = "1.00";
$$date = "2004.10.22";
$$author = "プックン" ;
$$fname = currentmacrobasename ;
$info = "\n" + $$fname + " Ver " + $$ver+ "\n最終更新日付:"+$$date ;
$info = $info + "\n作者:"+$$author ;
//$iniファイル定義
$ini = hidemarudir + "\\" + "puku.ini";
//拡張子情報をiniファイルから取得するか、否かの設定。
#get_info_ini = 1 ; //0:iniファイルから取得しない。1:取得する。
//拡張子最大数
#max_info = 20 ;
//セクション
$Section = currentmacrobasename ;
//キー
$key = "ext" ;
disabledraw;
if(#get_info_ini == 1){
call Set_default ;
call Get_list $ini ,$Section, $key ;
//戻り値:拡張子定義個数
#info_num = ##return ;
}
else{
//拡張子の登録
//登録数
#info_num = 0;
$get_list[#info_num] = ".txt" ; #info_num = #info_num + 1 ;
$get_list[#info_num] = ".cpp" ; #info_num = #info_num + 1 ;
$get_list[#info_num] = ".c" ; #info_num = #info_num + 1 ;
$get_list[#info_num] = ".h" ; #info_num = #info_num + 1 ;
}
call Get_list $ini ,$Section, $key ;
//filetype 現在編集中のファイルのファイルタイプを表します。すべて小文字です。
ファイルの拡張子を表すときは必ず先頭にピリオド(.)が入ります。
//
// .xxx 拡張子あり(xxx部に拡張子が入ります。例:test.txtの場合[.txt]
// . 拡張子なし
// new (無題)
// grep grep結果
// exeresult 実行結果
// webbrowse Webブラウズモード(Hidemarnet Explorerがインストールされてい
るときのみ)
//開いたファイルの拡張子を取得
$$ext = filetype ;
if ((leftstr($$ext,1) == ".") && //拡張子情報の先頭が"."であること
(strlen($$ext) != 1)){ //拡張子情報が、"."以外であること
call Check_ext $$ext ;
##Res_check = ##return ;
if(##Res_check == 0){ //登録拡張子が存在する場合"0"になる
//現在の位置を記憶
#x = x ;#y = y ;
selectall;
totab;
escape;
save;
escape ;
enabledraw;
//マクロ開始位置に移動
moveto #x,#y;
}
}
LEND:
endmacro;
Set_default:
//処理:Iniファイルの各種設定情報がなければびデフォルトを設定する
//テンプレート名情報
$$wk = getinistr( $ini , $Section , "#0_" + $key );
//iniファイルから$Sectionの "#0_" + $keyの情報を取得し、情報が無ければ
//デフォルト情報を設定する。
if( $$wk == "" ){
##array_cnt = 0;
$$array[##array_cnt] = ".txt" ; ##array_cnt = ##array_cnt + 1 ;
$$array[##array_cnt] = ".cpp" ; ##array_cnt = ##array_cnt + 1 ;
$$array[##array_cnt] = ".c" ; ##array_cnt = ##array_cnt + 1 ;
$$array[##array_cnt] = ".h" ; ##array_cnt = ##array_cnt + 1 ;
##i = 0 ;
while( ##i < ##array_cnt ) {
writeinistr $ini, $Section, "#" + str( ##i ) + "_"+ $key, $$arr
ay[##i] ;
//INIファイルにデータを書きこむ文です。
//writeinistr INIファイル名, セクション名, キー名, 文字
//writeinistr "HIDEMARU.INI", "Option", "RefMark", ">> ";
##i = ##i + 1;
}
message currentmacrobasename + "\nマクロ" +
"設定情報を下記場所\n" +
" " + $ini + "\n" +
"に作成しました。";
}
return ;
Get_list:
//引数渡し
//第一引数: 文字列型,listを取得するiniファイルを指定
$$ini = $$1;
//第二引数: 文字列型,listを取得するiniファイルのセクション名を指定
$$Section = $$2;
//第二引数: 文字列型,listを取得するiniファイルのkeyを指定
//keyは、"#" + 数字 + 指定文字列
//を連結した文字列をgetinistrにて使用
$$key = $$3;
//戻り値
//取得した配列の数
//および、グローバル変数 $get_listに取得した配列を保存
//変数(配列) $get_listの内容を削除
##i = 0 ;
while( $get_list[##i] != "" ) {
//変数の値削除
$get_list[##i] = "" ;
##i = ##i + 1;
}
##menu_su = 0 ; //初期化
while( ##menu_su < #max_info )
{
//INIファイルから文字列を取りだします。
//getinistr( s1, s2, s3 )
//s1がiniファイル名、s2がセクション名、s3がキー名です。
$$wk = getinistr( $ini , $$Section , "#" + str( ##menu_su ) +"_"+ $$
key );
if( $$wk == "" )
{
break;
}
$get_list[##menu_su] = $$wk ;
##menu_su = ##menu_su + 1;
}
return ##menu_su ;
Check_ext:
//引数渡し
//第一引数: 文字列型,チェック対象拡張子情報
//戻り値
//0:登録拡張子が存在する。
//1:登録拡張子は存在しない。
$$str = $$1;
//登録拡張子と、チェック対象拡張子情報を比較する。
##i = 0 ;
##flag = 0 ;
while( ##i < #info_num ) {
if($$str == $get_list[##i]){
##flag = (##flag | 0x01) ;
break ;
}
##i = ##i + 1;
}
##flag = ##flag ^ 0x01 ; //bit反転
return ##flag ;
//---------------- totab.mac ------------------------------------------//
|
|