あたらしいマクロ「秀丸飛行」、ちょっと直りませんか?No.04636
kendo さん 01/12/29 17:50
 
 秀丸ほどではないのかもしれませんが、「鶴亀」用のマクロがたのしみでときどき
ライブラリをのぞきにいきます。
 最近見つけておやっと思い、ぜひ活用したいのがslide_moon氏の表題のマクロです。

 これは、「『鶴亀』で『秀丸』を外部エディタとして使う」という説明の通りに、
ふつう『鶴亀メール』では外部エディタを使えないのですが、このマクロを使って秀
丸で文章が書けるというものです。

 私などはうっかり者ですから、つい最近まで、『秀丸』と『鶴亀のメール作成エデ
ィタ』はまったく同じ機能のものと思っていました。(後者が、より機能が多い、位
に思ってました。)

 それでいつかのことですが、前者でできるマクロが後者でできないので焦ってしま
い、 
 03333 01/10/13 14:52  秀丸のマクロが鶴亀で動かない  

というような投稿をしてしまい、そうした基礎的な誤解をたとえば ながさわ様 か
らご注意いただいたりしました。(03334 01/10/13 )
  
 ですが、このslide_moon氏のマクロを使うと、とりあえず『鶴亀』のメール作成エ
ディタでヘッダなどを書いてから、本文のところに移動したら必要に応じて完全な
「秀丸」になってしまうと、当然のことですがいままでのマクロがすっかり使えるの
で、とてもうれしいです。
 
 ただし、このマクロでは秀丸から戻ってくるときに、作成した文書の内容がもとも
との鶴亀の作成画面に反映されません。こんなおもしろい(失礼!便利な、というべ
きかもしれませんが)マクロをすいすい作られるslide_moon氏なのに、マニュアルテ
キストを拝見しますと、この変更の反映の仕方が、「やり方がわかりませでした」と
言ってます。ちょっと意外です。
 でも、このマクロ是非とも活用したいのです。みなさんの中にも、完全に秀丸互換
(ふだんは「ほぼ秀丸」で満足でしょうが、なにかのときにやはり「秀丸」で本文作
りたいということもあるかもしれません。)をときどき要望なさる方もいるのではな
いでしょうか。
 私はマクロのことは分かりませんので、この部分をこんな風に直すとよい、などと
マクロが分かりない者でも操作できますように、具体的にお教えいただけるとありが
たいです。(slide_moonさん、済みません。メールでお断りすべきですが、投稿しま
した。)

 ちょっとした蛇足の印象でなのですが、そもそも『鶴亀』には外部エディタを設定
できないのですよね。もちろん、「秀丸」感覚でメーラーを扱えるというのがこの
メーラー売りなのですから、『鶴亀』を使っていながら、本文作成はほかのエディタ
というのはおかしなものなのでしょう。(カレーライスを注文したら、みそ汁が付い
てきたみたいな感じでしょうか。なお、これまた脱線ですが、我が家ではカレーであ
ろうが、なんであろうがいつもいつも夕食にはみそ汁を欠かしません。)
 でも何か英語の手紙を書くときなど、スペルチェックのある英語版のエディタを使
いたいときもなくはないです。そんなとき外部エディタが使えるといいのかもしれま
せん。
 しかしその場合も、別途そのエディタを立ち上げてそちらで作ったテキストをcopy
 & pasteで「鶴亀」の本文作成エディタに張り付ければとりあえずしのげますね。



[ ]
RE:04636 あたらしいマクロ「秀丸飛行」、ちょっと直りませんか?No.04637
ひろ さん 01/12/29 20:00
 
 kendo さん今日は、ひろです。
> この変更の反映の仕方が、「やり方がわかりませでした」と
> 言ってます。ちょっと意外です。
 鶴亀と秀丸の編集を一つでしかやらないという前提なら、ハンドル番号を
INI ファイルに書き込んでおくなどすれば出来るかもしれません。しかし単
純に、
> 「秀丸」で本文作
> りたいということもあるかもしれません。
ということなら、そんな複雑なことをしなくても、末尾の引用部分のマクロ
でもよいと思います。(本当に出版されるかどうか不安だが、hidebook.1 に
投稿した、秀丸本のドラフト原稿より引用)
> (1)現在秀丸で編集しているファイルをメール本文として送るマクロ (鶴亀との連
>携例)
>  秀丸ユーザなら秀丸で編集中のマクロをそのままメールとして送りたい事があるで
> しょう。この様な場合、鶴亀に用意してある起動オプションを利用するマクロを作成
> すると良いでしょう。起動オプションをここで使用したもの以外にも幾つかあるの
>で、
> 自分の環境に合わせてください。
>  また編集中のファイルの場合でも、宛先などのヘッダ情報が書かれている場合は、
> その部分は鶴亀に取り込むときもその様に動作したほうが便利です。そこでここで紹
> 介しているマクロはヘッダ情報が記載されている場合と、そうでない場合の動作を
> 別々にしています。
> gofiletop;
> saveas getenv( "TEMP" ) + "\\mail.tmp";
> //検索情報の保存
> #reg_search=searchmode;
> $search=searchbuffer;
> #search=searchoption;
> //ヘッダがあるかどうかの判定。先ず区切りとなる行頭の改行有無
> searchdown "^\\n",regular;
> if( !result )$param = "BodyFile=\"" + filename2 + "\"";
> else{
>   searchup "^([^A-Za-z-]+:.*|[^:]+)$",regular;
>   if( result )$param = "BodyFile=\"" + filename2 + "\"";//ヘッダ情報がある
>場合
>   else $param = "File=\"" + filename2 + "\"";//ヘッダ情報がない場合
> }
> //検索情報を元に戻す。
> setsearch $search, #search;
> loadfile "";//排他制御対策
> openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
> run "\"" + getregstr("TuruKameDir") + "TuruKame.exe\" newmail " + $param;
> closereg;
> exit;

