「OPEN」についてNo.06950
小川 さん 12/05/18 00:39
 
OS : WindowsXP SP3 (32bit版)
秀丸 8.10

OPEN コマンドで、ファイルオープンダイアログを出し、
任意のファイルをダブルクリックで開いた場合、
result が false となっています。
openfile "*.*";  として、ダイアログを出しているときも同様でした。

 OPEN;
 if( result == false )
 {
  message "キャンセルされたっぽいので、マクロを終了します。\n";
  endmacro;
 }

Windowsの一般的な反応を考えると、result には false でない値が入って欲しいと
ころです。
ご確認ください。
(8.10 より新しいバージョンは試していませんが、
 改版履歴には特に記述がなかったことは確認しています)

以上です。よろしくお願い致します。

[ ]
RE:06950 「OPEN」についてNo.06951
秀丸担当 さん 12/05/18 10:29
 

>OPEN コマンドで、ファイルオープンダイアログを出し、
>任意のファイルをダブルクリックで開いた場合、
>result が false となっています。

こちらで同じ条件で試してみたところでは、開くダイアログからファイルを選ん
で開かれたときはresultはtrueになっていました。
開くダイアログでキャンセルすると、resultはfalseでした。

幾つかのパターンを試してみて、1つ例外がありました。
[その他]→[動作環境]の左下の「上級者向け設定」をONにして、
[その他]→[動作環境]→[ファイル]→[排他制御]の「秀丸エディタで同じファイ
ルを開く場合」が「同じファイルを2つ開くことを禁止する」のとき、
今開いているファイルと全く同じファイルを選択して開いた場合は全く何も起き
ないことになり、このときはresultはfalseでした。
この条件のときはこの結果が妥当かどうかというのは考え方によるので議論の余
地があると思います。

現状での回避方法としては、マクロ実行中に動作環境に関わらず排他制御の「秀
丸エディタで同じファイルを開く場合」を setcompatiblemode文 で明示的に指
定することもできます。
またはclosenew文を実行しておいて、新規作成状態からOPENを実行するようにし
ても回避できると思います。

そういう条件ではないとしたら再現できていないので、こちらで確認している方
法と違う点があるようでしたら教えてもらえると助かります。

[ ]
RE:06951 「OPEN」についてNo.06962
小川 さん 12/05/21 22:06
 
調査、並びに回答、ありがとうございます。

私の環境は、
>[その他]→[動作環境]の左下の「上級者向け設定」をONにして、
>[その他]→[動作環境]→[ファイル]→[排他制御]の「秀丸エディタで同じファイ
>ルを開く場合」が「同じファイルを2つ開くことを禁止する」のとき、
>今開いているファイルと全く同じファイルを選択して開いた場合は全く何も起き
>ないことになり、このときはresultはfalseでした。
スバリこれでした。
ご指摘の通り、ダブルクリックでファイルを開いても、「開く」ボタンでファイルを
開いても、何も起こりませんでした。


ご提示頂いた回避方法ですが、試してはおりませんが、どちらも採用しませんでした。
>現状での回避方法としては、マクロ実行中に動作環境に関わらず排他制御の「秀
>丸エディタで同じファイルを開く場合」を setcompatiblemode文 で明示的に指
>定することもできます。
・setcompatiblemode 0x0020 では、その後の編集ができなくて困る
・setcompatiblemode 0x0040 では、「やり直しバッファ」の中身が消える
のではないかと思い、採用しませんでした。

>またはclosenew文を実行しておいて、新規作成状態からOPENを実行するようにし
>ても回避できると思います。
これも、「やり直しバッファ」の中身が消えるのではないかと思い、採用しませんで
した。

重ねて申し上げますが、試していませんので、違いましてもご容赦ください。
私のほうの対処としましては、「開きたいファイルと違うファイルを開いた状態で、
同コマンドを使用するよう(使用者である私が)気をつける」というところに落ち着
きました。


最初の投稿には書いておりませんでしたが、そもそもの目的は
「使用者が「開く」メニューで開いたファイルのフルパスを、変数に格納しておく」
というものでした。
まぁ、使用者は自分なので、逃げ道としては上記の方法で充分かな、といったところ
です。

以上です。今後とも、よろしくお願い致します。

[ ]
RE:06962 「OPEN」についてNo.06963
秀丸担当 さん 12/05/22 10:47
 

>スバリこれでした。
>ご指摘の通り、ダブルクリックでファイルを開いても、「開く」ボタンでファイルを
>開いても、何も起こりませんでした。

そうでしたか。
setcompatiblemodeを使う方法として、とりあえずいったん強制的に開いてマク
ロを処理して、マクロで重複するファイルがあれば切り替えるようにするとなん
とかできそうです。

例:

setcompatiblemode 0x0020;//または0x0050;
OPEN;
if(result!=false){
    #c=hidemarucount;
    #i=1;
    while(#i<#c){
        if(filename[#i]==filename){
            #h=hidemaruhandle(0);
            setactivehidemaru #i;
            closehidemaru #h;
            break;
        }
        #i=#i+1;
    }
    message basename+"を開きました";
}

[ ]