最初に(Ver9.41対応版)
目次−
JavaScript対応−
最初に
秀丸エディタのマクロは、従来のマクロの他に、V9.19からJavaScriptに対応しています。
JavaScriptを使ったマクロを書くにあたって、従来のマクロと違い戸惑うことがあるので、そのことを説明します。
簡単な方法と、難しい方法があります。
- 簡単な方法
-
JavaScriptを使えるからと言って、最新のJavaScriptの複雑な文法やルールを使おうとしても難しいだけです。
簡単には、js{}で囲って、従来のマクロの文やキーワードは()付きで呼びます。
これだけで、普通に関数を書いたり、関数の返り値があったり、文と関数の違い、$や#を気にすることなく変数を扱ったりできて、書きやすいマクロにすることができます。
- 難しい方法、従来マクロとの主な違い
-
主な違いは以下のものがあります。
別の秀丸エディタに跨ぐことができない
setactivehidemaruなどで、別の秀丸エディタに切り替えて処理を続行することはできません。
マクロが終わっても変数は存続する
従来のマクロは、マクロが終わったら通常の変数は無くなります。
JavaScriptは、関数内でないグローバルな変数は、そのまま残ります。
従来のマクロに慣れていると奇妙に感じるかもしれません。
Webブラウザのそれと似ています。
ファイルごとにある
ファイルごと(コンテンツごと)に実体があります。
[閉じて開く]や[ファイルを閉じる]相当で、秀丸エディタは同じままコンテンツだけが変わる場合は、保持されていた変数などは消えます。
Webブラウザのそれと似ています。
非同期で呼び出されるようにできる
非同期で呼ばれる関数は、従来の秀丸マクロのようなマクロ実行中の状態ではないです。
しかしJavaScriptは使えます。
これも奇妙に感じるかもしれません。
固有の名前がある実体を作れる
他のJavaScriptと競合を避けるために固有の名前を付けた実体にすることで、競合を避けることができます。
こういった違いなどがあり、すべて把握することで高度なマクロを作ることができますが、やりだすと難しいです。
一般的には「簡単な方法」に留めておいたほうがいい場合があります。
ただし、簡単ではないかもしれませんが、オブジェクトを使った記述や、JSONを使った記述は恩恵が得られることがあります。
また、標準入出力を使った非同期のやりとりもやりやすくなっています。