差分表示No.04460
123 さん 04/09/02 07:09
 
DFという差分表示ソフトを秀丸上から使いたいのですが、
http://www.vector.co.jp/soft/win95/util/se113286.html
どうすればいいでしょうか。
DFはマクロフォルダに置いてあります。
一つめのファイルは現在アクティブなファイルで、2つめのファイルは
メニュー表示などで選択させるようなものを想定しています。
---------------------------
$dfexe = macrodir + "\\DF.exe";
$file1 = filename2;
$file2 = "";

//?

$execCmd = "\"" + $dfexe + "\" \"" + $file1 + "\" \"" + $file2 + "\"";
run $execCmd;


[ ]
RE:04460 差分表示No.04461
ENCODINGSHIFTJIS さん 04/09/02 09:42
 
>一つめのファイルは現在アクティブなファイルで、2つめのファイルは
>メニュー表示などで選択させるようなものを想定しています。

ファイル名のコモンダイアログはないので、開くしかありません。

秀丸エディタマクロヘルプ>ファイル系文>ダイアログボックスを出すファイル系文
>OPEN ファイルを開く

[ ]
RE:04460 差分表示No.04462
h-tom さん 04/09/02 13:33
 

h-tom です。

>一つめのファイルは現在アクティブなファイルで、2つめのファイルは
>メニュー表示などで選択させるようなものを想定しています。
・ファイルの一覧を取得してメニュー表示
・ファイル選択ダイアログを表示してファイルを選択
ということをやりたいなら、田楽DLLを使ってみてはどうでしょう?

まぁ、秀丸単体でも可能だけど手間がかかるかな?

[ ]
RE:04460 差分表示No.04463
kyo さん 04/09/02 16:09
 
>DFという差分表示ソフトを秀丸上から使いたいのですが、
>http://www.vector.co.jp/soft/win95/util/se113286.html
>どうすればいいでしょうか。

僕もDF使っているので、こんなマクロでやってます。

// DF.mac
$file1 = filename2;
$fExt = filetype + ".";

if (strstr(".new.grep.execresult.", $fExt) != -1) {
  beep;
  goto Quit;
} else {
  goto DF;
}

DF:
  if (updated == 1) {
    save;
  }

  openfile "*" + $fExt;

  if (result) {
    $app = "\"C:\\Program Files\\DF\\DF.exe\"";
    $file2 = filename2;
    run $app + " \"" + $file1 + "\" \"" + $file2 + "\"";
  }

  goto Quit;

Quit:
  endmacro;
// DF.mac: End

比較元のファイルを開いた状態で、このマクロを起動すると、
同じ拡張子のファイルでフィルタされたファイルを開くダイアログが開き、
比較先のファイルが選択できます。

秀丸4.13では問題なく動いていますが、
かなり適当に書いたのでもしかするとおかしいかもしれません。
まぁ、こんな感じでopenfile使えばいけるんじゃないかと。

[ ]
RE:04461 差分表示No.04464
123 さん 04/09/02 20:28
 
ダイアログじゃなく、メニュー(menu文とかmenuarray文を使うんだと思います)をか
ら選択させるような感じです。
例)
A,B,C,Dの3つのファイルを開いていて、Bのファイルを選択し、マクロを実行すると、
メニュー(A,C,D)が出て、Dを選択するとBとDが比較されるような感じです。

[ ]
RE:04462 差分表示No.04465
123 さん 04/09/02 20:29
 
ダイアログじゃなく、メニューです。

[ ]
RE:04463 差分表示No.04466
123 さん 04/09/02 20:30
 
一応、この方法で実行できることを確認しました。とりあえずはこの方法を使うこと
にします。ありがとうございました。

[ ]
RE:04464 差分表示No.04467
ENCODINGSHIFTJIS さん 04/09/03 09:53
 
>A,B,C,Dの3つのファイルを開いていて

開いているファイルの一覧は番号で、わかります
秀丸エディタマクロヘルプ>秀丸管理

簡単な方式は、番号0,1のファイルを 比較する
番号0,1 にするのは窓を事前にクリックする

[ ]
RE:04460 差分表示No.04480
123 さん 04/09/11 18:57
 
完成しました。

//差分表示マクロ(diff.mac)
// ファイルを2つ開いておいてこのマクロを実行
// 3つ以上開いている場合はメニューが出る
// DF.EXEはマクロフォルダに置く事
$dfexe = macrodir + "\\DF.exe";
$file1 = filename2;
$file2 = "";

if (!existfile($dfexe)){
    message $dfexe + " が見つかりません";
    endmacro;
}

//開いているファイル数取得
#hmCnt = hidemarucount;
if (#hmCnt < 2){
    message basename2 + " と比較するファイルがありません";
    endmacro;
}
//ハンドル取得
#idx = 1;
while(#idx < #hmCnt){
    #hmHandle[#idx] = hidemaruhandle(#idx);
    #idx = #idx + 1;
}
#currentHandle = hidemaruhandle(0);

//ファイルパス取得
#idx = 1;
while( #idx < #hmCnt ){
    setactivehidemaru #hmHandle[#idx];
    $files[#idx - 1] = filename2;
    #idx = #idx + 1;
}
setactivehidemaru #currentHandle;

if (#hmCnt == 2){
    //ファイルが2つしかない場合はメニューを出さない
    $file2 = $files[0];
}else{
    //メニュー表示
    menuarray $files, #hmCnt - 1;
    if (result == 0){
        endmacro;
    }
    $file2 = $files[result - 1];
}

//実行
$execCmd = "\"" + $dfexe + "\" \"" + $file1 + "\" \"" + $file2 + "\"";
run $execCmd;
endmacro;

////////////////////////////////////////////////////////
// DF(Ver 1.36)の試用機能で、Ctrl を押しながらファイル比較をすると同一検査を
実行するので、
// このマクロを実行してDFが起動されるときに Ctrl を押しておくと同一検査にな
ってしまいます。

[ ]