[ ]
RE:04637 あたらしいマクロ「秀丸飛行」、ちょっと直りませんか?No.04638
kendo さん 01/12/29 20:17
 
ひろさん、kendoです。
いつもお世話になります。

>ということなら、そんな複雑なことをしなくても、末尾の引用部分のマクロ
>でもよいと思います。(本当に出版されるかどうか不安だが、hidebook.1 に
>投稿した、秀丸本のドラフト原稿より引用)
 お示しのマクロを試してみました。秀丸で文章を書いていて、それを鶴亀に送
るというもので、すぐに鶴亀が立ち上がり、私のようにマクロのことが分からな
いものにはまるでマジックのようです。
 私は最初「鶴亀」から入って「秀丸」へと発想してましたが、考えてみますと、
私の環境では「秀丸」が常駐ですから、「秀丸」から「鶴亀」へという発想にか
えればいいのですね。
 
 ありがとうございました。
PS。でもちょっとだけ、 「鶴亀」から「秀丸」へ にもこだわってますが。

[ ]
RE:04638 あたらしいマクロ「秀丸飛行」、ちょっと直りませんか?No.04639
kendo さん 01/12/29 20:35
 
ひろさん、kendoです。お教えください。
何度もすみません。さて、私は
>PS。でもちょっとだけ、 「鶴亀」から「秀丸」へ にもこだわってますが。
と書きましたが、あらたにメールを書き始める場合は、お示ししていただいたマ
クロがぴったりなのですが、ちょっと困るのは返事を書く場合です。このときは
ふつうはどうしても「鶴亀」から「秀丸」へ という流れで作業に入りますので、
やはり鶴亀から秀丸を呼びたいです。

ひろさんが、
> 鶴亀と秀丸の編集を一つでしかやらないという前提なら、ハンドル番号を
INI ファイルに書き込んでおくなどすれば出来るかもしれません。

とお書きになっていらっしゃいますが、これはどんな操作なのでしょうか。
これだと  鶴亀から秀丸へ という流れでも作業ができるのでしょうか。

[ ]
RE:04637 getenv についてNo.04640
山紫水明 さん 01/12/30 08:49
 
 ひろさん,こんにちは。

 本題からはそれるのですが,また教えてください。

> saveas getenv( "TEMP" ) + "\\mail.tmp";

 ここでお使いになっている,getenv 関数は,ヘルプには「DOS環境変数の取得」
とありますが,他にどのような使い道があるのでしょうか。
 autoexec.bat の記述でもなさそうですが。
 Windows のバージョンの取得する方法はあるのでしょうか?

     では, (^^)/~
                                        山紫水明

[ ]
RE:04638 あたらしいマクロ「秀丸飛行」、No.04641
山紫水明 さん 01/12/30 10:44
 
 kendoさん,こんにちは。

》PS。でもちょっとだけ、 「鶴亀」から「秀丸」へ にもこだわってますが。

 ひろさんのマクロの前に,次のマクロをそのまま加えてみてください。
 鶴亀→←どちらでもいけると思います。

//---- HideTuru.mac ---------------------------------------------//

Turukame:   //鶴亀メール上での動作
loaddll "TKinfo.dll";
if( result ){
    if( dllfunc( "IsTuruKame" ) ){
        if( dllfunc( "IsTuruKameMain") ){
            message "鶴亀メール本体では実行できません。";
            endmacro;
        }
        setclipboard "Turu\n";
        selectall;
        appendcopy;
        //秀丸の起動
        run "\"" + hidemarudir + "\\hidemaru.exe\" /xHideTuru.mac";
//      run "\""+hidemarudir+"\\hidemaru.exe\" /x"+currentmacrofilename;
                                        //いずれかを用いる
    }
    endmacro;
}
//秀丸上での動作
beginclipboardread;
$s = getclipboard;
$s=leftstr( $s, strlen( $s ) - 1 );
if($s == "Turu"){
    paste;
    gofiletop;
    deleteline;
    setclipboard "";
    endmacro;
}

