                        ViVi version 5.0.012
                             04-May-2011
                    Copyright (C) 2011 by N.Tsuda
                  mailto: ntsuda@master.email.ne.jp
                       http://vivi.dyndns.org/


■ 概要

ViVi は vi コマンドをサポートするテキストエディタです。
vi コマンドは、基本的に (n)vi 互換ですが、Ctrl + V 等 Windows標準キー
バインドと矛盾するものは Windows キー割り当てを優先しています（ViVi的
キーバインド）。


■ ライセンス

ViVi は有料のソフトウェアですが、verion 5.0.xxx だけは特別に無料で使用
できるフリーウェアです。
※ ver 5.1 or 6.0 以降は有料に戻ります。

ソースコードは http://sourceforge.jp/projects/vivi-50-free/ からゲット
でき、ライセンスは基本的にMITライセンスです。
ですので、不自由なGPLと違ってソースコードを自由に再利用可能です。
ただし、作者は不自由で使い勝手の悪いGPLが大嫌いなので、ソースコード
をGPL系のプロジェクトで再利用することを禁止します。

また、プロジェクトにはイラストファイルが含まれていますが、イラストは
MIT ライセンスではありません。
再利用したい場合は以下の著作権者に問い合せてください。
http://www.pixiv.net/member.php?id=220294


■ 開発モデル

ViVi は「頑固爺開発モデル」を採用しています。
これは開発に関わるすべてのことは作者の独断と偏見で決定する、という開発
モデルです。他の人の分析・意見は注意深く拝聴しますが、作者の意向と異な
る意見に従うということは一切ありません。


■ 謝辞

素敵なイラストの利用を許諾してくださった 桃色椿 さんに感謝しています。


■ SPR (Software Problem Report)

凡例：● Open, ◎ Fix&Close, ○ notFix&Close, etc

#SPR 状 優 Open     build Close    build type  概要
---- -- -- -------- ----- -------- ----- ----  ------------------------------------------------------------------
0001 ◎ B  11/04/02 0.000 11/04/02 0.001│ToDo│プロジェクト新規作成
0002 ◎ B  11/04/02 0.000 11/04/02 0.001│ToDo│OutputBar 実装
0003 ◎ B  11/04/03 0.000 11/04/03 0.001│ToDo│TextDocument クラス組み込み
	補足：View クラス導入がまだなので、とりあえず PlainTextEdit が TextDocument オブジェクトを保持するようにしておく
0004 ● C  11/04/03 0.000               │問題│ドッキングバーの表示状態を保存・復帰するようにした方がよい
0005 ◎ B  11/04/03 0.000 11/04/03 0.001│ToDo│TextDocument の内容をとりあえず PlainTextEdit に表示するようにする
	詳細：スクロール無し、タブも考慮しない。単にブロック単位で文字列表示のみ
0006 ◎ B  11/04/03 0.000 11/04/03 0.001│ToDo│テキストカーソル表示
0007 ◎ B  11/04/03 0.000 11/04/08 0.001│ToDo│PlainTextEdit のマウスポインタをIビームに変更
0008 ◎ B  11/04/03 0.000 11/04/03 0.001│ToDo│文字挿入処理
0009 ◎ B  11/04/03 0.000 11/04/03 0.001│ToDo│BackSpace
0010 ◎ B  11/04/03 0.000 11/04/03 0.001│ToDo│Delete
0011 ◎ B  11/04/03 0.000 11/04/04 0.001│ToDo│アバウトダイアログ
0012 ◎ B  11/04/03 0.000 11/04/08 0.001│ToDo│IME 入力
	結果：とりあえず入力可能にした。様々な問題があるが、それらは別SPRとする
0013 ◎ B  11/04/04 0.000 11/04/04 0.001│ToDo│ペースト機能
0014 ◎ B  11/04/04 0.000 11/04/05 0.001│ToDo│垂直スクロールバーによるスクロール機能
0015 ◎ B  11/04/04 0.000 11/04/04 0.001│ToDo│ステータスバー表示
0016 ◎ B  11/04/04 0.000 11/04/04 0.001│ToDo│undo/redo
0017 ◎ B  11/04/04 0.000 11/04/05 0.001│問題│Tab があるとカーソル位置が不正になる
0018 ◎ B  11/04/05 0.000 11/04/05 0.001│ToDo│単体テスト機能追加
0019 ◎ B  11/04/05 0.000 11/04/05 0.001│ToDo│ベンチマーク機能追加
0020 ◎ B  11/04/05 0.000 11/04/05 0.001│ToDo│テキストカーソル位置を表示するよう自動スクロール
0021 ◎ B  11/04/05 0.000 11/04/05 0.001│ToDo│テストのために、とりあえず上下カーソル移動を実装しておく
0022 ◎ B  11/04/05 0.000 11/04/05 0.001│ToDo│フォント情報を参照し、表示位置を決める
0023 ◎ B  11/04/05 0.000 11/04/05 0.001│問題│Tab 挿入ができない
	原因：フォカース移動として処理されている？
