設定ファイル改良

- 基本書式
- 人手で書くの面倒。YAMLにしよう
- XMLだとしても、配列のインデックスはナシ
- 検索対象
- 下のように、プラグイン名とそのオプションの形にまとめる。拡張を容易に
source:
dir:
path: c:\app
exts:
- cpp
- hpp
wiki:
url: http://〜
sakura_editor:
ini_path: c:\app〜
- ファイルの開き方
- [ エディタ, 対象拡張子 ]の配列で設定
- 上から順に見ていき、当てはまるところで実行
- 関連づけで開くのは、予約名(タグ)で実現
- 一番最後に、全拡張子が対象の設定を置いてフェイルセーフ
- 拡張子の設定方法の統一
- エディタ・検索パスなどで統一感がないとアレげ
- 含める・含めないを両方書けるように
- どちらにもワイルドカードが使える
- サブディレクトリを見に行かないフラグ
- 検索から除外する拡張子の指定
- 大文字があったらcase-sensitiveなど、好みが分かれる機能のフラグ
使い勝手改良

- 「再検索」ショートカットキー
- 「1つ上のフォルダを開く」
- 「(関連づけを無視して)エディタで開く」
- 開くエディタの切り替え
- 事前に登録したエディタを Ctrl+Q,W,E などで選択
- 選択したものは設定として保存
- エクスプローラで開くのが便利そう
- VisualStudioを複数開いてるときは、開くウィンドウを指定したい。けど難しそう
- コンテキストメニューの一番上を最初から選択
- リストからファイルをドラッグ&ドロップできるように
- 閉じたときの挙動
- 決定時
- コピー時
- ESC時
- それぞれ、入力したものを消すか消さないか設定したい
- デフォルトはbluewindを参考にしてみよう
- 開いたときはmigemoをOFFに?
- 重複ファイル・URLのuniq
検索性能改良

- 視覚的な見やすさの改善
- 結果が2〜3件まで絞れても、それを目で見て反応するのに1秒くらいかかる
- 行間をもっと空ける
- 色分け表示?(具体案はまだない)
- イニシャルマッチング
- hfbと打つと、HogeFooBarのようなものがマッチする
- 拡張子のないファイルが探しにくい
- iostreamとかstringとか
- "iostream."でヒットするようにしてみる?
- ソート順でカバーできる?
- 結果のソート方法
- 新しい順
- アルファベット順(同じディレクトリのものはまとまってるほうが見やすい)
- .hは優先
- (ファイル名に)完全一致→先頭一致→部分一致
- migemo時は日本語でマッチしたものを優先
- 検索の別スレッド化
- 特にmigemoで、検索速度が入力のレスポンスに影響しないようにするだけ
- loading... となったら本末転倒
機能追加

- カスタマイズ
- ウィンドウの位置を保存
- ディスプレイの中心に移動 コマンド
- デスクトップの中心
- 各ディスプレイの中心
- 初回起動時はプライマリディスプレイの中心がいいかな
- スペースを2回押したらカーソル下扱いにする(スペースで項目を選べるようにする)
- 別アプリとの連携
- エディタでカーソル位置の単語を検索とか
- エディタのマクロ+FindFastに単語を入力した状態で開く機能?
- まずタグジャンプして、失敗したらFindFastでやってみる、っていう習慣になるのかな
- 暇なら、下記を対象に含めてもいいかも
- IEのお気に入り・履歴
- スタートメニュー
- Quick Launch
- サクラエディタの履歴
- サクラエディタが開いているファイル(取れるのか?)
- Visual Studioの履歴
- コントロールパネルの項目
- PukiWikiの「一覧」ページからURLを列挙
- Wikiのタイトル名は<title>が「ページの一覧 - PukiWiki」なので、ここから拾う
- エンコーディングはヘッダから取得。"EUC-JP"など
- staticな(名前, ファイル/URL)のリスト
- 最前面アプリのカレントディレクトリ(sakuraの開くダイアログの代替を目指す)
- PukiWikiのURLはデコードしてページ名を表示
- 表示フィルタ
- 画面に表示されるもののみに適用される。多少重い実装もOK
- 存在しないファイルは除外。
- InterWikiNameの認識。Wikipedia: ほげ のような表示
- InterWikiNameのページを指定してインポートできるといいかも
- URLフィルタ
- IEの履歴を取ると、けっこういらないURLがある
- 正規表現で除外できるようにしよう
- PukiWikiの編集ページ
- PukiWikiのプレビューページ
- Googleの検索結果 (これは悩むところ)
- WindowsのIndex Serviceからデータをもらう。Vistaでは賢くなってると聞く このへん?
- NDSにクエリー投げる
- 検索結果からファイルのD&D
バグ