//この後にひろさんのマクロを続ける
//--------------------------------------------------------------//

     では, (^^)/~
                                        山紫水明

[ ]
RE:04641 あたらしいマクロ「秀丸飛行」、No.04642
kendo さん 01/12/30 12:13
 
kendoです。山紫水明さん、おせわになります。

>》PS。でもちょっとだけ、 「鶴亀」から「秀丸」へ にもこだわってます
>》が。
>
> ひろさんのマクロの前に,次のマクロをそのまま加えてみてください。
> 鶴亀→←どちらでもいけると思います。
 マクロありがとうございます。
 
 たしかに「秀丸」へ行けました。が、「秀丸」を閉じようとすると、ファイル
名を指定するダイアログ(というか窓)が出て、そのあとがうまく行きません。
『秀丸』を閉じると、すぐに『鶴亀』のエディタ画面に戻れないものでしょうか。

私の設定が悪いのでしょうか?

[ ]
RE:04639 あたらしいマクロ「秀丸飛行」、ちょっと直りませんか?No.04643
ひろ さん 01/12/30 13:19
 
 kendo さん今日は、ひろです。
> ちょっと困るのは返事を書く場合です。このときは
> ふつうはどうしても「鶴亀」から「秀丸」へ という流れで作業に入ります
 確かにそうですね。

> > 鶴亀と秀丸の編集を一つでしかやらないという前提なら、ハンドル番号を
> INI ファイルに書き込んでおくなどすれば出来るかもしれません。
>
> とお書きになっていらっしゃいますが、これはどんな操作なのでしょうか。
 一応コメントに簡単に、処理内容を書いたマクロを、末尾に記載しておきます。

 P.S 例外処理を入れる等編集していただいて、何方かライブラリに登録し
て頂いて構いません。→All
 私自身はこの様な使い方をしないので、今後のメンテナンスを考えると、
おそらく登録しないと思います(^^)。
//秀丸・鶴亀連携マクロ
openreg "CURRENTUSER","Software\\Hidemaruo\\TuruKame\\Config";
$TuruKameDir = getregstr("TuruKameDir");
closereg;
//こうして鶴亀のインストールフォルダの指定で、秀丸からの DLL の読み込みが出来る
loaddll $TuruKameDir + "tkinfo.dll";
$mailtmp = dllfuncstr("ToLower",getenv( "TEMP" ) + "\\mail.tmp");
$ini = macrodir + "\\HideTuruMail.ini";

if( dllfunc("IsTuruKame") )call Turu2Hide;
else{
  if( filename == $mailtmp ){
    if( getininum($ini,"Mail","handle") )call Hide2Turu;
    else call NewMail;
  }
  else call NewMail;
}
freedll;
exit;

NewMail:
  gofiletop;
  saveas $mailtmp;
  ##reg_search=searchmode;
  $$search=searchbuffer;
  ##search=searchoption;
  searchdown "^\\n",regular;
  if( !result )$$param = "BodyFile=\"" + filename2 + "\"";
  else{
    searchup "^([^A-Za-z-]+:.*|[^:]+)$",regular;
    if( result )$$param = "BodyFile=\"" + filename2 + "\"";
    else $$param = "File=\"" + filename2 + "\"";
  }
  setsearch $$search, ##search;
  loadfile "";
  run "\"" + $TuruKameDir + "TuruKame.exe\" newmail " + $$param;
  return;

Turu2Hide://鶴亀→秀丸
  ##handle = getininum($ini,"Mail","handle");
  if( hidemaruorder(##handle) == -1 || ##handle == 0){
    //保存されたハンドルがない場合→即ち秀丸から起動されて訳ではない
    disabledraw;
    ##org = dllfunc("HeaderView");
    #tmp = dllfunc("SwitchHeaderView",2);
    saveas $mailtmp;
    //秀丸から呼ばれたときのために、ハンドルを記録しておく
    writeininum $ini,"Mail","handle",hidemaruhandle(0);
    //秀丸で編集したファイルを書き込むので、全て削除
    selectall;
    delete;
    //ヘッダの表示状態を元に戻す
    #tmp = dllfunc("SwitchHeaderView",##org);
    run "\"" + hidemarudir + "\\hidemaru.exe\" \"" + $mailtmp + "\"";
  }
  else{
    //保存されたハンドルがある場合→即ち秀丸から起動された
    //秀丸→鶴亀処理の最終段階
    //記録されているハンドルのウィンドウに切り替え
    setactivehidemaru ##handle;
    insertfile $mailtmp;
    moveto 0,-9999;
    writeininum $ini,"Mail","handle",0;//一旦切り替えたので、0 を書き込む
                  //→今度同じマクロを起動しても、このブロックには入らない
  }
  freedll;
  endmacro;

Hide2Turu://秀丸→鶴亀
  save;
  run "\"" + $TuruKameDir + "turukame.exe\" /x " + currentmacrobasename;
  return;

[ ]
RE:04642 あたらしいマクロ「秀丸飛行」、No.04644
山紫水明 さん 01/12/30 13:26
 
 kendoさん,こんにちは。

》『秀丸』を閉じると、すぐに『鶴亀』のエディタ画面に戻れないものでしょう
》か。

 いや,閉じる必要はありませんよ。編集が終わったらそのままの状態で,この
同じマクロを実行してください。

 なお,これとは別に,マクロ20行目ほどの
endmacro;を
quit;
に変えた方がベターです。

    }
    quit;  ←こうなる
}
//秀丸上での動作

     では, (^^)/~
                                        山紫水明