0024 ◎ B  11/04/05 0.000 11/04/05 0.001│ToDo│Ctrl + Home
0025 ◎ B  11/04/05 0.000 11/04/07 0.001│ToDo│Ctrl + End
0026 ◎ B  11/04/05 0.000 11/04/09 0.002│ToDo│編集時に TextDocument::m_blockIndex, m_blockPosition を更新
0027 ◎ B  11/04/05 0.000 11/04/05 0.001│ToDo│行番号表示
0028 ◎ B  11/04/05 0.000 11/04/05 0.001│Rfct│blockIndex, blockPosition はひとつの構造体にした方がよい
0029 ◎ B  11/04/05 0.000 11/04/05 0.001│ToDo│[EOF] 表示
0030 ◎ B  11/04/05 0.000 11/04/10 0.002│ToDo│改行記号表示
0031 ● B  11/04/05 0.000               │ToDo│全角空白記号表示
0032 ◎ B  11/04/05 0.000 11/04/10 0.002│ToDo│タブ記号表示
0033 ◎ C  11/04/05 0.000 11/04/10 0.002│問題│TextDocument::findBlockIndex() がブロックキャッシュを参照していない
0034 ◎ B  11/04/05 0.000 11/04/05 0.001│問題│垂直スクロールバーでスクロールしても行番号部分が再描画されない
0035 ◎ B  11/04/06 0.000 11/04/06 0.001│ToDo│ファイルオープン
0036 ◎ B  11/04/06 0.000 11/04/07 0.001│ToDo│MRUファイル機能
0037 ◎ B  11/04/06 0.000 11/04/06 0.001│問題│複数ファイルをオープンできない
0038 ◎ B  11/04/06 0.000 11/04/07 0.001│問題│ウィンドウをリサイズしてもスクロールバー情報が更新されない
0039 ◎ B  11/04/06 0.000 11/04/07 0.001│問題│ファイルオープン直後のスクロールバー情報が不正
0040 ◎ B  11/04/06 0.000 11/04/06 0.001│ToDo│Ctrl + マウスホイールによる拡大縮小
	結果：とりあえず実装。ただし、垂直スクロールバー情報が更新されない
0041 ◎ B  11/04/06 0.000 11/04/06 0.001│ToDo│new
0042 ● B  11/04/06 0.000               │ToDo│カレントファイルディレクトリに移動
0043 ◎ B  11/04/06 0.000 11/04/06 0.001│ToDo│Esc でカレントディレクトリをステータスバーに表示
0044 ◎ B  11/04/06 0.000 11/04/06 0.001│cln │BLOCK_HAS_OFFSET に関する部分は削除し、クリーンナップ
0045 ◎ B  11/04/07 0.000 11/04/07 0.001│Rfct│ブロック情報を渡す場合は TextBlockData を使用するように変更
0046 ◎ B  11/04/07 0.000 11/04/07 0.001│ToDo│Esc で現在カーソル情報、ブロックキャッシュ情報をステータスバーに表示
0047 ◎ B  11/04/07 0.000 11/04/07 0.001│ToDo│Shift + ←、→でテキスト選択
0048 ◎ B  11/04/07 0.000 11/04/07 0.001│ToDo│選択状態表示
	結果：とりあえずライトグレイで描画。後で色を変えよう
0049 ◎ B  11/04/07 0.000 11/04/07 0.001│問題│半角空白の次にカーソルがある場合に、カーソルが左にずれる
	結果：本件は治ったが、別件あり：SPR#0055
0050 ◎ B  11/04/07 0.000 11/04/07 0.001│ToDo│copy, cut
0051 ◎ B  11/04/07 0.000 11/04/07 0.001│ToDo│Home
	結果：とりあえず実装。先頭非空白文字へは移動しない。要別SPR登録
