マクロのイベント追加希望
-
マクロの中断、再開を使用してるのですが、中断は全てのファイルを閉じてしまうので、全て閉じる、右上の☓を押すと発生するイベントが欲しいです。
文書を閉じる時のイベントを設定すると、エラーが出てMeryが強制終了してしまいます。
「オブジェクトでサポートされてないプロパティまたはメソッドです。
行:xx
文字:x
編集しますか?
C:\Program Files\Mery\Macros\Suspend.js」
他のイベントでもマクロ実行後に閉じてしまうし、マクロのCloseAll()をコメントアウトしてもいいのですが、頻繁にマクロが動かれるのも嫌だし。
やはり、最後の閉じる時だけ動いて欲しいです。
ぜひ、宜しくお願いします。| Mery初心者 | 返信 -
書き込みありがとうございます。
> マクロの中断、再開を使用してるのですが、中断は全てのファイルを閉じてしまうので、全て閉じる、右上の☓を押すと発生するイベントが欲しいです。
中断・再開マクロは私が作ったものではないので詳細はわかりかねますが、試してみた感じですと実行すると、文書を一時保存してすべて閉じるマクロのようですね。
> 文書を閉じる時のイベントを設定すると、エラーが出てMeryが強制終了してしまいます。
イベントの「文書を閉じる時」は、文書を閉じる前ではなく、閉じている最中 (Close イベント中) に呼び出されますので、Close イベント中にマクロで CloseAll などを呼び出すと不整合が起きてしまいます。
> 他のイベントでもマクロ実行後に閉じてしまうし、マクロのCloseAll()をコメントアウトしてもいいのですが、頻繁にマクロが動かれるのも嫌だし。
確かに、マクロのソースを見てみた感じですと CloseAll をコメントアウトすれば、一時保存データが作成されるだけになるので、一応動作はしそうですが、タブを閉じるたびに毎回すべてのデータが一時保存されてしまいますね。
イベントを「文書を閉じる時」に設定して CloseAll をコメントアウトして、for 文ですべての Editor に対して処理している部分をアクティブな Editor だけに対して処理するようにすれば、余計なデータは保存されないようになると思いますが…
その場合、一時保存したくないタブも必ず一時保存されてしまいますね ^^;
> やはり、最後の閉じる時だけ動いて欲しいです。
「ウィンドウを閉じる時」というイベントを用意するのは良いアイデアだと思いますが、「文書を閉じたとき」のイベントと同様、Close 中に呼び出されるイベントになりますので、マクロの中で CloseAll のような閉じる系の機能を呼び出すとエラーになることは想像されます。
したがって中断・再開マクロを「ウィンドウを閉じる時」に割り当てる場合も CloseAll をコメントアウトしていただくことになりますが、そうするとイベントからではなくマクロを単独で起動したときにウィンドウが閉じられなくなってしまいますね。
そのあたりの整合性はマクロ側で対応していただく必要がありますが…
▼「ウィンドウを閉じる時」イベント
・ウィンドウの右上の「x」を押して閉じるときにだけ発生
・[ファイル] メニューの [すべて閉じる] などは対象外
・タブごとの「x」を非表示にしている場合は発生しない (ウィンドウの右上の「x」がタブを閉じる機能になるので)↑こんな感じでよければ実装を検討してみたいと思います。他にご意見があればご協力いただけると助かります。
Close 中に CloseAll を呼び出してもエラー出ないように、、、とか。
| Kuro | 返信 -
追伸:
中断・再開マクロをもう少し調べてみたところ、どうもウィンドウごとではなく、複数ウィンドウがある場合はすべてのウィンドウに対して、一時保存して閉じるマクロのようです。したがって「ウィンドウを閉じる時」(右上の×を押したとき) というイベントでは対応できそうにありませんね ^^;
一つのウィンドウを閉じたらすべてのウィンドウも一緒に閉じられてしまうことになってしまいます。うーむ、難しい……。
| Kuro | 返信 -
返答ありがとうございます。
遅くなり申し訳ありません。やはり、難しいんですね。
詳しく中身を見てなかったので、安易に提案してしまいました。
自分としては、Peggyのようなプロジェクトでフォルダを保持しつつ、開いてたファイルを再度起動時に開くのが希望なんです。
ただし、違うエディタでそもそもの思想が違いますので、全く同じじゃなくても近いものがあれば・・・と探して見つけたのが、このマクロでした。
使ってみたら、タブを閉じるとエラーでオチたりしてるので、最後の終了時だけ動いてくれたらラッキーなのになー?
って思った次第です。
取り敢えず、このマクロは使わずに通常使用します。別件でまた要望をお願いしたいので、そちらもお願いします。
| Mery初心者 | 返信