他の秀丸エディタと内容比較後、反映させNo.34136
Micky さん 15/04/14 16:29
 
まいどお世話になります。

あるツールが吐き出してくるテキストに手を加えて使用しているのですが、
時々、ツールの入力情報を変更して作り直す時があります。

こんな時、前の修正内容を再入力していますが、その時に
新旧両方のファイルを開けて内容比較して、ツールが変えたのか
前回手を加えたところなのかを判断しながら、コピペしています。

で、思ったのですが、個のコピペ作業をもう少し楽にできないかと。

具体的には内容比較してカラーマーカー部分を、比較対象となっている
側から取り込めないかなと思ったのですが、そんなことできないでしょうか。

[ ]
RE:34136 他の秀丸エディタと内容比較後、No.34137
秀丸担当 さん 15/04/14 17:04
 

比較結果でカラーマーカーが付いているとき、色のついた部分をそのままコピー
して入れ替えるマクロができないかと思ったのですが、仕組み上できませんでし
た。
カラーマーカーをレイヤー化してから、比較結果は通常の「一時的なカラーマー
カー」とは別のレイヤーになっていて、マクロでnextcolormarker文などを使っ
ても該当するレイヤーを操作することができなくなっていました。

検索での色付けも同じように別レイヤーになっているのですが、こちらは
findmarkerという予約語としてのレイヤー名で操作できます。
これと同じように、比較結果についても予約語としてのレイヤー名で操作できる
ように今後のバージョンで検討させていただきます。

[ ]
RE:34137 他の秀丸エディタと内容比較後、No.34139
Micky さん 15/04/14 17:24
 
まいどお世話になります。

秀丸担当さん write:

> カラーマーカーをレイヤー化してから、比較結果は通常の「一時的なカラーマー
> カー」とは別のレイヤーになっていて、マクロでnextcolormarker文などを使っ
> ても該当するレイヤーを操作することができなくなっていました。
なるほど、いろいろ仕組みがあるんですね。

> これと同じように、比較結果についても予約語としてのレイヤー名で操作できる
> ように今後のバージョンで検討させていただきます。
検討、ありがとうございます。

欲を言えばですが、現状比較結果を表示している時ツールバーの下に
×比較:[前の結果][次の結果]
が出ているので、この並びに[差分取り込み]みたいなボタンが出れば
マクロ起動の手間も無くて良いなー、なんて思ってました。

マクロで出来れば比較のするところからマクロでやってしまえば良いですかね。

[ ]
RE:34139 他の秀丸エディタと内容比較後、No.34144
秀丸担当 さん 15/04/17 09:27
 

V8.54β1で、カラーマーカーの比較専用のレイヤー指定ができなかった点を修正
しました。
マクロを作るとしたら、以下のような感じになるかと思います。

ある程度まとまった違いだったり、「空白とタブは無視して比較する」がOFFの
場合は、取り込みがうまくいきやすいですが、必ずしも思惑通りになるとは限ら
ないので、最終的にはやはり目視で確認する必要があると思います。
標準の機能とするのは良く考える必要がありそうです。

//V8.54β1以降
setcompatiblemode 0x00002000;
#crNewText = 0xffffff; //取り込み後のテキスト色
#crNewBack = 0x0000ff; //取り込み後の背景色
if(compfilehandle==0){
  message "比較が実行されていません";
  endmacro;
}
if(filetype[compfilehandle]==""){
  message "比較相手がありません";
  endmacro;
}
if(readonly){
  message "上書き禁止状態です";
  endmacro;
}
#h=hidemaruhandle(0);
nextcolormarker 0x01 | 0x08, 0, diff;
if(!result){
  message "現在の内容に比較結果がありません";
  endmacro;
}
$id = getcolormarker(0x08,diff);
if($id=="") $id = getcolormarker(0x48,diff);
#id=val("0x"+$id);
escape;
beginsel;
#c1=column;
#l1=lineno;
nextcolormarker 0x02 | 0x08, 0, diff;
endsel;

setactivehidemaru compfilehandle;
nextcolormarker 0x01 | 0x08 | 0x04, #id, diff;
if(!result){
  prevcolormarker 0x01 | 0x08 | 0x04, #id, diff;
  if(!result){
    setactivehidemaru #h;
    escape;
    message "比較相手に結果がありません";
    endmacro;
  }
}
escape;
beginsel;
nextcolormarker 0x02 | 0x08 | 0x04, #id, diff;
endsel;
copy;
setactivehidemaru #h;

paste;
#c2=column;
#l2=lineno;
colormarker #crNewText, #crNewBack, -1
    , 0, #id, diff, #l1, #c1, #l2, #c2;

[ ]
RE:34144 他の秀丸エディタと内容比較後、No.34145
Micky さん 15/04/17 10:05
 
まいどお世話になります。

秀丸担当さん write:

> V8.54β1で、カラーマーカーの比較専用のレイヤー指定ができなかった点を修正
> しました。
実装ありがとうございます。

> マクロを作るとしたら、以下のような感じになるかと思います。
これまた大変助かります。
さっそく使ってみます、また気がついた点がありましたらレポートします。

> 標準の機能とするのは良く考える必要がありそうです。
そうですね、いろいろ難しい点はあると思います。
今のファイル比較の機能がかなり助かっているので、
標準展開されれば喜ぶ人も多いのではないかと勝手に思っています。

[ ]