0052 ◎ B  11/04/07 0.000 11/04/07 0.001│ToDo│End
0053 ◎ B  11/04/07 0.000 11/04/10 0.002│ToDo│PageUp, PageDown
0054 ◎ B  11/04/07 0.000 11/04/07 0.001│Rfct│PlainTextEdit::keyPressEvent()カーソル移動処理部分：movePosition() コールを一箇所にする
0055 ◎ B  11/04/07 0.000 11/04/08 0.001│問題│途中に半角空白があるとカーソル位置がずれる
0056 ◎ B  11/04/07 0.000 11/04/07 0.001│問題│UTF-8データオフセットと文字数が混同されている
0057 ◎ B  11/04/07 0.000 11/04/07 0.001│問題│行数が10万を超えた場合は行番号エリアを広くした方がよい
0058 ◎ B  11/04/07 0.000 11/04/10 0.002│問題│改行挿入を行って、カーソルが画面下に移動しても、自動スクロールしない
0059 ◎ B  11/04/07 0.000 11/04/07 0.001│ToDo│Ctrl + A で全選択
0060 ◎ B  11/04/07 0.000 11/04/07 0.001│問題│垂直スクロールバー：ノブのサイズが大きい
0061 ◎ B  11/04/07 0.000 11/04/07 0.001│問題│undo/redo を行ったときに、カーソル位置が表示されるように自動スクロールしない
0062 ◎ B  11/04/07 0.000 11/04/10 0.002│ToDo│テキストカーソルブリンク
0063 ◎ B  11/04/08 0.000 11/04/08 0.001│ToDo│save
0064 ◎ B  11/04/08 0.000 11/04/08 0.001│問題│編集＆未保存文書をクローズしても、保存確認ダイアログが出ない
0065 ◎ B  11/04/08 0.000 11/04/08 0.001│ToDo│編集時に contentsChanged() シグナルをエミット
0066 ◎ B  11/04/08 0.000 11/04/08 0.001│ToDo│SaveAs
0067 ◎ B  11/04/08 0.000 11/04/08 0.001│ToDo│IME変換候補文字表示
0068 ◎ B  11/04/08 0.000 11/04/10 0.002│問題│IME変換候補一覧表示位置不正
0069 ◎ B  11/04/08 0.000 11/04/08 0.001│ToDo│マウスクリックでカーソル設定
0070 ◎ B  11/04/08 0.000 11/04/08 0.001│問題│「、」の直後のカーソルが左にずれる
0071 ◎ B  11/04/08 0.000 11/04/08 0.001│ToDo│マウスクリック＆ドラッグによる文字列選択
	結果：とりあえず実装。自動スクロールは未実装
0072 ◎ B  11/04/08 0.000 11/04/08 0.001│ToDo│Ctrl + ← → で単語単位移動
0073 ◎ B  11/04/08 0.000 11/04/08 0.001│問題│編集後にundoしてもモディファイ状態が元に戻らない
0074 ● B  11/04/08 0.000               │問題│↑↓でカラム位置が保存されない
	メモ：QFontMetrics が無いとx座標を計算できないので、TextCursor が QWidget へのポインタを保持する？
0075 ◎ C  11/04/08 0.000 11/04/13 0.004│問題│垂直スクロールバーのノブをドラッグして末尾移動しても、EOFが表示される様にスクロールしない
0076 ● C  11/04/08 0.000               │問題│IME変換中文字列はアンダーラインを表示した方がよい
0077 ◎ C  11/04/08 0.000 11/04/10 0.001│問題│初期状態から編集、undo 後に、redo を行ってもモディファイ状態にならない
0078 ◎ C  11/04/09 0.000 11/04/09 0.001│問題│Shift + Ctr + ←、→ が動作不良
0079 ◎ C  11/04/09 0.000 11/04/09 0.001│ToDo│マウスダブルクリックで単語単位選択
0080 ◎ C  11/04/09 0.001 11/04/09 0.002│問題│カーソルが CRLF 位置にいるときに、→ を押しても次の行にカーソル移動しない
0081 ◎ C  11/04/09 0.001 11/04/09 0.002│ToDo│Enter を押した場合は \n を挿入するようにしておく
0082 ◎ C  11/04/09 0.001 11/04/09 0.002│ToDo│CRLF/CR/LF の区別がつく改行記号をとりあえず表示
0083 ◎ C  11/04/09 0.001 11/04/09 0.002│ToDo│デバッグ用に TextDocument::m_blocks の値を表示するメニュー追加
0084 ◎ C  11/04/09 0.001 11/04/09 0.002│問題│改行挿入後のテキストカーソルの TextBlockData の値が不正
0085 ◎ C  11/04/10 0.001 11/04/10 0.002│Rfct│UndoMgr::m_items の型を std::vector<GVUndoItem> に変え、boost_pool の使用を止める
0086 ◎ C  11/04/10 0.001 11/04/10 0.002│ToDo│QtCreator minGW でビルド可能にする
0087 ◎ B  11/04/10 0.001 11/04/13 0.005│ToDo│Ctrl + Delete でカーソル位置単語末尾まで削除
0088 ◎ C  11/04/10 0.001 11/04/14 0.005│ToDo│Shift + Delete でカーソル位置から行末までを削除
0089 ◎ C  11/04/10 0.001 11/04/13 0.005│ToDo│Ctrl + BackSpace でカーソル位置から単語先頭まで削除
0090 ◎ C  11/04/10 0.001 11/04/14 0.005│ToDo│Shift + BackSpace でカーソル位置から行頭まで削除
0091 ○ C  11/04/10 0.001               │問題│2行目で文字挿入しても、ブロックキャッシュが2行目にならない
	結果：挿入行に設定されたあと、表示開始行に設定されていた
