朝から変更箇所を確認していたのですがよくわからなくて途中で寝ちゃいました.で終わらせるわけにも行きませんので質問です.
1. CEditView_Command.cpp
CEditView::Command_LEFT()で
>// 2004.03.28 Moca EOFだけの行以降の途中にカーソルがあると落ちるバグ修正
>else if( pcLayout ){
となっていますが,EOF以降にキャレットがある場合に左移動を指示した場合にMoveCursor以外なにもしていませんが,MoveCursorの改良のおかげで適切な位置にキャレットを移動してもらえるという動作でOKでしょうか.
>CEditView::Command_RIGHT()
>if( NULL == pcLayout ){
> goto end_of_func;
>}
end_of_funcに飛ばす代わりにnPosX = 0を設定してカーソル位置+選択範囲設定を行うようになっていますが,pcLayoutがNULLのときにそれがどういう違いをうむのかよくわかりませんでした.
2. CLayoutMgr_New.cpp
Layoutの両関数においてnPosXの意味を変更していますが,禁則処理で行頭での処理を避ける判定部分を
&& nPosXの部分を→&& ( nPosX > nIndent ) する処理が漏れているようです.
nPosXとnMaxLineSizeの両方ともnIndentだけ増えているので
・比較の両辺に上の変数が共に現れている物は影響なし
・TAB幅の算出にnPosXを使っている部分は意図通り
と考えてnPosXを追跡すると残るのは上の条件文だけとなります.
>m_nLineTypeBot = nCOMMENTMODE;
というのが一部削除されていますが「一部」というところが何となく謎なんですが...なんか説明して頂けます?
この2つ以外は取り込み完了しています.また追加変更に対してパッチの作り直しはしてくださらなくて結構です.(というかもう上記以外は取り込んでしまったので...)
---
何のためになおしたのか説明が全然書いてないと,意図を確認するところから始めないといけないのでえらく大変.(;_;)
適当に理解した内容をコメントに追加しながら進めていますが...
CEditView::m_nCaretPosX_Prev の意味も本日初めてわかったのでコメントを追加しておきました.
(不明だけどと但し書きして修正した2年前の自分のコメントを発見して...)