折り返し時のCalc_LineEndの挙動について
こんにちは。Azukiを便利に使わせていただいております。 以前から気になっていた挙動について調査・確認ができたので報告します。
Azukiで、折り返しを有効にしている状態(折り返し方法は問わないと思います)で、次の行に折り返している行の途中でEndキーを押すと、行末の文字の「手前」にキャレットが移動します。一般的には、Endキーを押した時に期待される挙動は行末の文字の「次」への移動ではないかと……。
直接の原因は、Sgry.Azuki.CaretMoveLogic::Calc_LineEnd メソッドにおけるoffset値がデフォルトで「-1」に設定されているためと思われます。
とりあえずoffset=0としてAnnで折り返し設定してみたところ、(改行をLFのみ/CRのみにした場合はともかく)論理的には期待される位置(行末の文字の直後)にキャレットが移動しました。ただ、論理的には正しいものの、見た目の上ではキャレットが「次の行の先頭」に移るため、やや違和感があります。ちなみに「メモ帳」と「oedit」では、折り返し行でEndキーを押した場合は例外的に「行末の文字の右」にキャレットが移動しました(もちろん、「→」キーなどでの移動時は「次の行の先頭」に移動します)。特例処理をしているようですね。
以上が調査の結果です。
個人的には、Endキー押下時にはキャレットは行末の文字の右側に移動してほしいと思いますが、やや大きな変更が生じると考えられるため、あくまでも「調査」としておきました。ご検討いただければ幸いです。
こんにちは。Azukiを便利に使わせていただいております。 以前から気になっていた挙動について調査・確認ができたので報告します。
Azukiで、折り返しを有効にしている状態(折り返し方法は問わないと思います)で、次の行に折り返している行の途中でEndキーを押すと、行末の文字の「手前」にキャレットが移動します。一般的には、Endキーを押した時に期待される挙動は行末の文字の「次」への移動ではないかと……。
直接の原因は、Sgry.Azuki.CaretMoveLogic::Calc_LineEnd メソッドにおけるoffset値がデフォルトで「-1」に設定されているためと思われます。
とりあえずoffset=0としてAnnで折り返し設定してみたところ、(改行をLFのみ/CRのみにした場合はともかく)論理的には期待される位置(行末の文字の直後)にキャレットが移動しました。ただ、論理的には正しいものの、見た目の上ではキャレットが「次の行の先頭」に移るため、やや違和感があります。ちなみに「メモ帳」と「oedit」では、折り返し行でEndキーを押した場合は例外的に「行末の文字の右」にキャレットが移動しました(もちろん、「→」キーなどでの移動時は「次の行の先頭」に移動します)。特例処理をしているようですね。
以上が調査の結果です。
個人的には、Endキー押下時にはキャレットは行末の文字の右側に移動してほしいと思いますが、やや大きな変更が生じると考えられるため、あくまでも「調査」としておきました。ご検討いただければ幸いです。