0092 ◎ C  11/04/10 0.001 11/04/10 0.002│問題│PageDown 押下に Ctrl + End を押しても、EOF が表示されるようにカーソル移動しない
0093 ◎ C  11/04/10 0.001 11/04/10 0.002│問題│カーソル移動直後にカーソルが表示されない。ブリンクタイマーをリスタートすべき
0094 ◎ C  11/04/10 0.001 11/04/14 0.005│ToDo│検索ダイアログをとりあえず作成
0095 ◎ C  11/04/10 0.001 11/04/20 0.008│ToDo│置換ダイアログをとりあえず作成
0096 ◎ C  11/04/11 0.001 11/04/11 0.002│ToDo│View 用の ViewTextCursor をとりあえず導入（折り返し処理は後で実装）
0097 ◎ C  11/04/12 0.001 11/04/12 0.002│Rfct│ViewTextCursor は TextCursor の派生クラスとする
0098 ◎ C  11/04/12 0.001 11/04/12 0.002│Rfct│ビュークラス名を PlainTextEdit から TextView に変更
0099 ◎ C  11/04/12 0.001 11/04/12 0.002│ToDo│TextCursor の上下移動はオフセット値を保存するようにしておく
0100 ◎ C  11/04/12 0.001 11/04/12 0.003│ToDo│単体テストに失敗した結果からタグジャンプ可能にする
0101 ◎ C  11/04/12 0.002 11/04/12 0.003│問題│ファイルオープン状態で、MRUファイルからファイルオープンしても別ウィンドウが開かない
0102 ◎ C  11/04/12 0.002 11/04/12 0.003│ToDo│起動直後のウィンドウタイトルを ViVi 5.0.xxx にする
0103 ◎ A  11/04/12 0.002 11/04/12 0.003│問題│環境によっては SJIS ファイルをオープン、保存するとクラッシュする
0104 ◎ C  11/04/12 0.003 11/04/12 0.004│ToDo│デフォルトエンコーディングは QTextCodec::codecForLocale() とする
0105 ◎ C  11/04/13 0.003 11/04/13 0.004│ToDo│フォント選択ダイアログ（全ビュー共通）をとりあえず実装しておく
0106 ◎ C  11/04/13 0.003 11/04/13 0.004│問題│マウスホイールでフォントサイズを変更した場合は、ステータスバーにサイズ表示した方がよい
0107 ◎ C  11/04/13 0.003 11/04/13 0.004│ToDo│ベンチマークテスト中はカーソルを変更した方がよい
0108 ◎ C  11/04/13 0.003 11/04/13 0.004│ToDo│"XYZ"→"Abcde"、"Abcde"→"XYZ"全置換ベンチマーク
0109 ◎ C  11/04/13 0.003 11/04/13 0.004│問題│文書の最後の方で、行単位選択して Copy 後, Paste を繰り返すと結果が不正になった
	原因：改行が CRLF の場合、2文字なのに、カーソル移動では1文字とみなしているため
