restoredesktopに引数を指定しても動かなNo.03925
h-tom さん 09/09/22 11:23
 

h-tom です。

秀丸エディタ:Ver.8β17
OS:Windows Vista HP SP2(32bit)

メニューから、「デスクトップを名前を付けて」で、保存したファイルを、
restoredesktop の 引数に指定しても、復元できません。

メニューから、「デスクトップを開く」で選択した場合は、問題なく復元
します。

[ ]
RE:03925 restoredesktopに引数を指定してNo.03926
h-tom さん 09/09/22 14:00
 

h-tom です。

>メニューから、「デスクトップを名前を付けて」で、保存したファイルを、
>restoredesktop の 引数に指定しても、復元できません。
どうも、症状が安定しません。
何事もなかったように、復元する場合もあります。

復元できない場合は、何も表示されない場合と、「復元に失敗した」とメッセージ
が、表示される場合があります。

動作確認用のマクロです。
#main = hidemaruhandle(0);
//最初に表示する拡張子
openfile currentmacrodirectory + "\\*.hmdesk";
#sub = hidemaruhandle(0);
$target = filename;
//起動した秀丸エディタに戻り選択したファイルを閉じる
setactivehidemaru #main;
//自分は閉じられないので、失敗する。
closehidemaruforced #sub;
if(!result)endmacro;
message "ok\n" + $target;
restoredesktop $target;
endmacro;

[ ]
RE:03926 restoredesktopに引数を指定してNo.03947
秀丸担当 さん 09/09/24 16:13
 

>メニューから、「デスクトップを名前を付けて」で、保存したファイルを、
>restoredesktop の 引数に指定しても、復元できません。

マクロの通りにしてやってみたりしたのですが、うまく再現できませんでした。
新規状態からマクロを実行すると、hmdeskファイルを開いた状態になって、マク
ロの通りendmacroになって、restoredesktopはされませんでした。そのようなこ
とはないでしょうか。
または、[動作環境]→[ファイル]→[排他制御]の関係で、既にファイルを開いて
いてうまくいかないということもあるかもしれません。
もし他に条件と思われることが分かるようでしたらまた報告いただけると助かり
ます。

[ ]
RE:03947 restoredesktopに引数を指定してNo.03953
h-tom さん 09/09/24 20:50
 

h-tom です。

>マクロの通りにしてやってみたりしたのですが、うまく再現できませんでした。
マクロに、"disablebreak;"があると、ダメみたいです。

マクロの起動方法が、
1)自作マクロその1(キースキャンループ&分岐処理)
 ↓
2)自作マクロその2(開いているファイルを、execmacroで実行するマクロ)
 ↓
3)自作マクロその3(ファイルを選択して、デスクトップ復元)
という、方法で実行していて、1)で、"disablebreak;"していました。

正常に動いていた時は、メニューの「マクロ実行」から、実行していました。

ということで、動作確認用のマクロです。
先頭の"disablebreak;"を有効にすると、message表示後、何も起こりません。
無効にすると、message表示後、復元が実行されます。
そちらで再現してくれればいいのですが。

disablebreak;
#main = hidemaruhandle(0);
//最初に表示する拡張子
openfile currentmacrodirectory + "\\*.hmdesk";
#sub = hidemaruhandle(0);
$target = filename;
//起動した秀丸エディタに戻り選択したファイルを閉じる
setactivehidemaru #main;
//自分は閉じられないので、失敗する。
closehidemaruforced #sub;
if(!result)endmacro;
message "ok\n" + $target;
restoredesktop $target;
endmacro;

[ ]
RE:03953 restoredesktopに引数を指定してNo.03963
秀丸担当 さん 09/09/25 14:14
 

>マクロに、"disablebreak;"があると、ダメみたいです。

disablebreakで再現させることができました。
ありがとうございます。
これ

  disablebreak;
  restoredesktop;

だけでも起きました。

  disablebreak;
  closenew;

でも「ファイルを閉じる」はできないです。
更新されているときに保存の問い合わせも出ないようになっているためで、常に
キャンセル扱いになっていました。
これを直すのは慎重に考えたほうがいいかもしれないです。
そもそもenablebreakが無いというのが不便なので、とりあえずの対策として、
enablebreakをβ18で追加してみようと思います。

[ ]
RE:03963 restoredesktopに引数を指定してNo.03975
h-tom さん 09/09/25 22:26
 

h-tom です。

>そもそもenablebreakが無いというのが不便なので、とりあえずの対策として、
>enablebreakをβ18で追加してみようと思います。
disablebreak中かどうかを示すフラグもあったほうがいいのでは?
execmacroで多重起動中に、状況もわからずに、disable/enable するのも、
ちょっと怖いような気もします。

[ ]
RE:03975 restoredesktopに引数を指定してNo.03979
秀丸担当 さん 09/09/28 11:28
 

>disablebreak中かどうかを示すフラグもあったほうがいいのでは?
>execmacroで多重起動中に、状況もわからずに、disable/enable するのも、
>ちょっと怖いような気もします。

disablebreak中かどうかも判断できたほうがいいかもしれません。
あまりキーワードが増えすぎるのも何なので、getmodeのような関数で汎用的にし
たほうがいいかもしれないです。

disablebreak中にrestoredesktopとclosenewができないのは、検討してみてやっ
ぱりバグ扱いということで、できるように修正させていただきます。
それでdisablebreakの判断は必要でなくなると思うので、getmodeはネタというこ
とにさせていただいて、保留にしようと思います。

[ ]