--0.6.24.1222 2012-05-15-- ADD: Array.to_Block ADD: Block, Method.resolve3, 全ての名前解決をする。デバッグ用。 ADD: Block.to_Array FIX: ShowMenu でdynamic sub menuの戻り値のArrayが解放されることがある MOD: Block リテラルは expr_block でなくてもいい --0.6.23.1215 2012-04-29-- ADD: COMPILE_TIME_EVAL, コンパイル時Context.eval ADD: Container.irange, {element index} ジェネレータ ADD: settings/key/ShowCurrentModeKeys, mode-localなキーイベントのメニュー FIX: Migemo_grouping は最初か空白に続く最後のハイフンを無視すべき FIX: resolve が配列リテラル内のシンボルに機能しない MOD: event-menu はイベントが定義されてるスクリプトファイルを開けるようにすべき MOD: event/config/color/mode-local をメインメニューに統合 MOD: Method_and/or をシリアライズ可能に MOD: Object invocation は self.invoke が非メソッド時に再帰的に処理すべき MOD: ShowMenu は dynamic sub menu が空の場合にそのメニューを無効化すべき --0.6.22.1208 2012-04-06-- ADD: Object は + と - を ++ と -- を使って定義すべき ADD: Object.negator, Method.notのシノニムでobject invocationをサポートする ADD: Object.to_Range, Range.make_exclude& self.begin, self.end. ADD: Slot_value_type は :key.=> value としてリテラル化されるべき FIX: ShowMenu2 がキー設定無しで動かない FIX: Stack overflow, Stringがunwrapに失敗したとき MOD: Map 風オブジェクトは全てContainer.to_MapでMapに変換可能であるべき MOD: Container.find みたいなメソッドは *_if だけをobject invocationによる比較で呼べる MOD: Context.recur/super/resend は同じ Context を継承すべき MOD: Object invocation の 新context無し時は、似たようなcontextを作るべき MOD: Object.invoke は引数を得たときに == を呼ぶべき MOD: Editへの貼付けは改行とタブを空白に置換すべき MOD: Range.at はイテレータが非ランダムアクセシブルの場合にイテレータの正当性を無視すべき MOD: Range.at/size は Container のメソッドであるべき --0.6.21.1201 2012-03-09-- ADD: 省略可能な引数コンマと終端セミコロン FIX: Giraffe\ManualとメインメニューのManualが動作しない MOD: Container/String.shell_menu はverbの数値を返すべき MOD: EvalText (デフォルトでF1) は入力テキストが空白の時に説明を出すべき MOD: Event.Deactivate は実行中に呼ばれないようにすべき MOD: Nullをデフォルト引数に渡した場合に、デフォルト値になるようにすべき MOD: デフォルト引数のデフォルト値が記述されなかった場合にNullになるべき MOD: mode:enter はブロックを受け取り、mode:on_enter前に実行すべき MOD: mode:on_before_enter, mode:on_after_return --0.6.20.1187 2012-03-03-- ADD: Script/samples/autocompletion_with_ShowMenu2.giraffe ADD: Shift+Delete でSwitchWindowにおいて選択したウインドウを閉じる ADD: ShowMenu2 はKeyイベントを持つべき ADD: settings/setup/SwitchWindowSort, 入力に一致するものを上位に FIX: "r: 0...10.rrange r.find(0).- (r.begin)" が 0を返す FIX: \a..\c.rrange.to_String がaccess violation MOD: Color.iniへのアクセスは起動処理時のみでいい MOD: Container/String.shell_execute の第三引数verbは数値も可能にすべき MOD: Giraffe.MainWnd.Show はListBoxが表示中はListBoxを隠すべきではない MOD: Map/Slot.find は引数がMethodの場合にContainer.findを呼ぶべき MOD: ShowMenu2 はエラー時にメニューを閉じるべき --0.6.19.1144 2012-02-18-- ADD: Event.OnSize/Move_ListBox ADD: Method.bind_back, 引数を後ろからbind ADD: Object.denull, 引数がNullならselfを、違えば引数を返す ADD: Object.set_parent, inherit! and inherit, selfのparentを引数のオブジェクトに ADD: Window.SetBottom, 引数のウインドウを最後方へ (以前のWindow.Deactivate) MOD: migemo_groupingにおいて、abc~ は空文字列ではなく abc と解されるべき MOD: MainWnd は WS_CLIPCHILDREN を持つべきでない MOD: SwitchWindowMark と SwitchWindowShrink を共存できるように MOD: Window.Deactivate は Alt+Tab時のようにウインドウを切り替えるべき --0.6.18.1134 2011-12-08-- ADD: Container.flatten ADD: Giraffe.Storage, load/saveを持ち、JSON風文字列をGiraffe.iniに保存する ADD: Method.+, `[f(g())]をg.+ fから作る ADD: Object.assign_invoke_restore(val, `self[]) ADD: migemo_groupingで, ~regexp として正規表現を記述可能に ADD: settings/setup/(DRAW)RoundCorner, フレームの角を丸くする FIX: 設定ダイアログを閉じた後, メインウインドウがアクティブになるべき FIX: Block.to_Objectがcaller Contextでevalしない FIX: ShowMenu2がメインスレッドにSendMessageできない FIX: "readme.txt,0"等のアイコンが表示できない FIX: ToggleAfter*は色を追加的に変えるべき FIX: Zero.to_HANDLEsがNULLを返さない MOD: Object.== はselfと引数の@nameがObjectであるとき、スロットを比較すべき MOD: Object.literalizeはselfの@nameがObjectであるとき、JSON風文字列を返すべき MOD: Object.literalize(true)はリテラル化不能な際にerrorになるべき MOD: Object.to_StringはObject.literalizeであるべき、Object.diagnosticizeではなく MOD: [a: 1] は [a: 1] にdeparseされるべき、[def(:a 1)]ではなく MOD: {a: 1} は {a: 1} にdeparseされるべき、[a: 1].to_Objectではなく --0.6.17.1080 2011-11-27-- ADD: Copy Command Line in window-menu.giraffe ADD: Giraffe.Event.Key/Hotkey/Drop/Timer.slot を走査メソッドとして ADD: Giraffe.GetCommandLineOfProcess, window:get-command-line ADD: Object.call_from を call_with_context のシノニムとして ADD: String Symbol_id literal (:"abc" が :abc になる) ADD: Symbol_id.label, message_id付きでのinvoke ADD: Symbol_id.new, String.newのように動作 FIX: ShowMenu2が右端をはみ出る FIX: [a\ b] のdeparseが [a b] になる、[a\ b] ではなく MOD: "abc"() は abc() にパースされるべき、call("abc")ではなく MOD: DataDefault/Giraffe/MoveToEdge は、Config.AutoResize.MoveLeftの処理をして、右端や中央へも移動すべき --0.6.16.1058 2011-11-01-- ADD: Container.to_Map ADD: Object.invoke (Method.invokeから移動) ADD: Object.invoke_from (指定したcontextを継承してのinvoke) ADD: Object.invoke_in (Method.invoke_inlineからの移動) FIX: Statusのテキストをシリアライズすべき FIX: settings/key/RenameFile2はIIDLフォルダの拡張子も選択すべき --0.6.15.1053 2011-10-02-- ADD: Regex.+ (フラグはselfのに) ADD: String.regex_escape ADD: settings/setup/google-mode.encrypted.google.com FIX: settings.iniの値が空欄でエラーになる FIX: 設定ダイアログでスクリプト名に空白等を使えない MOD: AddRegItemは同一拡張子のファイルを削除すべき MOD: IIDLキャッシュの存在チェックは遅くなるだけなので要らない --0.6.14.1049-- ADD: Event.OnCaretChange ADD: Object.extend, extend! MOD: Boost 1.47.0 (Filesystem 3) MOD: Config.AutoResize.MoveLeftを2にするとウインドウを真ん中に --0.6.13.1042-- ADD: defのみで構成される配列リテラルはオブジェクトリテラルに ADD: Method.closure3, self等もクロージャする FIX: Method.closure2が[x: 0 `[x: 1].closure2]をできない FIX: IMEのcompositionフォントサイズはEditがフォーカスを得るたびに設定すべき MOD: 無名登録アイテムを許可すべき --0.6.12.1035-- ADD: expr.()はcall_obj(expr)のように解釈されるべき ADD: x()はxがmethodで無い場合、x.invokeと扱うべき FIX: Editのキャレットはフォント変更時にリサイズされるべき MOD: カレントスクリプトディレクトリはスクリプト名が"../"で始まる場合に挿入すべきでない。(そういう場合は"./../"と書ける) MOD: String.to_Int等は基数を引数として受けられるようにすべき MOD: Arrayのstd::algorithmは参照的であるべき --0.6.11.1018-- ADD: Block.file_name, file_line and file_collumn ADD: Container.next/prev_permutation/combination (as Generator Range) ADD: Contextは最後の式を持つべき (calleeがcaller.last.file_nameでどこから呼ばれた分かる等) ADD: Event.DrawText/Icon ADD: Giraffe.setTimeout, Javascriptのような ADD: OnListSetCurSelはイベントであるべき. (参照 Script\samples\default_OnListSetCurSel.giraffe) ADD: Container.to_Arrayは引数を取るべき、それがfalseの場合に要素をdeep copyする、それがデフォルト ADD: String iidl functions (path_to_iidl_if, iidl_to_path_if, iidl_to_numeric_iidl, iidl_to_real_iidl, iidl_dir, and iidl_ddir) ADD: Coroutine, Generator (boost::coroutine/generator) ADD: Number.toupper!, tolower!, String.capitalize, capitalize! ADD: MFC GDI Objects FIX: Desktopのシェルコンテキストメニューが出ない FIX: find.giraffe (の中のShell.FindFile) がUNICODEファイルを表示できない FIX: Edit入力時にKillTimer(TIMER_OnListSetCurSel)を呼ぶべき FIX: バックスラッシュを含む表示ITEMIDLISTのファイルが認識できない MOD: リストアイテム選択時にEditのキャレットを進めるべきでない MOD: Deprecated_dll.get, make_functionはDllのそれのように振舞うべき MOD: 読み込むスクリプト名が"./"か"../"で始まるとき、callee.last.file_name.path_get_dirを挿入すべき MOD: すべてのMod+EnterはEnterのようにスクリプトを実行すべき (ユーザにとってスクリプトのスイッチに成り得る) --0.6.10.978-- ADD: Container.mismatch, boost::mismatchを呼ぶ ADD: Ios.support_utf8, Istream.read_utf8, Ostream.write_utf8 ADD: Object.clone_without_OnClone, copy_without_OnCopy ADD: Giraffe.Edit.GetUndoData, 選択位置が付随した文字列を持つ配列を返す ADD: settings/key/UndoMenu ADD: settings/setup/google-mode-duckduckgo.com FIX: Window.FindWildが0xff文字以上のウインドウタイトルを持つ場合に機能しない FIX: イベントのselfはそのイベントオブジェクトであるべき MOD: ShowMenu2の第三引数が数値を置くことでデフォルト選択位置にできる MOD: {}をArray.newの省略記法ではなくgs::expr_arrayと解釈すべき --0.6.9.959-- ADD: Method.closure2, 継承ローカルContextのスロットのみを保持する ADD: ShowMenu2はアイコンを表示できるべき ((参照 Script\samples\IconMenu.giraffe)) FIX: ShowMenu2のスレッドはGCに登録されるべき FIX: オートコンプリート中にスタックオーバーフローがたまに起きる((GCが原因)) MOD: セミコロンはリテラルを作るべき (([;;m].resolve2が[;m]を返し、[;m].evalがエラーにならなくなった)) --0.6.8.943-- ADD: @scriptのスクリプトをキャッシュ((Context.@scriptがdefされるだけです。イベント毎に新たにリテラルオブジェクトを生成するより、このほうがメモリ使用量は却って減ります。)) FIX: call fileのContextの継承call methodのそれと一致してない FIX: settings/setup/(DRAW)InvertAllColorが機能しない MOD: Boost 1.45.0 MOD: method call時のスタック使用量が減らせる((オートコンプリート時にたまになるスタックオーバーフロー対策にやりましたが、意味は無かったようです。)) MOD: SwitchWindowはその後にその前の状態に戻すべき MOD: ロケールの初期化はglobal contextのそれより先であるべき --0.6.7.915-- ADD: C++ tr1 algorithm (all_of, any_of, none_of) ADD: MFC_CRect.MoveTo(X, Y and both) ADD: Method.invoke_without_clone_context ADD: *_without_clone_contextのシノニムとして*_inlineを定義 ADD: Migemo Grouping時、ダブルクォートで囲んだ部分をmigemo非使用に FIX: Method.notで作られたメソッドがselfを呼べない MOD: StringとContainerのshell_copyとshell_deleteはウインドウハンドルを引数に取るべき MOD: Zeroはas_Pointerやas_Windows_HWND等を持ち、C_nullはZeroのシノニムであるべき --0.6.6.900-- ADD: Range.as_String FIX: get-cb.filtered等がGCによりaccess violationを起こす MOD: msgのダイアログの一部が画面外に出そうな時に見えるように移動すべき MOD: `*[]のみならず、`a *[]が`a discard.@[]のように動作すべき --0.6.5.893-- ADD: Boost.Range v2とPstade.Ovenのrange adaptor関数をContainerに exists, contain?のシノニム, 単なるfind != endなので引数にメソッド指定可能。 forall, find(arg.not) == endだが、Method.notにより引数にメソッド指定可能。 jointed strided indexed replaced transformed filtered uniqued adjacent_filtered ADD: Container.index_swap, {a.index_swap(0, 1)} == {t = a[0]; a[0] = a[1]; a[1] = t;} ADD: Method.not, 戻り値にnotした値を返すメソッドを返す ADD: settings/setup/google-mode.bing.com MOD: Container.slice_safe({pos len})はarrayを返し、slice([pos len])はrangeを返すべき MOD: Container.slice!([pos len]!)はselfがRangeの場合にself.= (self.[pos len])のように機能すべき MOD: ContainerのrangeメソッドのイテレータのdereferenceはGC管理オブジェクトを新規生成して返すべき MOD: 全てのスロット操作メソッドはself contextを参照すべき MOD: google-modeの設定をもっと融通が利くように --0.6.4.885-- ADD: Istream.getline2, \rを含まない文字列を返す ADD: settings/key/RenameFileWithSemicolon, セミコロンを含むファイル名を変更できる ADD: settings/key/SwitchState, Giraffe+のウインドウの状態を切り替える ADD: settings/setup/DoutFile.giraffe, デバッグ出力をファイルdout.txtに FIX: GetFuncDescriptionがスクリプトが未定義の関数一つのみを含む場合にエラーになる FIX: オブジェクトが文字列化できないときに無限ループになる FIX: Single Thread Drawがアクセス違反になることがある MOD: Boost 1.43.0 MOD: Container.lrangeは\rを含むべきではない MOD: NullのメソッドコールはともかくNullを返すべき MOD: Object.||と&&は引数の結果をboolにキャストすべき --0.6.3.861-- ADD: Container.*, selfのコピーに+=を引数回繰り返したものを返す ADD: Object.=, "self = self arg"の意味 ADD: Object.=, "self = arg self"の意味 ADD: Object.get_safe_self_aware, get_owner_safe_self_aware ADD: Object.make_call_context, 引数はcallと同じ FIX: Container.!= がサイズが違うのにfalseを返す FIX: Giraffe.ListBox.GetMarkがたまにエラーになる FIX: String.== Symbol_idがエラーになる MOD: Object.get, setもselfを見るべき MOD: Path.case?はPath.==であるべき MOD: Regex_iteratorはRegex_matchの子であるべき MOD: String.case?はString.==であるべき MOD: Window.FindWildのダイアログはモードレスにすべき MOD: self省略call時のselfは省略されたselfであるべき --0.6.2.847-- ADD: context call self lookup((selfを省略可能にしました。詳細は別項)) ADD: Settings/setup/google-mode.com, Google ModeのURLをgoogle.comにロケールを無視してする ADD: index_safe, .{}で呼び、アクセス不能時にNilを返す((その他index周りを大幅に変更しました。詳細は別項)) ADD: window-menuにmove and resize to edge ADD: string calling((ダブルクォート文字列をシンボルとして扱えるようにしました。詳細は別項)) FIX: Cin.getが文字ではなくselfを返す FIX: Google ModeがGoogle URLをgoogle.co.jpにロケールを無視してする MOD: Object.?は条件値をboolにキャストすべき((Nil.?が可能になりました。Nilにas_Boolを持たせるのは引数型分岐で困るので出来ません。)) MOD: マーク中のリストボックスアイテムの色を変えやすくすべき((Giraffe.GetMarkedIconColor(back)とGiraffe.GetMarkedTextColor(text, back)を定義します。詳細は別項)) --0.6.1.844-- ADD: 不完全複数フォルダ内シェルコンテキストメニュー((昔一度やって、それなりに動作したものの、何かが不完全だったので、実装を一新した時に、いつでもそうできるようにしつつ、結局しなかったのを、やりました。不完全なのはたぶん拡張子ごとのメニューアイテムの列挙だけです。実行の方は大丈夫みたいなので、検索して出てきたファイルのコピー等が出来るだけでもマシだと思い、やっておきました。メニューアイテムの方はある程度自前実装しないといけないので、やる気はありません。)) ADD: $~, Regex_(match|iterator).dollarsが定義する。((定義されるのはRegex_matchです。iteratorがその後変化してもいいよう、コピーになります。$0等はこれを参照しません。)) ADD: Regex_match.prefix, suffix, format, ==, !=, at, index((忘れてたのか価値を感じなかったのか覚えてませんが、基本的な物なので定義しておきました。)) ADD: Interpreter.required_files((require済みのファイル名がこれに保持されます。ファイル名をこれから削除することで、require済みのファイルをincludeできます。)) ADD: String_set((Interpreter.required_filesの親)) ADD: Settings/setup/Switch(MDI)Window(Grouping|Mark|Shrink)((MarkとShrinkは排他)) ADD: Settings/key/SortListLastModifiedReverseSepDir((組み合わせが無尽蔵にありえるので、全てやる気にはなれないんですが、サンプルとして有用かと思い自分が使ってるものを入れました。)) FIX: メインメニューのURLエンコードがメソッドコールに失敗する。((Context非継承化とrequireとincludeの混交に伴うバグ)) MOD: include(-g)はrequire済みのファイルをロードすべきでない。((何がどこでrequireされたりincludeされたりしてるのか分からなくなったので、どうでもいいようにしました。)) MOD: MFCオブジェクトはAttachして使うためdefault constructibleであるべき。((default constructibleじゃないとAttachできないという発想すら無かった。)) --0.6.0.836 2010-02-26-- 互換性が少し壊れたのでマイナーバージョンナンバーが増えました。何か便利な機能が付いたとかそういうのじゃないです。詳しい話はhttp://www.ric.hi-ho.ne.jp/giraffe/giraffe/doc/trap_of_05_to_06_jp.txtです。 ADD: Context.=, selfのparentとslotとContextが保持するものを引数と同じにする。 ADD: Context.caller, メソッドコールが発生したContextを返す。 ADD: Dll.get, 関数が未定義の場合に定義する。 ADD: Giraffe.TaskTrayWnd.EvalとGiraffe.MainWnd.Eval, 別スレッドでEvalする。 ADD: Object.instance, @instanceのシノニム ADD: sub-config-list.csv, Giraffe.iniのConfig以外のセクションの説明 ADD: Window.SendCommand(hwnd id), SendMessage(hwnd WM_COMMAND id 0)を呼ぶ。PostCommandも。 FIX: LookInMyPCがSwitchWindowに列挙されない。 FIX: 環境変数PATHの更新時にSYSTEMとUSERが連結されない。 MOD: (AC)MigemoGroupingはVirtual.AutoCompleteSetListWithMigemoLeastLengthを守るべき。 MOD: Boost 1.42.0 MOD: Contextの継承はメソッドの無名実行時のみに。 MOD: デフォルト設定を再編。 MOD: Object.protoと@instanceは変更可能なように参照であるべき。 MOD: 設定ダイアログはモードレスであるべき。 MOD: Settings/setupのスクリプトの名前を分かりやすく。 Version 0.5以前の更新内容についてはversion_0.5.txtに移動しました。