[質問] 選択解除の後のカーソル位置

  1. マウスを動かして、選択します。
    A から B へ選択
    行5 ->(eee05eee07eeee    ここ A から
    行6  fff04fff06ffff
    行7  eee05eee07eeee)->  ここ B まで

    Collapse() の後、カーソルは、A

    B から A へ選択
    行5 <-(eee05eee07eeee    ここ A まで
    行6  fff04fff06ffff
    行7  eee05eee07eeee)<-  ここ B から

    Collapse() の後、カーソルは、B です。

    Collapse は、選択開始位置にカーソルを戻してしまう。
    # 私は、現在 Esc に Collapse を割り当てています。
    秀丸や GVim の選択解除で、カーソルは選択終了位置にとどまります。
    kuro さんは、意図的に、こういう動きにしているのでしょうか?
    それとコピーしても選択解除にならないのも仕様でしょうか?
    editor.ExecuteCommandByID( MEID_EDIT_COPY );
    # それが仕様であるのならば、そのように対処するかも。

     |  kinzoku  |  返信
  2. > Collapse は、選択開始位置にカーソルを戻してしまう。

    あ、ほんとですね。カーソルは選択終了位置の状態で選択解除されるほうが普通っぽいですね。
    選択終了位置でとどまるように修正します。ご報告ありがとうございます。

    > それとコピーしても選択解除にならないのも仕様でしょうか?

    MSのWORDやメモ帳などの標準的な動作に合わせていますので選択解除されないのは仕様です。どっちかといったら、選択解除される秀丸のほうが特殊なのかも・・・。

    今しがた最新ベータ版公開しちゃったので、正式リリース版ではCollapseの動作修正しときます。

     |  Kuro  |  返信
  3. > 今しがた最新ベータ版公開しちゃったので、正式リリース版ではCollapseの動作修正しときます。
    Collapse() の動作を変えると、既存のマクロが動かなくなる可能性が高いです。
    kuroさん作の「対応する括弧に移動」なども、Collapse()後がどうなるか・・・
    SelectWord() で選択した場合、ファイル先頭方向が「選択開始」になるから、誤作動すると思います。
    開き括弧( c1 の方 )は、CharLeft(false, 1) する必要があり、
    閉じ括弧( c2 の方 )は、CharRight(false, 1); が余計な移動になります。

    選択解除したらカーソルが選択終了位置にとどまる命令は、 
    Collapse2() など別名にした方が、なにかと問題がないと思います。

     |  kinzoku  |  返信
  4. > Collapse() の動作を変えると、既存のマクロが動かなくなる可能性が高いです。

    確かにそうなのですが、このあたりの仕様はやはり標準に合わせたいと思います・・・。

    > kuroさん作の「対応する括弧に移動」なども、Collapse()後がどうなるか・・・

    私の作ったものはマクロを修正すれば解決できますが、ユーザの方が作成したマクロが動かなくなるのは
    ちょっと申し訳ないところでもありますね・・・。

    > 選択解除したらカーソルが選択終了位置にとどまる命令は、 
    > Collapse2() など別名にした方が、なにかと問題がないと思います。

    MS-WORDのオートメーション機能を見てると選択開始位置に戻すのが標準になってました。
    んで、引数で開始位置か終了位置を選べるようになってるようです。
    (省略時は開始位置に戻す)

    http://msdn.microsoft.com/ja-jp/library/microsoft.office.interop.word.selection.collapse(office.11).aspx

    これにすれば万事解決の予感がしますが、いかがでしょう。

     |  Kuro  |  返信
  5. >これにすれば万事解決の予感がしますが、いかがでしょう。
    なるほど。OK です。

     |  kinzoku  |  返信
スポンサーリンク