秀丸メールと秀丸エディタとのマクロ動作の違い(Ver7.33対応版)
秀丸メールと秀丸エディタでのマクロ動作の違う所は以下の通りです。
- gofiletop文
-
メール本文の先頭位置にカーソル移動します(Ctrl+Homeキーも同様です)。
- moveto文
-
moveto 0, 0; で、メール本文の先頭に移動します。
moveto 0, -9999; で、メールのヘッダ部分の先頭に移動します。
閲覧モードの場合は期待通りに動作しないので、browsemodeswitchを使って閲覧モードを抜け出てから実行してください。
閲覧モードから抜け出す例 |
#browsemode = browsemode;
if( #browsemode ) { //閲覧モードから普通のカーソルありのモードにする。
browsemodeswitch;
}
moveto 0, 0;
...
...
if( #browsemode ) { //元の閲覧モードに戻す。
browsemodeswitch;
}
|
- up、down文などのカーソル移動系文全般
-
カーソル移動系コマンド使用時の注意!を参照ください。
- y (カーソルのy座標)
-
本文の先頭にカーソルがある場合に0を返し、ヘッダの中に位置している場合は負の数を返します。
- lineno (行番号)
-
本文の先頭にカーソルがある場合に1を返し、ヘッダの中に位置している場合は常に0を返します。したがって、ヘッダの中でのカーソル位置をlinenoキーワードを使って知ることは出来ません。yを使えば特定可能です。
- golinetop文、golinetop2文
-
ヘッダの中にカーソルがある場合、カーソルはヘッダのコロン区切りより後ろの部分に移動します。Homeキーを押した時も同じ動作となります。
- save文
-
送信系メール上で実行した場合は、SaveDraft関数を呼び出したのと同じになります。具体的には「ファイル」メニューの「草稿に保存」コマンド相当の動作となります。情報アイテムの場合は「情報アイテムとして保存」コマンド相当の動作となります。
受信したメールを改変している最中に実行すると、現在のメールの改変内容を保存する動作となります。
送信済みメール上でsave文を実行すると草稿フォルダに保存しますが、改変保存させるためのAlterSave関数が別にあります。
save文実行後はエディタは終了せず、そのままマクロも続行されます。エディタを終了させたい場合は、save文の後でexit文を実行してください。(「全般的な設定・メール表示・詳細(その他)」の「草稿フォルダに保存したらエディタを閉じる」のオプションは関係しません。)
- saveexit文
-
「あとで送信」という意味になります。マクロはそこで終了します。成功したかどうか調べるためには、SendLater関数とexit文等を組み合わせてください。
情報アイテムや受信系メールの場合はまた違った動作になります。どういう動作になるかはテストしてませんが、たぶん「save」と同じ動作をしてからエディタ・ウィンドウを閉じる動作になると思います。
- savelf文
-
現在のメールを未送信フォルダに保存します。「あとで送信」の場合は保存後にエディタ(およびマクロの実行)が終了しますが、savelf文の場合は終了しません。しかし、保存後にエディタの内容を書き換えるなどの操作を続行することは避けて、exit文などを使って速やかにエディタを終了させてください。
複数のメールを作成するようなマクロを組む場合には、この文とclosehidemaru文等を組み合わせて使う必要が出てきます。
safelfを使うよりも、SendLater関数の使用をお勧めします。
- newfile文
-
「新規メール」という意味になります。マクロは「新規メール」で出てきたウィンドウ上で処理が続行されます。NewMail関数を使う方をお勧めします。
- exit文
-
現在編集中のメールを閉じます。マクロも終了します。編集途中の場合は「保存しますか?」の問い合わせが表示されます。秀丸メール本体ウィンドウで実行した場合は、単にマクロを終了するのみです。
- quit文
-
現在編集中のメールを破棄してウィンドウを閉じます。マクロも終了します。秀丸メール本体ウィンドウで実行した場合は、単にマクロを終了するのみです。
- saveexitall文
-
現在編集中のすべてのメールを「あとで送信」としてから秀丸メール本体も含めてすべてのウィンドウを終了します。マクロも終了します。
- exitall文
-
現在編集中のすべてのメールと秀丸メール本体を閉じて終了します。マクロも終了します。編集途中の場合は「保存しますか?」の問い合わせが表示されます。
- nexthidemaru、prevhidemaru
-
nexthidemaru/prevhidemaru文は、エディタ用のウィンドウをあたかも秀丸エディタであるかのように、切り替え表示します。秀丸メールの本体ウィンドウは対象となりません。
- setactivehidemaru、hidemaruhandle、closehidemaru等
-
これら複数の秀丸エディタに関連した文は、すべて秀丸メールのウィンドウに対応して動作します。秀丸エディタと秀丸メールとは独立して動作します。例えば、closehidemaru文を秀丸メール内で実行する場合、
終了させることができるのは秀丸メールのメールエディタ・ウィンドウだけであり、秀丸エディタのウィンドウは終了させることができません。
nexthidemaru/prevhidemaruは、秀丸メールのメールエディタ・ウィンドウだけが対象となりますが、setactivehidemaru文などでは秀丸メール本体ウィンドウも対象となります。ただし、秀丸メール本体ウィンドウをclosehidemaru/closehidemaruforced文で終了させることはできません。秀丸メール本体ウィンドウを終了させるには、TKInfo.dllのExit関数を使ってください。
- grep文
-
grep文は、検索結果を現在のメールの中に挿入する形で動作します。
- localgrep文
-
localgrep文は使えません。
- openfile文等
-
openfile、loadfile文など、通常のテキストファイルを扱う文は使えません。通常のテキストファイルを扱いたい場合には、秀丸メール内のマクロから、run文等を使って秀丸エディタを呼び出し、その秀丸エディタ内で別のマクロを実行させてください。
ちなみに、秀丸エディタ側でのマクロ実行と秀丸メール側でのマクロ実行は並行して動作可能です。ただし、秀丸メールのマクロと秀丸エディタ側のマクロの両方でアクティブウィンドウの切り替え(nexthidemaruやsetactivehidemaru等)を使うことは避けるか、またはrunsync等で同期させてください。
例 |
run "c:\\hidemaru\\hidemaru.exe /xテキスト処理.mac";
|
- config文、envchanged文
-
config文は、現在のメールエディタ・ウィンドウの設定を一時的に変更する目的で使うことができますが、他のメールに切り換えたりすると秀丸メール側によって元に戻されることがあります。
envchanged文は一応それなりに動作するようです。どの程度ちゃんと動作するのかは、実際に使って様子を確認していただかないとなんとも言えないです。ちなみに秀丸メール側の「全般的な設定」のレジストリを読み込み直しする用には、
EnvChangedという関数が別に用意されています。
- readonlyキーワード、browsemodeキーワード、browsemodeswitch文
-
readonlyキーワードは、現在のメールが編集可能かどうかを返します。browsemodeキーワードは、文字カーソルの表示のON/OFFを返します。browsemodeswitch文は、文字カーソルの表示ON/OFFを切り替えます。
- versionキーワード
-
versionキーワードは、秀丸メール内のメールエディタ部分の元になった秀丸エディタのバージョンを返します。秀丸メール本体のバージョンは、tkinfo.dll側のHidemaruMailVersion関数を使ってください。
- disableerrormsg/enableerrormsg文
-
disableerrormsg文を使ってエラーメッセージを表示しないように設定した場合、秀丸メール側でのエラーメッセージも原則として表示されなくなります。また、エラーの時のビープ音も鳴らなくなります。ただし、一部の致命的なエラーについては相変わらず表示される場合があります。
Version 6.31β18より、Export関数でのエラーや各種問い合わせも一切出なくなります。
- run文
-
run文は、標準出力を受け取ることができません。ただプログラムを非同期で起動するだけです(V1.03からこの仕様。V1.02まではうまく動作していませんでした)。
- replaceall文、replaceallfast文など
-
replaceall文などは、内部的に「ファイルの先頭にに移動してから置換開始」のような作りになっています。秀丸メールでは「ファイルの先頭」に相当するのは本文の先頭なので、replaceall文ではヘッダ部分の置換がされません。
他にも同様に本文のみを対象とする文があるかもしれませんが、それは仕様です(ただし、selectallはヘッダも含めて選択します)。
- hidemarudirキーワード
-
秀丸エディタがインストールされている場合は秀丸エディタのディレクトリ、そうでない場合は秀丸メールのインストールされた先のディレクトリ名を返します。
制限:秀丸メールと秀丸エディタの32bit版/64bit版の種別が違うとうまく動作しないです。例えば秀丸メールが32bit版で秀丸エディタが64bit版だと、hidemarudirは"C:\Program files\Hidemaru"を返さないといけないですが、なぜか"C:\Program files (x86)\Hidemaru"を返してしまいます。これはWindowsの方で勝手に変換する処理が働くせいで、直せないです。
- colorcodeキーワード
-
colorcodeキーワードは原則として秀丸エディタと同じですが、秀丸メール固有の値が存在します。以下、秀丸メール固有の値です。
3 | メールヘッダの「:」までの部分。 |
14 | メールヘッダの「:」より後ろ部分から改行の直前まで。 |
15 | 引用行部分。 |
ちなみにcolorcodeキーワードは改行文字の上では常に0を返します。
- widthキーワード
-
widthキーワードはV1.81から仕様変更になりました。widthキーワードは本文の折り返し桁数を返します。
引用行やヘッダ部分の折り返し桁数はwidthキーワードで得られる折り返し桁数と一致しないことが多いです。また、「現在行の折り返し禁止」によって折り返し禁止指定された行は、widthキーワードとは無関係に折り返し無しで表示されます。
- loadhilight文
-
loadhilight文のパラメータ2に数値の1を指定すると、強調表示の設定を保存出来ます。これはVersion5.00から出来るように仕様変更されました。
- saveconfig文
-
saveconfig文は何も動作しません。tkinfo.dllの関数にSaveConfigというのがありますが、それは秀丸エディタのsaveconfig文とはちょっと動作が違います。
- title文
-
title文でウィンドウタイルをセットすること、および「title -1;」にてタイトルバーを固定することは可能です。また、エディタ・ウィンドウ上のステータスバーもセット可能です。
Version 7.20から、秀丸メール本体ウィンドウ上のステータスバーもセット可能になりました。「title 1,-1;」にてステータスバーの表示をそのままキープする指示も可能ですが、秀丸メール本体ウィンドウ上のステータスバーはフォルダ切り替え時や受信時に表示内容が切り替わってしまうので、キープする指示をしても、ユーザーさんの操作によっては勝手にキープが解除されます。
- タブモード、アウトプット枠、ファイルマネージャ枠、ブラウザ枠など
-
秀丸メール上ではタブモード、アウトプット枠などは使えないので、それに関係したマクロ命令、パラメータ類は使えません。