findhidemaru の使い方がわかりませんNo.06474
suii さん 10/12/02 11:19
 
秀丸エディタv8.03b1 です。
マクロが全くわかっていないのでうまく動きません。助言をいただきたくお
願いします。

ある文字列を含む行をごっそり削除して保存しなおしたいのです。
具体的には秀丸メールのFilter.logから spam の文字列のある行を全部削除
したいと思っています。
("spam"の文字列は振り分け条件などに指定してあるので、記録されます)

$path = "D:\\Programs\\秀丸メールData\\filterlog.txt";
openfile $path;
replaceallfast "^.*spam.*\\n" , "" , regular;
saveexit;

まず上記で快適に削除されました。
そこで、画面が表示されないようにしたく
 openfile "/h " + $path;
と変更しましたが、 (無題) というウィンドウが残って終了してしまいまし
た。

closehidemaruで終了してあげなければならないのかな?と、次のようにし
てみましたが findhidemaru でうまく「番号」が取得できません。

$path = "D:\\Programs\\秀丸メールData\\filterlog.txt";
openfile "/h " + $path;
#a = findhidemaru( $path );
if( #a == -1 ) message "findhidemaru の取得失敗です。";
message "#a は " + str( #a ) + " です。";
replaceallfast "^.*spam.*\\n" , "" , regular;
closehidemaru #a;
if( !result ) message $path + " の終了失敗です。";
endmacro;

※message 文はどこで失敗してるか確認するために入れているだけで、うま
く動けば削除するつもりです。

おそらくとんでもない勘違いをしているのだと思いますが、ヘルプを一生懸
命読んだのですがお手上げです。
画面表示をせずにマクロを走らせ、終了するにはどうしたらいいのでしょう
か。
そもそも、findhidemaruなどを使わずにスマートな方法があったら教えて下
さい。

[ ]
RE:06474 findhidemaru の使い方がわかりNo.06475
秀まるお2 さん 10/12/02 14:29
 
 openfileで開いた秀丸エディタ上で、例えば

    #handle = hidemaruhandle(0);

 とすれば、後でそのウィンドウを閉じたい時には

    closehidemaru #handle;

 または

    closehidemaruforced #handle;

 とすることが出来ます。その作戦が一番いいと思います。

[ ]
RE:06474 findhidemaru の使い方がわかりNo.06476
K'zawa さん 10/12/02 17:00
 
suiiさん、こんにちは。
K'zawaです。

下記でどうでしょうか?

$path = "D:\\Programs\\秀丸メールData\\filterlog.txt";
showwindow 0;
openfile $path;
replaceallfast "^.*spam.*\\n" , "" , regular;
saveexit;

[ ]
RE:06475 findhidemaru の使い方がわかりNo.06477
suii さん 10/12/02 19:38
 
秀まるお2さん、どうもありがとうございます。

$path = "D:\\Programs\\秀丸メールData\\filterlog.txt";
openfile "/h " + $path;
#handle = hidemaruhandle(0);
replaceallfast "^.*spam.*\\n" , "" , regular;
saveexit;
closehidemaru #handle;
endmacro;

としてみました。
これを秀丸エディターから単体で起動すると問題なく動作しました。
"振分log加工2.mac" として保存しました。

秀丸メールからはテキストファイルを直接扱えないとの事ですので、秀丸メールのマ
クロ登録に下記マクロを登録してそこから起動したのですが、秀丸メールから起動し
た(無題)というタブが居残ります。これを閉じる方法はありますでしょうか?

run "\"" + hidemarudir + "\\hidemaru.exe\" /xE:\\macro\\振分log加工2.mac";

これもまた、秀丸メールから秀丸エディタのマクロを実行して終了させるスマートな
方法が他にありましたら教えて下さい。

[ ]
RE:06476 findhidemaru の使い方がわかりNo.06478
suii さん 10/12/02 19:42
 
K'zawaさん、どうもありがとうございます。

早速試してみたのですが、、、様子が変です。
以下、一部は作者様宛の内容になるのかも知れません。

K'zawaさんのマクロを作成、保存。まだ秀丸エディタで開いている状態だと
します。
そこから[マクロ]-[マクロ実行]で実行しますといったんfilter.logが開い
て処理が始まります。(画面表示は消えませんでしたが、速いからいいか
な?)
処理が終わり自動でfilter.logは閉じますが、そのとき一緒に、開いていた
マクロの編集画面も閉じてしまいます。。。
タスクバーに秀丸エディタはいません。

改めて秀丸エディタをスタートボタンから起動してみると、タスクバーに現
れた秀丸のアイコンは、すでに二つ重なっている「複数起動している」アイ
コンです。(こちらWindows 7 x64 です)
しかし開いた秀丸メールには(無題)のタブのみ。
タスクバーのアイコンをポイントしてニュルッと表示されるサムネイルには
マクロの編集画面が表示されていますが、そこをクリックしても(無題)のエ
ディタしか出てこず、編集することができない状態となります。

秀丸エディタ 8.03b3 にアップしても試してみました。

[ ]
RE:06478 findhidemaru の使い方がわかりNo.06479
K'zawa さん 10/12/02 20:03
 
suiiさん、こんにちは。
K'zawaです。

すいません。あれは、全く編集していない新規秀丸1つだけのところから動作し
ます。または、ショートカットアイコンから直接マクロ実行するとき用。

[ ]
RE:06477 findhidemaru の使い方がわかりNo.06480
秀まるお2 さん 10/12/02 20:39
 
> 秀丸メールからはテキストファイルを直接扱えないとの事ですので、秀丸メールのマ
> クロ登録に下記マクロを登録してそこから起動したのですが、秀丸メールから起動し
> た(無題)というタブが居残ります。これを閉じる方法はありますでしょうか?

 マクロの最後にexitまたはquit文を入れればいいと思います。そうすると、マ
クロを実行してた秀丸エディタは終了してくれるはずです。

[ ]
RE:06480 findhidemaru の使い方がわかりNo.06481
秀まるお2 さん 10/12/02 20:50
 
 ちなみに「endmacro」の前、というか、endmacroは無しにして代わりにexitを
入れるというか…。

 というか、そもそも、秀丸メールから秀丸エディタを起動するやり方を、

run "\"" + hidemarudir + "\\hidemaru.exe\" /h /xE:\\macro\\振分log加工2.mac";

 のようにステルスモードで起動するようにして、マクロの中では、

$path = "D:\\Programs\\秀丸メールData\\filterlog.txt";
loadfile $path;
replaceallfast "^.*spam.*\\n" , "" , regular;
saveexit;

 とするだけでいいんじゃないかという気がします。

 (テストした訳じゃないので間違ってたらすみません)

[ ]
RE:06478 findhidemaru の使い方がわかりNo.06482
K'zawa さん 10/12/02 21:10
 
suiiさん、こんにちは。
K'zawaです。

直しました。
見えている秀丸から"/h "付でopenfileすると、
新規・未編集の秀丸でも、別秀丸が開くので、そのときは元の秀丸は閉じます。

$path = "D:\\Programs\\秀丸メールData\\filterlog.txt";
if( filetype == "new" && updated == 0 ) #handle = hidemaruhandle(0);
openfile "/h " + $path;
if( #handle ) closehidemaru #handle;
replaceallfast "^.*spam.*\\n" , "" , regular;
saveexit;

あと、前のマクロで、開いていた文書が編集できなくなるのは、バグではないの
でしょうか? > 秀丸担当さん

[ ]
RE:06482 findhidemaru の使い方がわかりNo.06483
秀丸担当 さん 10/12/03 09:21
 

>あと、前のマクロで、開いていた文書が編集できなくなるのは、バグではないの
>でしょうか? > 秀丸担当さん

showwindow 0;を使うほうのマクロでは、場合によっては見えないままの秀丸エ
ディタが残留することになってしまうと思います。
/hで起動した場合は、そのままマクロを終わらせても見えない秀丸エディタを再
び自動的に見えるようにするという機能がありますが、showwindow 0;の場合は
自動的にはしてほしくないという意見があって、/hとの使い分けをするために自
動的には戻らないようになっています。
そのため、showwindow 0;した場合はマクロ中で再び showwindow 1;などをしな
いと、見えないままのものがずっと残ってしまうと思います。

今回の場合、新規状態の秀丸エディタからマクロ実行した場合は秀丸エディタは
1つで、saveexit;で見えない秀丸エディタも終了するので大丈夫だと思います。
既存のファイルを開いている状態では、まずshowwindowで見えなくなって、
openfileで新しい秀丸エディタが起動して、saveexitで終了して、元の秀丸エデ
ィタは見えないままということになってしまうようです。


ちなみに、最初のご質問の、findhidemaruに失敗するのは、自分自身は見つから
ないようになっているためだと思います。

/hの使い方としては、/h で開いたファイルは見えないところに新しい秀丸エデ
ィタが起動して、そこがアクティブになります。
newfile;
openfile $path;
としたのと同じで、それが見えないという状態と考えていただければわかりやす
いかもしれません。

/hでアクティブが切り替わったときに実行元の秀丸エディタを終了させるという
ことであれば、以下のような感じにするといいかもしれません。

  $path = .........;
 
  #h = hidemaruhandle(0);
  openfile "/h " + $path; //ここからは別の秀丸エディタが起動
  closehidemaru #h;
 
  replaceallfast ......;
  saveexit;

[ ]
RE:06483 findhidemaru の使い方がわかりNo.06484
K'zawa さん 10/12/03 10:00
 
秀丸担当さん、こんにちは。
K'zawaです。

>showwindow 0;を使うほうのマクロでは、場合によっては見えないままの秀丸エ
>ディタが残留することになってしまうと思います。
<略>
>自動的にはしてほしくないという意見があって、/hとの使い分けをするために自
>動的には戻らないようになっています。

そうでしたか。時折このような状態になって不思議でしたが、納得しました。
タブモードのときは、オフにすると出てくるようです。

[ ]
RE:06484 findhidemaru の使い方がわかりNo.06485
suii さん 10/12/03 22:51
 
秀丸担当さん、K'zawaさん、どうもありがとうございました!
06481と06483をみて、書き直したらうまく動くようになりました!!

もともとopenfileで起動したエディタをhidemaruhandleでハンドルを取得す
るのかとか勘違いしていたりして、私の理解が支離滅裂だったようです。
おかげさまでうまく動いています。

filter.logが一ヶ月で7MBくらいになるんですが、その70%以上がspamの振り
分け記録でしたので大変助かりました。
ありがとうございました。

[ ]