Giraffe+ 0.5.28.451
前リリースからの変化
- オートコンプリートの結果の配列を返すGiraffe.Autocompleteを定義
- Giraffe.ShortcutDirのディレクトリの名前が'*'で始まる場合に、登録アイテムとしては有効ながらオートコンプリートの対象とはならないようにした
- 起動時に登録アイテムをキャッシュするsettings/setup/~CacheRegisteredItems.giraffeを追加
- Giraffe+がフォーカスを失うときにグローバルガベージコレクトを実行するsettings/setup/GCollectInactive.giraffeを追加
- UNICODEファイル名対応と多少の効率化のため、複数あったstd::wifstreamをboost::filesystem::wifstreamに置き換えた
- settings.xmlとsettings.xslを少し改善
オートコンプリートの結果の配列を返すGiraffe.Autocompleteを定義
第一引数は文字列で、パスや登録アイテムの前部を置きます。第二引数は数値で、0の場合は前方一致するものだけ、1の場合は全て、2の場合は登録アイテム内ディレクトリのアイテムも、となります。
第二引数の前方一致はWindowsのファイル列挙への指示ですので、Giraffe.ShortcutDirのテキストファイル内やGiraffe.RegisteredItemsのアイテムは無関係です。
Giraffe.ShortcutDirのディレクトリの名前が'*'で始まる場合に、登録アイテムとしては有効ながらオートコンプリートの対象とはならないようにした
オートコンプリートに使われる名前だけをキャッシュして、登録アイテムのデータは使うときに読み取る、というのを可能にしてみました。
起動時に登録アイテムをキャッシュするsettings/setup/~CacheRegisteredItems.giraffeを追加
登録アイテムの追加、削除、名前変更後等に設定の再読み込み(デフォルトでF2キー)が必要になりますが、オートコンプリートが高速化します。
ファイル名の先頭に~があるのは、スタートメニューを登録アイテム化する等のsetupスクリプトの後に実行されるようにです。
Giraffe+がフォーカスを失うときにグローバルガベージコレクトを実行するsettings/setup/GCollectInactive.giraffeを追加
メモリ使用量が減る(増えにくくなる)かもしれません。
正直、GCの動作がいまいち解かってません。ファイナライザがちゃんと呼ばれているか等、それなりに実験したことがあるんですが、全く問題なく動作してました。とりあえず、現状、
と考えています。GCがどの程度メモリを使っていて、開放予定ながら開放されてないメモリがどれくらいあるかは、
"\ Heap Size: #{Gc.GC_get_heap_size} Free Size: #{Gc.GC_get_free_bytes} Free Size After GCollect: #{Gc.GC_gcollect Gc.GC_get_free_bytes}\ ".flush
を変化がなくなるまで連続で実行してみると解かります。