再現方法はまだ未確定だけど、条件は分かった。
ctrl-Zでアンドゥをするとアンドゥ対象文字列は選択状態になっているんだけど、まれに選択状態にならない時がある*1。そのときに改行を押すとハングアップ(フリーズ)する。
また、今のところ最終行でアンドゥした時にしか発生していない気がするので、末端処理がおかしくなっているような気がする。
2chに再現方法があったので、ほぼ特定できたかな。
ファイル末尾でBSを繰り返したあとで文字を入力し、アンドゥを繰り返すと、選択状態がずれて末端記号(0x00)以降も選択状態になる。この状態のときに選択状態の文字列を上書きすると(BSで消すなり改行打つなり文字を入力するなり)すると末端記号以降のメモリを上書きしてしまいフリーズしているように見える。
ま、僕は文書の末尾に「■■」とか置いてるので、ひっかかる可能性は低いけど。
キーリピート遅いから、範囲指定してから削除することのほうが多そうだし。
追記
かなり分かりやすい再現方法。「|」はカーソル位置で、[太字]は選択状態ね。
1234|567890
ここでBSを4回押す。
567890 |
あ|567890ctrl-Z。
[1234]567890ctrl-Z。
あ56[7]890本来は「あ」が選択されるべきなのが、「7」が選択されている。 BSで文字を削除したぶん余分にカーソルを動かして選択してるように見える。 つまり、大量の文字をBSで削除し、そのあと1文字入力してからctrl-Zを偶数回押すと、非常に後ろの位置を選択することになると思われる。
*1:昨日使ってて違和感を感じたのはそれ。