例外のトラップ漏れ
System.IO.IOException はハンドルされませんでした。
Message="指定されたネットワーク名は利用できません。\r\n"
Source="mscorlib"
StackTrace:
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)
場所 System.IO.DirectoryInfo.GetFiles(String searchPattern, SearchOption searchOption)
場所 System.IO.DirectoryInfo.GetFiles(String searchPattern)
場所 Something.DirectoryList.dive(DirectoryInfo di) 場所 D:\Projects\C#\something.cs\DirectoryList.cs:行 33
場所 Something.DirectoryList.preCache() 場所 D:\Projects\C#\something.cs\DirectoryList.cs:行 21
場所 Something.ItemFind.preCacheIN() 場所 D:\Projects\C#\something.cs\ItemFind.cs:行 41
場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
場所 System.Threading.ThreadHelper.ThreadStart()
InnerException:
検索対象にアクセス権のないファイル(ディレクトリ?)があった場合
- 多重起動できてしまう。そうするとホットキーが効かない。
- UserIncludePathが、末尾の\の有無で挙動が変わる
- 拡張子のないファイルがヒットしている?
- "more"を選択した状態で空のメニューが出る
- ファイルなのにURL扱いになって出てくる
- マルチディスプレイだと画面の中心=ディスプレイの境目になってしまう
- xkeymacsが効かない?
- インデックス作成中にキーバインドの変更をすると、作成終了まで反映されない
- x64だとmigemoのDLLが読めずに落ちる
- 初回起動時に、ショートカットキーがすべて「0」になっている?
- プロファイルに入る方の .config が存在しないときにまずい?
- NickName使用時の挙動の確認
- IEの履歴にローカルのPDFがあると、パスが\区切りのままになり、右クリックメニューも「 をコピー」となってしまう。そして実行すると例外。
- Windows 7で、単語削除をバインドしていないと、Ctrl+BSで変な文字が入力される
参考

- emacs22のanything
- buffers, recent filesなど、高速に参照できるものをソースにしているのが賢い
基本

- 事前に指定したディレクトリ&拡張子から、ファイルリストを生成
- 起動(常駐?)→文字入力でインクリメンタルサーチ→選択して開く
- それだけ。でも幸せそう。
システムパス名一覧

細字は.NET FrameworkのEnvironment.GetFolderPath()で取得できるものです。
太字は独自拡張です。
変数名 | 展開例 (Windows XP) |
%ApplicationData% | C:\Documents and Settings\Administrator\Application Data |
%CommonApplicationData% | C:\Documents and Settings\All Users\Application Data |
%CommonProgramFiles% | C:\Program Files\Common Files |
%Cookies% | C:\Documents and Settings\Administrator\Cookies |
%Desktop% | C:\Documents and Settings\Administrator\デスクトップ |
%DesktopDirectory% | C:\Documents and Settings\Administrator\デスクトップ |
%Favorites% | C:\Documents and Settings\Administrator\Favorites |
%History% | C:\Documents and Settings\Administrator\Local Settings\History |
%InternetCache% | C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files |
%LocalApplicationData% | C:\Documents and Settings\Administrator\Local Settings\Application Data |
%MyComputer% | (空文字列) |
%MyDocuments% | C:\My Documents |
%MyMusic% | C:\My Documents\My Music |
%MyPictures% | C:\My Documents\My Pictures |
%Personal% | C:\My Documents |
%ProgramFiles% | C:\Program Files |
%Programs% | C:\Documents and Settings\Administrator\スタート メニュー\プログラム |
%Recent% | C:\Documents and Settings\Administrator\Recent |
%SendTo% | C:\Documents and Settings\Administrator\SendTo |
%StartMenu% | C:\Documents and Settings\Administrator\スタート メニュー |
%Startup% | C:\Documents and Settings\Administrator\スタート メニュー\プログラム\スタートアップ |
%System% | C:\WINDOWS\system32 |
%Templates% | C:\Documents and Settings\Administrator\Templates |
%QuickLaunch% | C:\Documents and Settings\Administrator\Application Data\Microsoft\Internet Explorer\Quick Launch |
%CommonPrograms% | C:\Documents and Settings\All Users\スタート メニュー\プログラム |
%CommonStartMenu% | C:\Documents and Settings\All Users\スタート メニュー |
%CommonStartup% | C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ |
対応済み

- PukiWikiの一覧ページから取得したURLの実体参照をデコードしていない
- パス名のドライブ名が大文字小文字不統一。統一した上で、uniq時もcase無視で比較しよう
- サクラエディタの存在がMUSTになっている
- All Usersのスタートメニューを%%記法で展開できない?
- ファイル・Web関連の例外はトラップしよう
- エディタにコマンドライン引数を渡せない
- Visual Studioの/Editで動作確認だ
- showContextMenuで0除算が起きることがある
- 関連付けがない拡張子で落ちる
- アクティブじゃないときは呼び出しキーでアクティブに
- 呼び出しキーを押したときは入力欄にフォーカスを移動
- 呼び出しキーで閉じれるように
- \より/のほうが読みやすそう
- Ctrl+BSで入力文字を全部削除
- bluewindは単語単位で削除だった。そっちのほうがいいかな
- 一番上と一番下の項目でカーソルがラップアラウンド
- migemo切り替え時に検索結果を更新
- IMEを無効化
- 右カーソルメニュー、選択したアイテムのところに出たほうが心理的にわかりやすい
- ファイル名をクリップボードにコピー
- #include "" でコピー
- migemo対応
- やっぱ遅いね
- ショートカットキーでトグル
- AND検索をmigemoにも対応
- 大文字を1字以上入力したらcase-sensitive
- パスフィルタ
- トレイアイコンのチップヘルプがFindFastのまま