[ ]
RE:04644 あたらしいマクロ「秀丸飛行」、No.04647
kendo さん 01/12/30 14:57
 
山紫水明さん、kendoです。何度もお世話になります。

You wrote on 2001/12/30: 
>》『秀丸』を閉じると、すぐに『鶴亀』のエディタ画面に戻れないものでしょう
>》か。
> いや,閉じる必要はありませんよ。編集が終わったらそのままの状態で,この
>同じマクロを実行してください。
 了解しました。

> なお,これとは別に,マクロ20行目ほどの
>endmacro;を
>quit;
>に変えた方がベターです。
 でも、かえるとエラーメッセージを返されましたので、endmacro;に戻しまし
た。
 ご指示の通りで、行ったり来たりできます。スゴイ。
 
 あと一つ、いつもの「おねだり」をしますと、カーソルの位置は双方で同じ位
置に保てないのでしょうか。『鶴亀』のメール本文開始部分の頭にあったカーソ
ルが『秀丸』移ると、テキスト全体の冒頭に行ってしまいます。
 また『秀丸』でテキスト末尾にあったカーソルは『鶴亀』に戻ってくるとまた
別のところに移ってしまうみたいです。

[ ]
RE:04643 あたらしいマクロ「秀丸飛行」、ちょっと直りませんか?No.04648
kendo さん 01/12/30 14:57
 
ひろさん、kendoです。お世話になります。

You wrote on 2001/12/30: 
>> > 鶴亀と秀丸の編集を一つでしかやらないという前提なら、ハンドル番号を
>> INI ファイルに書き込んでおくなどすれば出来るかもしれません。
>>
>> とお書きになっていらっしゃいますが、これはどんな操作なのでしょうか。
> 一応コメントに簡単に、処理内容を書いたマクロを、末尾に記載しておきま
>す。
 さっそくマクロ試してみました。『鶴亀』のメール本文のところになってこの
マクロを実行しますと、『秀丸』に切り替わります。
 ただし、不思議なのはカーソルがテキストの先頭にあることです。(1行目の
1桁目)それで、矢印キーかなにかでカーソルをテキスト末尾にやり、適当に
メール本文を書いて終えて『秀丸』を抜けますと、なるほど『鶴亀』に戻ります
が、なんと ヘッダ部分 (from: to: subject: ...)が無くなっているのです。
 
 これもなにか私の環境での設定のせいでしょうか。
 

[ ]
RE:04647 あたらしいマクロ「秀丸飛行」、No.04649
山紫水明 さん 01/12/30 17:13
 
 kendoさん,こんにちは。

》>quit;
》>に変えた方がベターです。
》 でも、かえるとエラーメッセージを返されましたので、endmacro;に戻しまし
》た。

 うーん,おかしいですね。なぜ,エラーが出るんだろう。endmacro で終わる
と,次々とメールの草稿が増えていきませんか?
 下のマクロは,quit になっています。またエラーが出たら,戻してください。

》 あと一つ、いつもの「おねだり」をしますと、カーソルの位置は双方で同じ位
》置に保てないのでしょうか。『鶴亀』のメール本文開始部分の頭にあったカーソ
》ルが『秀丸』移ると、テキスト全体の冒頭に行ってしまいます。

 とりあえずこちらの方の処理をしておきます。

》 また『秀丸』でテキスト末尾にあったカーソルは『鶴亀』に戻ってくるとまた
》別のところに移ってしまうみたいです。

 こちらの方は,上の問題解決してからということで。

     では, (^^)/~
                                        山紫水明

//---- HideTuru.mac ---------------------------------------------------//