0110 ◎ C  11/04/13 0.003 11/04/13 0.004│問題│文書の最後の方で、行単位選択して Copy, Paste 後、undo すると文書先頭にスクロールしてしまった。
0111 ◎ C  11/04/13 0.003 11/04/13 0.004│ToDo│undo/redo 出来ない場合に undo/redo すると、カーソルが文書先頭に移動してしまう
0112 ◎ C  11/04/13 0.003 11/04/14 0.005│問題│検索ダイアログ：タイトルを tr("Find Dialog") に変更
0113 ◎ C  11/04/14 0.004 11/04/14 0.005│問題│Delete で1文字削除し、Undo したときに、カーソルが消した文字の直後に設定される。文字位置に設定されるべき
0114 ◎ C  11/04/14 0.004 11/04/14 0.005│ToDo│検索ダイアログ：大文字小文字同一視オプション追加
0115 ◎ C  11/04/14 0.004 11/04/14 0.005│問題│選択状態で削除を行った後 Undo した場合は、選択状態に復帰した方がよい
0116 ◎ C  11/04/14 0.004 11/04/14 0.005│ToDo│検索ダイアログ：検索方向オプション追加
0117 ◎ C  11/04/14 0.004 11/04/14 0.005│ToDo│検索ダイアログ：【検索＆クローズ】ボタン
0118 ◎ C  11/04/14 0.004 11/04/14 0.005│ToDo│検索ダイアログ：【キャンセル】ボタン
0119 ◎ C  11/04/14 0.004 11/04/17 0.006│ToDo│次検索メニュー・ツールバー・ショートカットキー（F3）
0120 ◎ C  11/04/14 0.004 11/04/17 0.006│ToDo│前検索メニュー・ツールバー・ショートカットキー（Shift + F3）
	結果：とりあえず実装。検索オプションの取り扱いについては別SPRとする
0121 ◎ C  11/04/14 0.004 11/04/17 0.006│ToDo│検索文字列履歴
0122 ◎ C  11/04/14 0.004 11/04/14 0.005│問題│マウスクリックした瞬間にテキストカーソルが表示されない。
0123 ◎ C  11/04/14 0.004 11/04/17 0.006│ToDo│Ctrl + F3 でカーソル位置単語検索
0124 ◎ C  11/04/15 0.005 11/04/15 0.006│ToDo│TextView::m_blocks を構築する buildBlocks をとりあえず実装してみる
0125 ◎ C  11/04/16 0.005 11/04/18 0.007│ToDo│IME文字入力がマルチカーソルに対応していない
0126 ◎ C  11/04/17 0.005 11/04/17 0.006│ToDo│検索文字列を QSettings に保存
0127 ◎ C  11/04/17 0.005 11/04/17 0.006│ToDo│検索ダイアログ：ドロップダウンで検索履歴参照可能に
0128 ◎ C  11/04/18 0.005 11/04/18 0.006│問題│検索・置換ダイアログ：検索・置換文字列入力エリアは横方向を優先的に拡大
0129 ◎ C  11/04/18 0.005 11/04/25 0.010│問題│単体テスト・ベンチマーク等を実行した場合は、アウトプットを強制表示
0130 ◎ C  11/04/18 0.005 11/04/18 0.006│ToDo│副カーソルとメインカーソルが重なっている場合は、副カーソルを削除
0131 ◎ C  11/04/18 0.005 11/04/18 0.006│問題│副カーソルが同一行に複数あっても、最初のひとつだけしか表示されない
0132 ◎ C  11/04/18 0.005 11/04/18 0.006│問題│マルチカーソル状態で文字入力された文字が一度に undo されない
0133 ◎ C  11/04/18 0.006 11/04/18 0.007│問題│マルチカーソル状態で文字入力後 undo するとカーソル位置が不正になる
0134 ◎ C  11/04/18 0.006 11/04/18 0.007│ToDo│Delete, BackSpace マルチカーソル対応
	結果：ソースが重複してるので、後でクリーンナップ。Ctrl + Delete などはマルチカーソル対応しないこととする
0135 ◎ C  11/04/18 0.006 11/04/19 0.007│ToDo│置換ダイアログ：findNext, findPrev
0136 ◎ C  11/04/19 0.006 11/04/19 0.007│ToDo│置換ダイアログ：【置換＆検索】
0137 ◎ C  11/04/19 0.006 11/04/19 0.007│ToDo│置換ダイアログ：【Undo】【Redo】
0138 ◎ C  11/04/19 0.006 11/04/19 0.007│ToDo│置換ダイアログ：【全置換】
	結果：とりあえず実装。いろいろ問題があるので別SPR登録する
