setcompatiblemode文(Ver9.35対応版)
目次−
setcompatiblemode文
setcompatiblemode文は、マクロの互換性の指示をします。(V6.00以降)
#old=setcompatiblemode(#new);として、設定すると同時に直前の値を知ることもできます。(
setcompatiblemode関数)
パラメータに以下の値を指定できます。
折りたたみがあるときの動作を、以下の値のOR演算した値で指定できます。
|
0x00000000 |
|
マクロの標準動作(0x0002と同じ) |
0x00000001 |
|
折りたたみを解除 |
0x00000002 |
|
折りたたみを無視してなるべく維持 |
0x00000003 |
|
折りたたみを維持 |
|
0x0002の「折りたたみを無視してなるべく維持」は、例えばdown;文でカーソル移動したとき、折りたたみされた範囲に入るときのみ自動的に折りたたみが解除されます。
折りたたみされた場所でなければ折りたたみはそのままです。
部分編集されているときの動作を、以下の値のOR演算した値で指定できます。
|
0x00000000 |
|
マクロの標準動作(0x0008と同じ) |
0x00000004 |
|
部分編集を解除 |
0x00000008 |
|
部分編集を無視してなるべく維持 |
0x0000000c |
|
部分編集を維持 |
|
0x0008の「部分編集を無視してなるべく維持」は、例えばdown;文でカーソル移動したとき、部分編集された範囲の外に出るときのみ自動的に部分編集が解除されます。
部分編集された範囲内での移動では部分編集はそのままです。
以下の文は部分編集を維持していても、部分編集の外にジャンプします。
・nextmark/prevmark(マーク行の上検索/下検索)
・goupdateup/goupdatedown(上/下の編集マーク)
・nextcolormarker/prevcolormarker(上/下のカラーマーカー)
以下の文は常に部分編集内の動作に制限されます。(V9.12以降)
・selectcolumn
openfileなどでファイルを開くときの排他制御(秀丸エディタで同じファイルを開く場合)の動作を、以下の値のOR演算した値で指定できます。
|
0x00000000 |
|
マクロの標準動作(動作環境に従う) |
0x00000010 |
|
開く方法を問い合わせする |
0x00000020 |
|
上書き禁止で開く |
0x00000030 |
|
同じファイルを2つ開くことを禁止する(ジャンプする) |
0x00000040 |
|
ファイルを読み込みなおしする |
0x00000050 |
|
強制的に開く(複数の秀丸で開くことを無視して普通に開く) |
|
「検索での表示」の動作を、以下の値のOR演算した値で指定できます。
|
0x00000000 |
|
マクロの標準動作(動作環境に従う) |
0x00000100 |
|
点滅表示 |
0x00000200 |
|
範囲選択 |
|
「貼り付け後のカーソル位置」の動作を、以下の値のOR演算した値で指定できます。(V8.00以降)
|
0x00000000 |
|
マクロの標準動作(動作環境に従う) |
0x00001000 |
|
先頭のまま |
0x00002000 |
|
最後に移動 |
|
これ以外にも以下の指定ができます。
|
0x00020000 |
|
マクロ終了後に検索条件をマクロ実行前と同じに戻します。(V8.20以降) |
|
|
0x00080000 |
|
マクロ終了後にカーソル移動後と編集後の自動起動マクロを動かせるようにします。(V8.30以降) |
|
|
0x00100000 |
|
各種の文を複数選択に対応した動作にします。(V8.40以降)
|
|
|
0x00200000 |
|
削除した範囲にあるカラーマーカーをやり直し可能にします。(V8.56以降) |
|
|
0x00400000 |
|
「前のカーソル位置」の記憶を変更しないようにします。(V8.58以降) |
|
|
0x00800000 |
|
disabledrawで検索後のカーソル状態を正しくします。(V8.66β6以降) |
|
|
0x01000000 |
|
dllfunc等の関数内で、画面ごとのDPIを有効にします。(V8.73以降) |
|
|
0x02000000 |
|
カーソル行の下線やカーソル位置の縦線の描画を有効にします。(V8.90β6以降) |
|
|
0x04000000 |
|
execmacroのコンパイル内容をメモリ上にキャッシュして再利用します。(V8.92β12以降)
マクロの実行が終わるとメモリは破棄されます。
|
|
|
0x08000000 |
|
別の秀丸エディタにマクロの実行を切り替えできないモードにします。(V8.92β12以降)
変数用メモリを共有しないことで高速になる場合があります。
setactivehidemaruなどは動作できないようになります。
|
|
|
0x10000000 |
|
範囲選択された状態でのleftやrightを常に範囲選択の先頭/末尾に移動するようにします。(V9.00β11以降)
動作環境の「左右キーは必ず範囲選択の先頭/末尾」に相当します。
|
|
|
V6.00において追加された「折りたたみ」や「部分編集」をしている時は、カーソル移動の挙動が従来とは異なります。
例えば、up;やdown;ではV6.00未満では必ず一行移動していましたが、V6.00以降では、折りたたみがあると数行ジャンプしたり、部分編集では移動しないことがあります。
マクロは、この互換性を維持するために、全ての文のカーソル移動の挙動は折りたたみと部分編集は無視して、V5.xx以前の従来通りの動きのままとなります。
setcompatiblemode 0x000f; (つまり 0x0003 | 0x000c)とすると、折りたたみと部分編集を無視せずにマクロを動作させることができます。
V6.00以降でキー操作の記録をすると、自動的にこの文が付きます。
この文を実行しなければ、setcompatiblemode 0x0000; と同じ状態で、V6.00未満の動作と同じになります。
(V6.00時点では「折りたたみを無視してなるべく維持」「部分編集を無視してなるべく維持」と同等になります。)
0x0001の「折りたたみを解除」は、setcompatiblemodeを実行したとたんに、全ての折りたたみが解除されます。
0x0002の「折りたたみを無視してなるべく維持」は、折りたたみ中であることは無視しつつ、必要なら解除し、解除する必要がなければそのままになります。
0x0004の「部分編集を解除」は、setcompatiblemodeを実行したとたんに、部分編集が解除されます。
0x0008の「部分編集を無視してなるべく維持」は、部分編集中であることは無視しつつ、必要なら解除し、解除する必要がなければそのままになります。
setactivehidemaruなどでマクロの実行が他の秀丸エディタに移動してもこの状態は引き継がれます。
execmacroで他のマクロを実行するときは状態は引き継がれません。
参照:
影響の及ぶ範囲(execmacro)
影響の及ぶ範囲(アクティブ切り替え)
マクロ終了後に検索条件を戻す用の0x00020000の指定について
「setcompatiblemode 0x00020000;」は、一番最初にそれを実行した瞬間に検索条件がバックアップされます。そのため、検索条件を書き換えた後にこの命令を使うと、マクロの実行前とは別の検索条件が復元されてしまう可能性があります。この命令は検索系コマンドを使う前に実行してください。
「setcompatiblemode 0x00020000;」を複数回実行しても、検索条件のバックアップは一番最初のsetcompatiblemode時だけになります。また、「setcompatiblemode 0x00020000;」を実行した後で、例えば「setcompatiblemode 0;」のように、0x00020000のフラグをクリアするような動作をしたとしても、検索条件の保存/復元自体はキャンセルされず、マクロが終了した時点で必ず検索バッファの復元が実行されます。(Ver8.22から一部仕様変更がありました)
復元される検索条件にinselectの状態(inselectingキーワードや対象範囲)は含まれません。
マクロ内でinselectのパラメータ付きで検索した後、inselectをOFF状態にする場合、escapeinselectで解除することができます。