雑文発散

«前の日記(2017-01-16) 最新 次の日記(2017-01-18)» 編集
過去の日記

2017-01-17 [長年日記]

[Crowi] Crowi v1.5.3 にバグを入れちゃったので直していた

Crowi v1.5.3 がリリースされた。

Undo がうまくできない問題を修正した pull requestも取り込まれたのだけど、そこにバグを混入させてしまった。

具体的には、Markdown の編集画面で、以下のカーソル位置で Return キーを押すと、次の行の先頭に - が補完されるという機能あたりにバグを入れた。

- List1
- List2【カーソル位置】

Firefox だと、そもそも補完がうまくいかない。また Chrome だと次のようなパターンで、謎の挙動になっていた。

- List1
- Li【カーソル位置】st2

このカーソル位置で Return を押した場合の期待の動作は次のとおり。

- List1
- Li
- 【カーソル位置】st2

ところが、次のようになっていた。

- List1
- List2
- 【カーソル位置】

このあたりの挙動は Crowi 内で次のように行なっている。

  1. Return キーが押されたイベントを独自にハンドリング
  2. 補完が必要かどうか判断
  3. 補完が必要なら入力テキストを書き換え
  4. カーソルポジションにインサート

この 4 における「カーソルポジション」を間違えていたのが、今回のバグの原因。Undo 問題にフォーカスしすぎて、テストしきれてなかったのが失敗。

ということで、修正の pull request を作った。

実はまだちょっと残っている課題もあるんだけど、それは今後直して行こうかな、と。