setcompatiblemodeが正常に機能しないNo.37726
arkangel さん 19/11/18 12:58
 
1.文章中に多数ある単語を検索

2.F3 or Shift+F3 を押す

  ⇒ 文章全体でカーソル位置が移動することを確認

3.数行選択状態にした後、下記のようなマクロを実行

 setcompatiblemode 0x20000;
 replaceallfast "aaa", "bbb", inselect;

4.F3 or Shift+F3 を押す

  ⇒ 先ほど選択していた範囲しかカーソル位置が移動しない


【推測されること】
検索条件の「選択した範囲のみ」がマクロ終了後も残った状態になっている

【望む動作】
マクロ終了後に検索条件をマクロ実行前と同じに戻す
つまり、文章全体が検索対象に戻るように

[ ]
RE:37726 setcompatiblemodeが正常に機能No.37727
秀丸担当 さん 19/11/18 15:58
 

setcompatiblemode 0x20000;では確かにinselectの状態は対象ではなかったです。
setcompatiblemode 0x20000;を使わない場合、searchbufferとsearchoption で記憶
して、setsearchで復元するという方法が従来からありますが、これもinselectの状
態は対象ではないです。
これと同じように、明示的に状態を維持するようなマクロをinselectingやforceinse
lect,escapeinselectでできないか考えてみたのですが、簡単ではなさそうでした。
OFF状態は維持できても、ON状態が簡単ではないのと、できたとしても、編集が加わ
った後は範囲がずれる可能性があって、逆に問題になりなかないです。
setcompatiblemodeの補足としてinselectのことも書いておこうと思います。

OFF状態にするだけでよければ、escapeinselectでできます。
例えば以下のようにするとマクロ終了後に全体が対象になります。
setcompatiblemode 0x20000;
replaceallfast "aaa", "bbb", inselect;
escapeinselect;

[ ]