                        ViVi version 5.0.014
                             08-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 11/05/05 0.012│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 11/05/05 0.013│問題│折り返しモード：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 11/05/05 0.013│問題│レイアウトモード：マルチカーソル状態（複数改行）で改行挿入を行うと画面が乱れる
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/05 0.012 11/05/05 0.013│ToDo│Ctrl + ↑、↓ はマルチカーソル移動とする
0223 ◎ C  11/05/05 0.012 11/05/05 0.013│ToDo│全選択実行時にはマルチカーソルをリセットした方がよい
0224 ◎ C  11/05/05 0.012 11/05/05 0.013│問題│ファイルオープン直後から↓で下移動すると、1カラム目以外に移動する場合がある
0225 ◎ C  11/05/05 0.012 11/05/05 0.013│問題│折り返しモード：新規状態から折り返すまで a を多数入力、改行を入力し、IMEをONにして文字を入力しようとすると、表示２行目の aaa…a に下線が表示される。
0226 ◎ C  11/05/05 0.012 11/05/05 0.013│ToDo│ブロッククラスに nextBlockPosition() を追加
0227 ◎ C  11/05/05 0.012 11/05/05 0.013│問題│非折り返しモード：新規状態から改行を挿入し、↑で上移動すると、カーソル表示位置不正
0228 ◎ C  11/05/05 0.012 11/05/05 0.013│問題│非折り返しモード：３行文字入力し、先頭３行にマルチカーソルを設定し、Delete を押すと、カーソル位置が不正になる
0229 ◎ C  11/05/05 0.012 11/05/05 0.013│問題│折り返しモード：４行文字入力し、先頭４行にマルチカーソルを設定し、Delete を押すと、表示不良になる
0230 ◎ C  11/05/05 0.013 11/05/05 0.014│ToDo│LaidoutBlocksMgr：レイアウト済み行数をメンバ変数に持ち、レイアウト途中の状態を可能にする
0231 ◎ C  11/05/05 0.013 11/05/05 0.014│ToDo│レイアウト行数を指定可能で、次のレイアウト指令をイベントキューに積む LaidoutBlocksMgr::buildBlocks() 追加
0232 ◎ C  11/05/06 0.013 11/05/08 0.014│ToDo│ステータスバーにコマンドラインエリアを追加
0233 ◎ C  11/05/06 0.013 11/05/08 0.014│ToDo│vi エンジンクラス追加
0234 ● C  11/05/06 0.013               │問題│ウィンドウリサイズを行っても表示開始行が変化しないようにすべき
0235 ● C  11/05/07 0.013               │問題│置換ダイアログで置換を行うと、結果が不正になる。
0236 ◎ C  11/05/08 0.013 11/05/08 0.014│問題│行内で文字選択した状態で検索・置換ダイアログを開いた場合は、被選択文字列を検索候補にした方がよい
0237 ◎ C  11/05/08 0.013 11/05/08 0.014│問題│検索ダイアログ：検索方向オプションを廃止し、置換ダイアログ同様に検索方向ごとに検索ボタンを配置した方がよい
0238 ● D  11/05/08 0.013               │問題│検索ダイアログ：大文字小文字検索オプションはラジオボタンの方がよい
0239 ◎ C  11/05/08 0.013 11/05/08 0.014│問題│連続する単語をマルチカーソル選択できない
0240 ◎ C  11/05/08 0.013 11/05/08 0.014│問題│単語先頭文字をダブルクリックすると、その前の単語が選択されてしまう
0241 ◎ C  11/05/08 0.013 11/05/08 0.014│問題│マルチカーソル：複数単語を選択し Tab で置換すると、選択範囲が不正になる
0242 ◎ C  11/05/08 0.013 11/05/08 0.014│ToDo│Esc でコマンドモードに、i で挿入モードに遷移可能にする
0243 ● C  11/05/08 0.013               │ToDo│コマンドモード時カーソルは文字幅＆高さ半分に
0244 ● C  11/05/08 0.013               │問題│折り返しモード：複数選択してTabで置換すると表示が乱れる
0245 ● C  11/05/08 0.013               │ToDo│