Turukame:   //鶴亀メール上での動作
loaddll "TKinfo.dll";
if( result ){
    if( dllfunc( "IsTuruKame" ) ){
        if( dllfunc( "IsTuruKameMain") ){
            message "鶴亀メール本体では実行できません。";
            endmacro;
        }
        $x = str(x); #y = y;
        moveto 0, -9999;
        $y = str( #y - y );
        setclipboard "FromTurukameToHidemaru\n";
        addclipboard $x + "\n";
        addclipboard $y + "\n";
        disableinvert;
        selectall;
        appendcopy;
    //秀丸の起動
        run "\"" + hidemarudir + "\\hidemaru.exe\" /xHideTuru.mac";
//      run "\"" + hidemarudir + "\\hidemaru.exe\" /x" +
currentmacrofilename;
                                        //いずれかを用いる
    }
    quit;
}
//秀丸上での動作
beginclipboardread;
$s = getclipboard;
$s = leftstr( $s, strlen( $s ) - 1 );
$x = getclipboard;
$x = leftstr( $x, strlen( $x ) - 1 );
$y = getclipboard;
$y = leftstr( $y, strlen( $y ) - 1 );
if($s == "FromTurukameToHidemaru"){
    paste;
    gofiletop;
    deleteline; deleteline; deleteline;
    moveto val($x), val($y);
    setclipboard "";
    endmacro;
}

//以下同じ
//--------------------------------------------------------------//


[ ]
RE:04649 あたらしいマクロ「秀丸飛行」、No.04650
kendo さん 01/12/30 17:24
 
山紫水明さん、ありがとうございます。kendoです。
You wrote on 2001/12/30: 
>》>quit;
>》>に変えた方がベターです。
>》 でも、かえるとエラーメッセージを返されましたので、endmacro;に戻しまし

>》た。
>
> うーん,おかしいですね。なぜ,エラーが出るんだろう。endmacro で終わる
>と,次々とメールの草稿が増えていきませんか?
> 下のマクロは,quit になっています。またエラーが出たら,戻してください。

 一瞬「秀丸」が見えますが、モニタ画面から消えてしまいます。あとにあるの
は「鶴亀」のメール一覧画面に戻ってしまっています。

 報告のみで失礼します。
 

[ ]
RE:04640 getenv についてNo.04651
ひろ さん 01/12/30 19:04
 
 山紫水明さん今日は、ひろです。
>  ここでお使いになっている,getenv 関数は,ヘルプには「DOS環境変数の取得」
> とありますが,他にどのような使い道があるのでしょうか。
 Windows をインストールしたディレクトリや、PATH の取得が出来ます。
 要はコマンドプロンプトで、引数無しで SET コマンドで表示される値を取得
できます。

>  Windows のバージョンの取得する方法はあるのでしょうか?
 ですからこれは出来ません。ただし COMSPEC, winbootdir, windir を見て
やれば、NT 系かどうかの判断材料にはなります。

[ ]
RE:04651 getenv についてNo.04652
山紫水明 さん 01/12/30 22:04
 
 ひろさん,こんばんは。

》 要はコマンドプロンプトで、引数無しで SET コマンドで表示される値を取得
》できます。

 明快です。よくわかりました。

》 ですからこれは出来ません。ただし COMSPEC, winbootdir, windir を見て
》やれば、NT 系かどうかの判断材料にはなります。

 COMSPEC で command.com と cmd.exe の区別ができるのですね。
 winbootdir や windir も違うのですか。初耳でした。
 どうもありがとうございました。

     では, (^^)/~
                                        山紫水明

[ ]
RE:04648 あたらしいマクロ「秀丸飛行」、ちょっと直りませんか?No.04653
ひろ さん 01/12/30 22:29
 
 kendo さん今日は、ひろです。
> メール本文を書いて終えて『秀丸』を抜けますと、なるほど『鶴亀』に戻ります
> が、なんと ヘッダ部分 (from: to: subject: ...)が無くなっているのです。
 今一つ確信は持てませんが、どちらにしても不具合があったので、
>     insertfile $mailtmp;
の部分を、
    ##org = dllfunc("HeaderView");
    #tmp = dllfunc("SwitchHeaderView",2);
    insertfile $mailtmp;
    #tmp = dllfunc("SwitchHeaderView",##org);
としてください。

[ ]
RE:04650 あたらしいマクロ「秀丸飛行」、No.04656
山紫水明 さん 01/12/31 10:06
 
 kendoさん,こんにちは。

 一応作ってみました。今年最終バージョンです。年明けてからでも試してくだ
さい。何か環境による問題が出てくるかもしれませんが。

     では,いいお年を (^^)/~
                                        山紫水明

//---- HideTuru.mac ----------------------------------------------------//
//Ver0.3
Turukame:   //鶴亀メール上での動作
loaddll "TKinfo.dll";
if( result ){
    if( dllfunc( "IsTuruKame" ) ){
        beginclipboardread;
        $s = getclipboard;
        $s = leftstr( $s, strlen( $s ) - 1 );
        if($s == "FromHidemaruToTurukame"){//秀丸から受け継いだ場合
            $x = getclipboard;
            $x = leftstr( $x, strlen( $x ) - 1 );
            $y = getclipboard;
            $y = leftstr( $y, strlen( $y ) - 1 );
            $header = getclipboard;
            $header = leftstr( $header, strlen( $header ) );
            setclipboard "";
            #n = dllfunc("NewMail");
            if( $header == "header" ) selectall;
            else {
                gofiletop;
                beginsel;
            }
            delete;
            insertfile getenv( "TEMP" ) + "\\mail.tmp";
            moveto val($x), val($y);
            endmacro;
        } else {
            $x = str(x); #y = y;
            moveto 0, -9999;
            $y = str( #y - y );
            setclipboard "FromTurukameToHidemaru\n";
            addclipboard $x + "\n";
            addclipboard $y + "\n";
            disableinvert;
            selectall;
            appendcopy;
            //秀丸の起動
            run "\"" + hidemarudir + "\\hidemaru.exe\" /xHideTuru.mac";
//            run "\"" + hidemarudir + "\\hidemaru.exe\" /x" +
//                  currentmacrofilename;       //いずれかを用いる
            freedll;
            quit;
        }
    }
}
//秀丸上での動作
beginclipboardread;
$s = getclipboard;
$s = leftstr( $s, strlen( $s ) - 1 );
$x = getclipboard;
$x = leftstr( $x, strlen( $x ) - 1 );
$y = getclipboard;
$y = leftstr( $y, strlen( $y ) - 1 );

if($s == "FromTurukameToHidemaru"){//鶴亀メールから受け継いだ場合
    paste;
    gofiletop;
    deleteline; deleteline; deleteline;
    moveto val($x), val($y);
    setclipboard "";
    endmacro;
}
//秀丸からの起動の場合
$x = str(x); #y = y;
saveas getenv( "TEMP" ) + "\\mail.tmp";
//検索状態の保存
$search = searchbuffer;
#search = searchoption;
disabledraw;
gofiletop;
//ヘッダの有無の判定。
searchdown "^\\n", regular; //区切りとなる行頭の改行有無
if( !result ) { //ヘッダなし
    $y = str(#y);
    $header = "noheader";
}else{
    #yy = y;    //空行の位置
    searchup "^[A-Za-z]+:.*$",regular;
    if( result ) {  //ヘッダあり
        $y = str( #y - #yy -1 );
        $header = "header";
    } else {    //ヘッダなし
        $y = str(#y);
        $header = "noheader";
    }
}
setclipboard "FromHidemaruToTurukame\n";
addclipboard $x + "\n";
addclipboard $y + "\n";
addclipboard $header;
//検索状態を元に戻す。
setsearch $search, #search;
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
run "\"" + getregstr("TuruKameDir") + "TuruKame.exe\" /xHideTuru.mac";
//run "\"" + getregstr("TuruKameDir") + "TuruKame.exe\" /x"
//          + currentmacrofilename;
closereg;
exit;
//--------------------------------------------------------------------//


[ ]
RE:04656 あたらしいマクロ「秀丸飛行」、No.04657
kendo さん 01/12/31 10:37
 
山紫水明さん、kendoです。お騒がせしてます。

 さっそく新しいマクロ試しております。(実はこの記事、『鶴亀』から入って
『秀丸』で書いてみました。)ばっちしですね。『秀丸』で終えないで、そのま
ままたこのマクロを今度は『秀丸』の中でやるのですよね。『秀丸』を終えてそ
のまま『鶴亀』に行こうとして、例の「名前をつけて保存」の窓が出て一瞬迷い
ましたが、操作を思い出して、快調に行き来してます。ありがとうございます。
You wrote on 2001/12/31: 
> 一応作ってみました。今年最終バージョンです。年明けてからでも試してくだ
>さい。何か環境による問題が出てくるかもしれませんが。
>
>     では,いいお年を (^^)/~
 ユー・トゥー!です。
 マクロを知らない人間がいろいろお願いをしてすみません。(相談室の「敷
居」を勝手にしまい、スミマセンです。)
 

[ ]
RE:04636 あたらしいマクロ「秀丸飛行」、ちょっと直りませんか?No.04659
kendo さん 01/12/31 17:42
 
ひろさん、山紫水明さん、ありがとうございました。
ちょっと身も蓋もないのですが、「鶴亀」に外部エディタのオプションという可能性
はないのでしょうか......?そこで秀丸を指定する。というわけですが。。
来年もよろしくお願いします。

[ ]
RE:04656 あたらしいマクロ「秀丸飛行」、No.04665
kendo さん 02/01/04 12:21
 
副題:選択範囲のみを「鶴亀」に送れませんか?

山紫水明さん、kendoです。
本年もよろしくお願い申し上げます。

 さて、年末にお示しいただいたマクロ、さっそく使用しております。ありがとうご
ざいました。ところで実際に作業してみると、私の場合、『秀丸』で日記というか雑
記帳みたいなものを書いていることが日常のPC利用の一つです。ですから、新しい
ファイルを開かないで、そうしたファイルのある部分を範囲指定して、その部分だけ
を『鶴亀』に送れないものでしょうか。
 ちなみにマクロのことが分からないkendoは、ある部分を範囲指定してお示しいた
だいたマクロを立ち上げた所、「日記」(というか雑記帳)全体が『鶴亀』に入って
しまいました。

[ ]
RE:04665 あたらしいマクロ「秀丸飛行」、No.04666
山紫水明 さん 02/01/04 17:07
 

 謹賀新年
   kendoさん,こんにちは。

》私の場合、『秀丸』で日記というか雑記帳みたいなものを書いていることが日常
》のPC利用の一つです。

 私も同じようなことをしています。(^^;

》ファイルを開かないで、そうしたファイルのある部分を範囲指定して、その部分
》だけを『鶴亀』に送れないものでしょうか。

 マクロ途中に次の点線で挟まれた部分だけを挿入してみてください。

//秀丸からの起動の場合
-----------------------------------
disabledraw;
if( selecting ) {
    copy;
    newfile;
    paste
    gofiletop;
    question "親ファイルを閉じますか?";
    if( result ) closehidemaru 1;
}
-----------------------------------
$x = str(x); #y = y;

     では, (^^)/~
                                        山紫水明

[ ]
RE:04666 あたらしいマクロ「秀丸飛行」、No.04667
kendo さん 02/01/04 17:20
 
山紫水明さん、kendoです。さっそくの「お仕事始め」の依頼でゆっくりなさっ
ているところ、失礼しました。
 さっそく使ってみました。グー です。幸先のいい、というさわやかな気分で
おります。
 

>》ファイルを開かないで、そうしたファイルのある部分を範囲指定して、その
>》部分
>》だけを『鶴亀』に送れないものでしょうか。
>
> マクロ途中に次の点線で挟まれた部分だけを挿入してみてください。

[ ]
RE:04666 あたらしいマクロ「秀丸飛行」、No.04668
はてな さん 02/01/04 19:06
 
こんばんは、山紫水明様、

私も、このマクロが気に入って使わせてもらっています。
すごくいいマクロですね。(笑)

さて、
一つバグかな?と思うものを発見しましたので報告させてください。

秀丸から鶴亀へいくとき、最初の改行が出てくる前にコロンが行頭
以外に一つでも入っていると、その後に改行がどの位置に来ても、
メールのヘッダの部分に改行までが挿入されてしまいます。

例)
-----------
hogehoge:
hoge1
hoge2
hoge3
-----------
これは正常に、新規の鶴亀のエディタ本文へ移動します。
しかし、
例)
-----------
hogehoge:
hoge1
(改行)
hoge2
hoge3
-----------
では、メールのヘッダに
-----------
hogehoge;
hoge1
(改行)
-----------
が、入り
本文に、
-----------
hoge2
hoge3
-----------
が、分かれて入ってしまいます。

以上、報告まで。   はてな。

[ ]
RE:04668 あたらしいマクロ「秀丸飛行」、No.04669
はてな さん 02/01/04 19:17
 
すいません、これは仕様みたいですね。

マクロを見てみたら、ヘッダと思われるものの判断に
    searchup "^[A-Za-z]+:.*$",regular;
と、なっているみたいですので、

鶴亀→秀丸→鶴亀の場合を考えるとしょうがないんですね。
マクロを読んでいなかったために、申し訳ありませんでした。

#出来れば、秀丸→鶴亀の時は、これを無視できないでしょうか?
よろしくお願いします。

>こんばんは、山紫水明様、
>
>私も、このマクロが気に入って使わせてもらっています。
>すごくいいマクロですね。(笑)
>
>さて、
>一つバグかな?と思うものを発見しましたので報告させてください。
>
>秀丸から鶴亀へいくとき、最初の改行が出てくる前にコロンが行頭
>以外に一つでも入っていると、その後に改行がどの位置に来ても、
>メールのヘッダの部分に改行までが挿入されてしまいます。
>
>例)
>-----------
>hogehoge:
>hoge1
>hoge2
>hoge3
>-----------
>これは正常に、新規の鶴亀のエディタ本文へ移動します。
>しかし、
>例)
>-----------
>hogehoge:
>hoge1
>(改行)
>hoge2
>hoge3
>-----------
>では、メールのヘッダに
>-----------
>hogehoge;
>hoge1
>(改行)
>-----------
>が、入り
>本文に、
>-----------
>hoge2
>hoge3
>-----------
>が、分かれて入ってしまいます。
>
>以上、報告まで。   はてな。

[ ]
RE:04669 あたらしいマクロ「秀丸飛行」、No.04670
山紫水明 さん 02/01/04 21:05
 
 はてなさん,こんばんは。

》秀丸から鶴亀へいくとき、最初の改行が出てくる前にコロンが行頭
》以外に一つでも入っていると、その後に改行がどの位置に来ても、
》メールのヘッダの部分に改行までが挿入されてしまいます。

 たしかにご指摘のような問題があります。

》マクロを見てみたら、ヘッダと思われるものの判断に
》    searchup "^[A-Za-z]+:.*$",regular;
》と、なっているみたいですので、

 実は,来週にでもライブラリに登録しようと考えている手元のバージョンで
は,この部分を,

    searchup "^(To|From|Cc|Bcc|Reply-to|Subject): +", regular;

としています。これではどうでしょうか。

》マクロを読んでいなかったために、申し訳ありませんでした。

 読んでいただいて恐縮です。他人のマクロを解析するのはそう楽なことでもな
いです。(^^;

     では, (^^)/~
                                        山紫水明

[ ]
RE:04670 ヘッダの認識No.04671
ひろ さん 02/01/05 01:38
 
 山紫水明さん今日は、ひろです。
> 》    searchup "^[A-Za-z]+:.*$",regular;
> 》と、なっているみたいですので、
>
>  実は,来週にでもライブラリに登録しようと考えている手元のバージョンで
> は,この部分を,
>
>     searchup "^(To|From|Cc|Bcc|Reply-to|Subject): +", regular;
 こうすると、他のヘッダが使用できなくなってしまいますよね。私が書く
としたら、末尾のようにします。これなら、御認識も減り、自由度が高くな
ると思いますが、如何でしょうか?
  gofiletop;
  saveas $mailtmp;
  ##reg_search=searchmode;
  $$search=searchbuffer;
  ##search=searchoption;
  searchdown "^\\n",regular;
  if( !result )$$param = "BodyFile=\"" + filename2 + "\"";
  else{
    setsearch "^[A-Za-z-]+:",16;
    ##lineno = lineno;
    while( 1 ){
      findup;
      if( ##lineno == lineno - 1 ){
        if( result && lineno == 1 ){
          $$param = "File=\"" + filename2 + "\"";
          break;
        }
        ##lineno = lineno - 1;
      }
      else{
        $$param = "BodyFile=\"" + filename2 + "\"";
        break;
      }
    }
  }
  setsearch $$search, ##search;

[ ]
RE:04671 ヘッダの認識No.04674
山紫水明 さん 02/01/05 13:20
 
 ひろさん,こんにちは。いつもありがとうございます。

》>     searchup "^(To|From|Cc|Bcc|Reply-to|Subject): +", regular;
》 こうすると、他のヘッダが使用できなくなってしまいますよね。

 他のヘッダが使用できないというより,他のヘッダもあってもいいが,このう
ちのどれかがないと,ヘッダとして扱わなくても支障はないだろうというつもり
です。
 他のヘッダだけあって,鶴亀メールに移行して完成しようという場合には確か
に問題はあるかもしれませんが,そんなことはあまりないだろうと。
 認識不足かな?

》私が書くとしたら、末尾のようにします。これなら、御認識も減り、自由度が高
》くなると思いますが、如何でしょうか?

 なるほど,これは改行から上全部,最上行までアルファベット+「:」で終わる
行が連続しれいれば,ヘッダと見なせるということですね。
 最初にお示しいただいたもの(#4643)よりは改善されていて,実際上はこれで
も判別できると思いますが,ファイルの先頭が次のような場合,どうなるでしょ
う。

Hidemaru: good
Turukame: good
Fujisan: high
↓(改行)
・・・・
(ここまで)

 結局完璧を期そうとすれば,あり得るヘッダを全部挙げるしかないような気が
します。

 折角ですので,教えていただきたいのですが,

》  if( !result )$$param = "BodyFile=\"" + filename2 + "\"";
》          $$param = "File=\"" + filename2 + "\"";

 このパラメーターで鶴亀メールを起動する方法は私は気づいていなかったので,こ
れはいいと思ったのですが,マクロとの併用はできないですよね。
 カーソル位置を指定したいという要望があって,起動時オプションにマクロを指定
する方法に変えたのですが。

     では, (^^)/~
                                        山紫水明

[ ]
RE:04674 ヘッダの認識No.04676
ひろ さん 02/01/05 18:50
 
 山紫水明さん今日は、ひろです。
>  他のヘッダだけあって,鶴亀メールに移行して完成しようという場合には確か
> に問題はあるかもしれませんが,そんなことはあまりないだろうと。
 確かにあまりないと思います。ただ作り手が「ヘッダはこれだけ」と限定
してしまうのももったいないかな? という気がしました。

>  結局完璧を期そうとすれば,あり得るヘッダを全部挙げるしかないような気が
> します。
 確かにそうですね。ただ X- で始まっていれば自由に付けられるんですよ
ね。また全部あげると正規表現が複雑になりすぎ、 JRE32.DLL に渡す時点で
エラーになると思います。

>  カーソル位置を指定したいという要望があって,起動時オプションにマクロを指定
> する方法に変えたのですが。
 INI ファイルかクリップボードに記録しておくしかないでしょうね。その
上でヘッダの場合は負に、本文の場合はヘッダの分行数を減らさないといけ
ませんね。

[ ]