0139 ◎ C  11/04/19 0.006 11/04/19 0.007│ToDo│マルチカーソル：選択状態表示
0140 ◎ C  11/04/19 0.006 11/04/19 0.007│ToDo│マルチカーソル状態でTabを押した場合は、選択文字列をローテイト
0141 ◎ C  11/04/19 0.006 11/04/19 0.007│問題│BackSpace が動作不良
0142 ◎ C  11/04/19 0.006 11/04/20 0.008│問題│行末の単語を複数選択し Tab を押して入れ替えると、副カーソル位置が不正になる場合がある
0143 ● C  11/04/20 0.007               │ToDo│マルチカーソル自動テスト：選択状態無・有、同一行・複数行、選択が行内・複数行範囲
0144 ◎ C  11/04/20 0.007 11/04/22 0.009│ToDo│単体・自動テスト：テスト項目をメニューで選択可能にする
0145 ◎ C  11/04/20 0.007 11/04/20 0.008│問題│置換ダイアログ：【全置換】後のundoが一度にundoされない
0146 ◎ C  11/04/20 0.007 11/04/20 0.008│問題│マルチカーソル：Delete が動作不良
0147 ◎ C  11/04/20 0.007 11/04/20 0.008│問題│マルチカーソル：選択状態での文字挿入が動作不良
0148 ◎ C  11/04/20 0.007 11/04/20 0.008│問題│マルチカーソル：副カーソルの選択範囲が複数行にまたがっていると、２行目以降が選択表示されない
0149 ◎ C  11/04/20 0.007 11/04/20 0.008│ToDo│置換ダイアログを開いた時は副カーソルをクリアした方がよい
0150 ◎ C  11/04/20 0.008 11/04/20 0.009│ToDo│検索ダイアログ：検索文字列入力エリア幅はデフォルトでもっと広い方がよい。
0151 ◎ C  11/04/21 0.008 11/04/21 0.009│問題│GVUndoMgr::doundo() の引数型が uint（32bit固定）になっている。index_t（x64 では64bit）にすべき。
0152 ◎ C  11/04/21 0.008 11/04/21 0.009│ToDo│boost の格納ディレクトリは /usr/boost とする
0153 ◎ C  11/04/21 0.008 11/04/21 0.009│問題│buf += text[ix] がマックではエラーになる
0154 ◎ C  11/04/21 0.008 11/04/21 0.009│ToDo│ビューメニューに「右端で折り返し」追加
0155 ◎ C  11/04/21 0.008 11/04/24 0.010│ToDo│表示範囲のみ折り返し表示
	結果：とりあえず実装。未コーディングによる問題が山のようにあるが、別SPRとする
0156 ◎ C  11/04/21 0.008 11/04/21 0.009│問題│置換を繰り返した後、undo を繰り返すと画面表示が乱れる
	原因：undo処理する場所より先にキャッシュがあると、キャッシュ内容が不正になってしまう
0157 ◎ C  11/04/21 0.008 11/04/21 0.009│問題│置換文字列履歴が機能していない
0158 ◎ C  11/04/21 0.008 11/04/26 0.010│ToDo│まずは TextView::buildViewLines(TextBlock, int wd, int ht) の単体テスト・実装
0159 ◎ C  11/04/22 0.008 11/04/22 0.009│問題│マルチカーソル：複数選択状態で Ctrl + X を押しても、選択箇所が全て削除されない
0160 ◎ C  11/04/22 0.008 11/04/22 0.009│ToDo│マルチカーソル：複数選択状態で Ctrl + C を押しても、選択箇所が全てクリップボードにコピーされない
	補足：とりあえず、文字列をひとつに連結してクリップボードにコピーするという仕様にしておく
