ホットキーを割り当てて、2つ目秀丸を起No.32834
popper さん 14/01/16 14:04
 
ランチャーソフトで、ホットキーを割り当てて、
秀丸のプロジェクトファイルを起動して使用しています。

最初に立ち上げたプロジェクトで、
更新のあったファイルを未保存のまま別のプロジェクトを起動すると、
「〜は更新されています。保存しますか?」とメッセージボックスが表示されるので
すが、
ここで「いいえ」「キャンセル」をクリックすると100%秀丸がフリーズします。
「はい」をクリックするとフリーズしない場合もありますが、大抵はフリーズします。

次のプロジェクトを立ち上げる前に、すべてのファイルを保存すればいいのですが、
複数のプロジェクトを頻繁に切り替えて仕事をすることが多いので面倒です。

メッセージボックスで「はい」をクリックするのも面倒なので、
次のプロジェクトを立ち上げる前に、
開いているすべてのファイルを自動で保存するようにしたいのですが、
秀丸以外のソフト(ホットキーの割り当てソフトAutoHotKey)で
ホットキーを割り当てているので、解決方法が分かりません。

外部から秀丸のマクロを操作して、すべて保存する方法はあると思うのですが、でき
るだけ簡単に対処するにはどうすればよいでしょうか。

よろしくお願いいたします。

秀丸のバージョンは、64bit版 8.40 Beta 1 です。

[ ]
RE:32834 ホットキーを割り当てて、2つ目No.32835
秀丸担当 さん 14/01/16 15:29
 

バグ情報ありがとうございます。

いろいろ試してみたところ、起動オプションで /e:xxx.hmdesk といったような
デスクトップ保存をファイルにしたものを指定して、ホットキーでそのコマンド
ライン付きで起動するときに、再現させることができました。
AutoHotkeyでなくても、デスクトップ上にショートカットを作ってそのショート
カットに対してホットキーを割り当てた場合で再現できました。
マウスのクリックでは大丈夫なようで、秀丸エディタのキー入力の処理の途中で
本体を終わらせるようなことがきっかけになっていそうです。
調べて次のβ版で修正させていただきます。

現状でなんとかするとしたら、マクロを経由してみたら大丈夫でした。
例えばrestoredesk.macというファイル名で以下のマクロをマクロファイル用の
フォルダに置きます。

restoredesktop getarg(0);

秀丸エディタの起動オプションは、

/xrestoredesk.mac /a"c:\folder\a.hmdesk"

や、

/xrestoredesk.mac /a"c:\folder\b.hmdesk"

というようにします。

デスクトップ復元についてのことかと思いましたが、もしそうでなかったらご指
摘いただけると助かります。

[ ]
RE:32835 ホットキーを割り当てて、2つ目No.32836
popper さん 14/01/16 16:29
 
.hmdesk ファイルではなくて、.hmbook ファイルを開いています。

秀丸エディタの起動オプション設定をどのようにすればよいでしょうか?

よろしくお願いいたします。

[ ]
RE:32836 ホットキーを割り当てて、2つ目No.32837
秀丸担当 さん 14/01/16 17:00
 

コマンドラインで .hmbook ファイルを指定して、ファイルマネージャ枠に読み
込ませる起動オプションは無いはずなので、どういう使い方のことを言われてい
るのか、わからなくなってしまいました。

もし仮にそういう起動オプションがあったとしても、ファイルマネージャ枠に読
み込ませるという動作だと思うので、全終了と保存の問い合わせは関係ないよう
な気がします。

全終了と保存の問い合わせが発生するのは、やはりデスクトップ復元をされてい
るのではないかと思います。
.hmbookも.hmdeskも単なるファイル名の羅列として解釈できるので、/e:オプシ
ョンで、.hmbookを指定してデスクトップ復元として使われているということで
しょうか。

そうだとしたら、前のコメントの.hmdeskと書いた部分を.hmbookと読み替えてい
ただくだけで大丈夫です。
とはいえ、そうだとしたら普通の.hmbookでデスクトップ復元をするとタブモー
ドの情報が無いので、非タブモードになるはずで、私が勘違いしている気がしま
す。

----

ちなみに起動オプションでファイルマネージャ枠に読み込ませるとしたら、以下
の方法でできます。
マクロは例えばloadproject.macというファイル名で以下の内容にします。

loaddll "HmExplorerPane.dll";
#ret=dllfunc("LoadProject",hidemaruhandle(0),getarg(0));

起動オプションは例えば以下のようにします。

 /xloadproject.mac /a"c:\_\a.hmbook"

この方法は保存の問い合わせを伴わないので、問題の症状には関係ないと思いま
す。

[ ]
RE:32837 ホットキーを割り当てて、2つ目No.32838
popper さん 14/01/17 00:02
 
>マクロは例えばloadproject.macというファイル名で以下の内容にします。
>loaddll "HmExplorerPane.dll";
>#ret=dllfunc("LoadProject",hidemaruhandle(0),getarg(0));
>
>起動オプションは例えば以下のようにします。
>
> /xloadproject.mac /a"c:\_\a.hmbook"
>
>この方法は保存の問い合わせを伴わないので、問題の症状には関係ないと思います。

AutoHotKey のファイルを見直してみると、
起動オプションの最後に /e をつけていました。
/e を削除すると、保存の問い合わせが出なくなりました。


更新されたファイルがあれば自動保存するようにしたいので、
マクロには、#ret=dllfunc(〜)の後ろに以下を追加しました。

if( tabmode != 0
 && hidemarucount >= 2
 ){
 quit;
        saveall;
}

余分な「無題」ファイルを終了させた後で、更新ファイルが保存できると考えたので
すが、できません。
saveall; を if 文の後に持ってきても、同様にダメでした。
saveall; を quit; の前に持ってくると、保存を促すダイアログが表示されてしまい
ます。

どうすればいいでしょうか。

よろしくお願いいたします。

[ ]
RE:32838 ホットキーを割り当てて、2つ目No.32841
秀丸担当 さん 14/01/17 09:14
 

保存の問い合わせについては、/eを使われていたということで、了解しました。

無題のファイルを更新中であっても全て閉じるというコマンドや文は無いので、
プログラム的に処理する必要があります。
例えば以下の様なマクロにするといいと思います。


//他の無題のファイルを閉じる
#c=hidemarucount;
while(#c>0){
    #c=#c-1;
    if(filetype[#c]=="new"){
        closehidemaruforced #c;
    }
}
//自分自身が無題で更新だった場合に更新状態ではなくする
if(filetype=="new"){
    clearupdated;
    closenew;
}
//更新されているファイルを全て保存
saveupdatedall;

[ ]
RE:32841 ホットキーを割り当てて、2つ目No.32842
popper さん 14/01/17 10:32
 
お示しいただいたマクロの動作を確認しました。
更新ファイルがすべて保存されるようになりました。

これで、より一層快適に秀丸が使えます。
ありがとうございました。

[ ]