|
ウィンドウ分割の状態は、確かにデスクトップ保存では保存されないです。
マクロでやるとしたら、情報の取得はsplitstate, splitmode, splitposキーワード
があります。
分割を実行したり設定するには、split文, setsplitinfo文, splitswitch文がありま
す。
例えば以下のようなマクロで一応できました。
分割側のカーソル位置の情報取得が面倒で、ちょっとのつもりがけっこう長くなって
しまいました。
デスクトップ保存対象ファイルの全部ではなく1つのファイルだけです。
V7.xxの古い方式は対応していないです。
//INIファイル名 例:c:\test\test.mac.ini
$ini = currentmacrofilename+".ini";
$sec = filename;
if(splitstate!=0){
question "分割状態を\n"+$ini+"\nに保存します。";
if(result==false){
endmacro;
}
#splitstateOrg = splitstate;
writeininum $ini, $sec, "splitmode", splitmode;
writeininum $ini, $sec, "splitstate", splitstate;
writeininum $ini, $sec, "splitpos", splitpos;
call SetSplitState 1;
writeininum $ini, $sec, "screentopy1", screentopy;
writeininum $ini, $sec, "lineno1", lineno;
call SetSplitState 2;
writeininum $ini, $sec, "screentopy2", screentopy;
writeininum $ini, $sec, "lineno2", lineno;
call SetSplitState #splitstateOrg;
} else {
#splitstate = getininum( $ini, $sec, "splitstate" );
if( #splitstate == 0 ) {
message "記憶された情報がありません";
endmacro;
}
question "分割状態を\n"+$ini+"\nから復元します。";
if(result==false){
endmacro;
}
#splitstate = getininum( $ini, $sec, "splitstate" );
#splitmode = getininum( $ini, $sec, "splitmode" );
#splitpos = 0; //ウィンドウサイズが違う可能性で境界線は復元しない
//境界線も復元する場合 #splitpos = getininum( $ini, $sec, "splitpos" );
split #splitmode, 1, #splitpos;
call SetSplitState 1;
disabledraw;
movetolineno 1, getininum( $ini, $sec, "lineno1" );
enabledraw getininum( $ini, $sec, "screentopy1" );
call SetSplitState 2;
disabledraw;
movetolineno 1, getininum( $ini, $sec, "lineno2" );
enabledraw getininum( $ini, $sec, "screentopy2" );
call SetSplitState #splitstate;
}
endmacro;
SetSplitState:
if( splitstate == 1 && ##1 == 2 ) { //上・左
splitswitch; //2にする
} else if( splitstate == 2 && ##1 == 1 ) { //下・右
splitswitch; //1にする
}
return;
|
|