0161 ◎ C  11/04/22 0.008 11/04/22 0.009│ToDo│クラス名を DocXXX, ViewXXX に変更
0162 ◎ C  11/04/24 0.009 11/04/24 0.010│問題│行番号表示が折り返し表示に対応していない
0163 ◎ C  11/04/24 0.009 11/04/24 0.010│問題│折り返しモードの時にIビームテキストカーソルが複数表示される
0164 ◎ C  11/04/24 0.009 11/04/24 0.010│問題│折り返し表示時：[EOF]表示位置が不正になる
0165 ◎ C  11/04/24 0.009 11/04/24 0.010│問題│（非折り返しモードでも）カーソルキーによるカーソル移動が動作不良
0166 ◎ C  11/04/24 0.009 11/04/26 0.011│問題│折り返し表示時：↓で２行目以降に移動したときにテキストカーソル表示位置が不正になる
0167 ● C  11/04/24 0.009               │ToDo│TextView::findBlockData() 単体テスト・コーディング
0168 ● C  11/04/25 0.009               │ToDo│ベンチマーク項目：メニューで選択可能にする
0169 ◎ C  11/04/25 0.009 11/04/25 0.010│問題│垂直スクロールを行っても行番号部分がスクロールしない
0170 ◎ C  11/04/25 0.009 11/04/25 0.010│問題│タブがあると、長い行のラインブレイク位置が不正になる
0171 ◎ C  11/04/25 0.009 11/04/25 0.010│問題│カーソルが折り返された行の２行目以降にあるとき、表示位置不正
0172 ◎ C  11/04/26 0.010 11/04/26 0.011│問題│折り返し位置がぎりぎりすぎる。少し余裕をもたせた方がよい
0173 ◎ C  11/04/26 0.010 11/04/26 0.011│ToDo│暫定的に、折り返し処理は全体を一度に行うようにする
0174 ◎ C  11/04/26 0.010 11/04/26 0.011│問題│上下カーソル移動が折り返しモードに対応していない
0175 ◎ C  11/04/26 0.010 11/04/26 0.011│問題│マウスクリックによるカーソル設定が折り返しモードに対応していない
0176 ◎ C  11/04/26 0.010 11/04/26 0.011│ToDo│TextView::yToTextBlock() の型を ViewBlock に変更
0177 ◎ C  11/04/26 0.010 11/04/26 0.011│問題│選択状態表示が折り返しモードに対応していない
0178 ◎ C  11/04/26 0.010 11/04/26 0.011│ToDo│折り返しモードかどうかを保存・復帰
0179 ◎ C  11/04/26 0.010 11/04/26 0.011│ToDo│折り返しモードの時、カーソル移動で自動スクロールしない
0180 ◎ C  11/04/26 0.010 11/04/26 0.011│Rfct│xToOffset() は勘違いするので、xToCharCount() に変更
0181 ◎ C  11/04/27 0.010 11/04/27 0.011│問題│折り返しモード：Ctrl + End で最終行にジャンプしても、最終行が表示されるよう自動スクロールしない
0182 ◎ C  11/04/27 0.010 11/04/27 0.011│ToDo│折り返しモード：編集時の行情報更新
0183 ◎ C  11/04/27 0.010 11/04/27 0.011│問題│検索ダイアログ：検索文字列入力エリアに履歴文字列がある場合は、全体を選択しておいた方がよい。
0184 ◎ C  11/04/27 0.010 11/04/27 0.011│問題│折り返しモードでファイルオープンすると、1行目が表示されない
0185 ◎ C  11/04/27 0.010 11/04/27 0.011│問題│折り返しモードで次の行まで文字を挿入した時、カーソルが次の行に移動しない
0186 ◎ C  11/04/27 0.010 11/04/27 0.011│問題│折り返しモード：ウィンドウをリサイズして行数が変わると、カーソル位置が不正になる
0187 ◎ C  11/04/27 0.010 11/04/28 0.012│問題│折り返しモード：カーソル位置に文字を挿入し続けていくと、そのうち画面が乱れる
0188 ● C  11/04/27 0.010               │問題│折り返しモード：Home, End が表示行単位移動しない
0189 ◎ C  11/04/28 0.011 11/04/28 0.012│問題│折り返しモード：新規文書の最初から文字を連続挿入していくと、ウィンドウ幅を超えても折り返しされない
0190 ◎ C  11/04/28 0.011 11/04/28 0.012│ToDo│折り返しモード：強制改行の場所には "<" を表示
0191 ◎ C  11/04/28 0.011 11/04/28 0.012│Rfct│TextView::buildBlocks() はレイアウト幅を引数に取らず、viewport() 幅から計算するように変更
0192 ◎ C  11/04/28 0.011 11/04/28 0.012│問題│折り返しモード：新規状態から２行になるまで文字入力し、カーソルを先頭に移動し文字入力すると、カーソルが２行目に表示される
0193 ◎ C  11/04/28 0.011 11/04/28 0.012│問題│折り返しモード：文字を削除すると [EOF] 表示位置が不正になることがある
0194 ◎ C  11/04/28 0.011 11/04/28 0.012│問題│折り返しモード：新規状態から文字列＋改行を入力し、改行を削除すると表示が不正になる
0195 ◎ C  11/04/28 0.011 11/04/28 0.012│問題│折り返しモード：新規状態から、（文書先頭に移動して改行挿入）を３回繰り返すと画面表示が不正になる
0196 ◎ C  11/04/28 0.011 11/04/28 0.012│問題│折り返しモード：垂直スクロールすると行番号の値が不正になる場合がある
0197 ◎ C  11/04/28 0.011 11/05/03 0.012│問題│折り返しモード：途中に文字がある状態から、（文書先頭に移動して改行挿入）を繰り返すと画面表示が不正になる場合がある
0198 ◎ C  11/04/28 0.011 11/04/28 0.012│問題│tags ジャンプ：ドキュメント行番号ではなく表示行番号でジャンプしている
0199 ◎ C  11/04/29 0.011 11/04/29 0.012│ToDo│再レイアウト範囲を取得するメソッドをコーディング・単体テスト
0200 ● C  11/04/29 0.011               │問題│カーソル行強調機能が無いので、カーソルがある行がすぐにわからない
0201 ◎ C  11/04/29 0.011 11/04/29 0.012│ToDo│LaidoutBlocksMgr 導入
0202 ◎ C  11/04/29 0.011 11/04/30 0.012│ToDo│LaidoutBlock クラス宣言・実装・単体テスト
0203 ◎ C  11/04/30 0.011 11/04/30 0.012│Rfct│block = block.next() を ++block に変更
0204 ◎ C  11/04/30 0.011 11/05/01 0.012│ToDo│LaidoutBlock 組み込み
0205 ◎ C  11/04/30 0.011 11/04/30 0.012│ToDo│LaidoutBlocksMgr::begin(), end() 追加
0206 ◎ C  11/04/30 0.011 11/04/30 0.012│ToDo│LaidoutBlocksMgr::findBlockByNumber() 追加
0207 ◎ C  11/04/30 0.011 11/04/30 0.012│ToDo│LaidoutBlock::operator--() 追加
0208 ◎ C  11/04/30 0.011 11/05/01 0.012│ToDo│LaidoutBlocksMgr:ドキュメント・ビューブロック番号相互変換メソッド
0209 ◎ C  11/05/01 0.011 11/05/03 0.012│ToDo│LaidoutBlocksMgr のデータ構造を最も単純な gap_vactor<size_t> に変える
0210 ● C  11/05/02 0.011               │ToDo│LAZY_LAYOUT マクロ追加
0211 ◎ C  11/05/03 0.011 11/05/03 0.012│ToDo│レイアウト処理ベンチマーク
0212 ● C  11/05/03 0.011 11/05/03 0.012│ToDo│TextView::reLayoutBlocks() の第2引数を、位置ではなくドキュメントブロック番号に変える
0213 ◎ C  11/05/03 0.011 11/05/03 0.012│ToDo│レイアウト幅はビューポート幅を直接参照するのではなく、メンバ変数を参照するようにする
0214 ● C  11/05/03 0.011               │問題│レイアウトモード：マルチカーソル状態での文字挿入を行うと画面が乱れる
0215 ◯ C  11/05/03 0.011               │ToDo│findBlock()：後ろからたどる場合は end() ではなく lastBlock() からたどるようにする
	結果：isValid() でチェックしてるのでおｋ。
0216 ◎ C  11/05/03 0.011 11/05/03 0.012│問題│新規文書で改行を挿入しても、カーソルが2行目に移動しない
0217 ◎ C  11/05/03 0.011 11/05/03 0.012│問題│折り返しモード：新規文書の先頭から文字を入力して行き2行になった状態で文字入力すると画面が乱れる。
0218 ◎ C  11/05/03 0.011 11/05/04 0.012│問題│折り返しモード：新規文書の先頭からIME文字入力を行うと、画面が乱れる
0219 ● C  11/05/03 0.011               │ToDo│折り返しモード：undo/redo 時は編集範囲のみ再レイアウトする
0220 ◎ C  11/05/04 0.011 11/05/04 0.012│問題│折り返しモード：新規文書の先頭からIMEで“あ”を入力を2回行うと画面が乱れる
0221 ◎ C  11/05/04 0.011 11/05/04 0.012│問題│新規文書の先頭からIMEで“あ”を入力後、改行を挿入すると画面が乱れる
0222 ● C  11/05/04 0.011               │問題│
