マルチカーソル関係の動作について

  1. お疲れ様です。マルチカーソル関係についてお尋ねします。

    1.
    マルチカーソルの有効/無効に拘わらず、Ctrlを押さずに行番号クリックで複数行全体を選択した後、同様にして別の範囲を選択すると、最初の選択が残ったままになります。
    例えば、1-2行目の全体を選択し、3行目か4行目を選択します。すると1-2行目の選択が残ったままになります。5行目を選択した場合は解除されます。
    また下から上へ選択した場合は3行以上の時に発生します。5-3行目を選択し、3行目か2行目を選択すると5行目の選択が残ります。

    これは複数行選択の場合のみ発生します。

    2.
    Ctrl+Alt+↑↓でカーソルを追加する時の動作は、端のカーソルの隣りに追加されるのと、全てのカーソルの隣りに追加されるのと、どちらが意図されているでしょうか?

     |  黄身  |  返信
  2. Mery Ver 3.0.0 をお試しいただきありがとうございます。

    > 1.
    > マルチカーソルの有効/無効に拘わらず、Ctrlを押さずに行番号クリックで複数行全体を選択した後、同様にして別の範囲を選択すると、最初の選択が残ったままになります。

    ご報告ありがとうございます。

    私も先日、なんだか選択範囲の色のゴミが残る気がして調査していたのですが発生条件が分からず困っておりました。

    頂いた条件でバッチリ、現象を再現することができました。

    動作速度を高速化するために様々な条件下でなるべく余計な再描画を抑えているのですが、ちょっと抑えすぎてしまっていたようです。次のバージョンでは修正しておきますね。

    > 2.
    > Ctrl+Alt+↑↓でカーソルを追加する時の動作は、端のカーソルの隣りに追加されるのと、全てのカーソルの隣りに追加されるのと、どちらが意図されているでしょうか?

    Ctrl + Alt + ↑・↓ はすべてのカーソルの隣 (上または下) に新たなカーソルが追加されます。

     |  Kuro  |  返信
  3. 失礼いたします。
    特定のマクロの組み合わせで選択範囲が見えなくなる現象に遭遇したのですが、再描画を抑えている件と関係してそうなので、こちらで報告させていただきます。もし既に把握されていたらすみません。

    複数のカーソルを配置していて選択はしていない状態で、

    document.selection.Collapse(meCollapseEnd);
    //document.selection.CharLeft();
    //document.selection.CharRight();
    //document.selection.WordRight();
    //document.selection.WordLeft();
    
    document.selection.EndOfLine(true, mePosLogical);
    //document.selection.StartOfLine(true, mePosLogical);

    のようなマクロを実行すると、選択はされているけど選択範囲が見えない状態になります。

    この状態から、タブを切り替えたり、Shift+カーソルキーで選択範囲を変更すると見えるようになります。

    試した限り、コメントアウトしてある各メソッドで同様の現象がおきます。また、EndOfLine 単体だとこの現象はおきません。

     |  ucky  |  返信
  4. ご報告ありがとうございます。

    頂いた条件で現象を再現することができました。

    > 再描画を抑えている件と関係してそうなので、こちらで報告させていただきます

    まさにそれが原因のようです。

    > もし既に把握されていたらすみません。

    いいえー、いくつかの条件下で再描画を抑制するようにしているのですが、どうもマクロから操作される場合のこういったパターンを把握しきれていなかったようです。

    というより、マクロからの操作を考えると、今後もパターンを把握できない気がしてきました… ^^;

    うーん、難しそうです…。

    しばらく対策を考えてみますが、もしかすると今回の高速化の部分は廃止するかもしれません。

     |  Kuro  |  返信
  5. Ver 3.0.1 にて報告したマクロの組み合わせで選択範囲が見えることを確認しました。

    せっかく開発された高速化が廃止になってしまい心苦しいですが、ありがとうございました。

     |  ucky  |  返信
  6. ご確認いただきありがとうございます。

    > せっかく開発された高速化が廃止になってしまい心苦しいですが、ありがとうございました。

    いいえー、やはり付け焼き刃の高速化はダメですね。

    DirectWrite 有効時の速度改善は根本的な実装から見直す必要があるということで、今回は勉強になりました。

    高速化については、改めて将来的な課題とさせていただきたいと思います。

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