setcompatiblemode文(Ver8.71対応版)
目次− setcompatiblemode文
 setcompatiblemode文は、マクロの互換性の指示をします。(V6.00以降)

 #old=setcompatiblemode(#new);として、設定すると同時に直前の値を知ることもできます。(setcompatiblemode関数
 パラメータに以下の値を指定できます。

 折りたたみがあるときの動作を、以下の値のOR演算した値で指定できます。

0x0000   マクロの標準動作(0x0002と同じ)

0x0001   折りたたみを解除

0x0002   折りたたみを無視してなるべく維持

0x0003   折りたたみを維持

0x0002の「折りたたみを無視してなるべく維持」は、例えばdown;文でカーソル移動したとき、折りたたみされた範囲に入るときのみ自動的に折りたたみが解除されます。
折りたたみされた場所でなければ折りたたみはそのままです。
 部分編集されているときの動作を、以下の値のOR演算した値で指定できます。

0x0000   マクロの標準動作(0x0008と同じ)

0x0004   部分編集を解除

0x0008   部分編集を無視してなるべく維持

0x000c   部分編集を維持

0x0008の「部分編集を無視してなるべく維持」は、例えばdown;文でカーソル移動したとき、部分編集された範囲の外に出るときのみ自動的に部分編集が解除されます。
部分編集された範囲内での移動では部分編集はそのままです。
以下の文は部分編集を維持していても、部分編集の外にジャンプします。
・nextmark/prevmark(マーク行の上検索/下検索)
・goupdateup/goupdatedown(上/下の編集マーク)
・nextcolormarker/prevcolormarker(上/下のカラーマーカー)
 openfileなどでファイルを開くときの排他制御(秀丸エディタで同じファイルを開く場合)の動作を、以下の値のOR演算した値で指定できます。

0x00000000   マクロの標準動作(動作環境に従う)

0x00000010   開く方法を問い合わせする

0x00000020   上書き禁止で開く

0x00000030   同じファイルを2つ開くことを禁止する(ジャンプする)

0x00000040   ファイルを読み込みなおしする

0x00000050   強制的に開く(複数の秀丸で開くことを無視して普通に開く)

 「検索での表示」の動作を、以下の値のOR演算した値で指定できます。

0x00000000   マクロの標準動作(動作環境に従う)

0x00000100   点滅表示

0x00000200   範囲選択

 「貼り付け後のカーソル位置」の動作を、以下の値のOR演算した値で指定できます。(V8.00以降)

0x00000000   マクロの標準動作(動作環境に従う)

0x00001000   先頭のまま

0x00002000   最後に移動

 マクロ内で検索系コマンドを実行しても、マクロ終了後に検索条件をマクロ実行前と同じに戻すことが出来ます。(V8.20以降)

0x00020000    マクロ終了後に検索条件をマクロ実行前と同じに戻します。


0x00080000    マクロ終了後にカーソル移動後と編集後の自動起動マクロを動かせるようにします。

 各種の文を複数選択に対応した動作にできます。(V8.40以降)

0x00100000    各種の文を複数選択に対応した動作にします。

 削除した範囲にあるカラーマーカーをやり直し可能にします。(V8.56以降)

0x00200000    削除した範囲にあるカラーマーカーをやり直し可能にします。

 「前のカーソル位置」の記憶を変更しないようにします。(V8.58以降)

0x00400000    「前のカーソル位置」の記憶を変更しないようにします。

 disabledrawで検索後のカーソル状態を正しくします。(V8.66β6以降)

0x00800000    disabledrawで検索後のカーソル状態を正しくします。

 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などでマクロの実行が他の秀丸エディタに移動してもこの状態は引き継がれます。


マクロ終了後に検索条件を戻す用の0x00020000の指定について

 「setcompatiblemode 0x00020000;」は、一番最初にそれを実行した瞬間に検索条件がバックアップされなおされます。なので、検索条件を書き換えた後にこの命令を使うと、マクロの実行前とは別の検索条件が復元されてしまう可能性があります。なので、この命令は検索系コマンドを使う前に実行してください。
 「setcompatiblemode 0x00020000;」を複数回実行しても、検索条件のバックアップは一番最初のsetcompatiblemode時だけになります。また、「setcompatiblemode 0x00020000;」を実行した後で、例えば「setcompatiblemode 0;」のように、0x00020000のフラグをクリアするような動作をしたとしても、検索条件の保存/復元自体はキャンセルされず、マクロが終了した時点で必ず検索バッファの復元が実行されます。(Ver8.22から一部仕様変更がありました)





戻る