Ver. 0.6からスクリプト言語の仕様と、settings/setupのスクリプトの名称に変更がありました。 Contextの継承が、名前で呼ばれたとき(call)はされず、 メソッドオブジェクトが実行されたとき(invoke)は今までどおりされるようになりました。 以前はparentで得られた呼ばれたContextを得るcallerメソッドが新たに追加されました。 call時の親Contextは常にglobal(== Contextそのもの)です。 普通にメソッドが呼ばれた場合がcallで、それ以外はinvokeという考えでかまいません。 メソッドにメソッドオブジェクトを渡して、それが実行される場合、そのメソッドオブジェクトはほぼ全てinvokeされます。 Object.delegateとmake_function_pointerはselfとメソッドを結びつけるものですので、戻り値の実行はcallされます。 Method.closureとto_Pointerの戻り値は、それらが生成された場所でinvokeされたように振舞います。 invokeされた場合、selfとownerはinvokeしたContextのそれと同じになり、message_idはundefinedになります。 新バージョン用の書き換え例をいくつか挙げておきます。 それまでparentで呼び出し元のContextを得ていたcallでは、callerを使います。invokeではparentのままで構いません。 ローカルコンテキストに並列に定義されたメソッド同士が呼び合う場合、selfを使う必要がありますが、 ver0.6.2よりContextがcall(ver0.6.3よりget, setも)された際にselfも探索対象になったため、context callは書き換える必要はありません。 例: [ m1: `[m2] m2: `[m1$] m1 //旧バージョンと0.6.3以降ではm1が帰るが、0.6.1はm2が見つからないとしてエラー、0.6.2はcontext call時self省略によりm2は見つかるものの、m1$はcontext callでは無いのでエラー m1: `[caller.m2] m2: `[caller.m1$] m1 //caller.m2は呼べるが、m2のcallerはm1のコンテキストであるため、caller.m1$に失敗する m1: `[self.m2] m2: `[self.m1$] m1 //selfがローカルコンテキストになるので問題なくm1が帰る ] 高階関数として使うときにclosureかdelegateが必要になる場合があります。 call/invokeとclosure/delegateの組み合わせにおいて、より汎用的にするため、selfは明示しない方が賢明です。 例: [ //call and implicit-self m1: `f[f] m2: `['success'] m3: `[m2] m1(m3$) //0.6ではm2が見つからない m1(m3$.closure) //全てでsuccess m1(delegate(:m3)) //0.6.1ではm2が見つからない //call and self m3@ `[self.m2] m1(m3$.closure) //0.6ではm2が見つからない; このcontextのselfに依存する m1(delegate(:m3)) //全てでsuccess //invoke and self m1@ `f[f$.invoke] m1(m3$.closure) //0.6ではm2が見つからない; このcontextのselfに依存する m1(delegate(:m3)) //全てでsuccess //invoke and implicit-self m3@ `[m2] m1(m3$.closure) //全てでsuccess m1(delegate(:m3)) //全てでsuccess ] ver0.6.2より、文字列リテラルをシンボルとして扱えるようになりました。 例: [ "abc": 0 -> def("abc" 0) "abc"() -> call("abc") "!#{cmd}"() //cmdの戻り値の登録アイテムを実行 ] 旧言語のリテラルである無名括弧と混ぜて使ってると意図しない動作になります。 これを回避するため、シングルクォートの文字列にはこの機能を付加していませんので、それを利用してください。 例: [ "abc" (def) -> 0.5: "abc" "def"; 0.6: call("abc" def) 'abc' (def) -> "abc" "def" "abc" 'def' -> "abc" "def" ] マイナーバージョンアップ(互換性に問題が生じるという意味です)ついでに、 統一感の無かったsettings/setupのスクリプトの名称を整理しました。 オートコンプリートに関するものは(AC)、描画に関するものは(DRAW)、履歴に関するものは(HISTORY)が名前の頭に付きました。 それと、設定ダイアログがモードレス(メインウインドウをロックしない)になりました。 ロックされてると、Applyして設定ダイアログを開いたまま動作確認、ということができなかったためです。 アップデートのための特別な用意はありません。 いつもどおり上書きした後に、普通にダイアログにチェックを入れるか、Settings.iniのsetupセクションの該当キーを書き換えるのがいいと思います。 スクリプト名変更一覧: DontARByListboxFirstshot.giraffe -> (AC)DontAutoResizeByListboxFirstshot.giraffe DontAddInputTextWhenAC.giraffe -> (AC)DontAddInputText.giraffe DontChangeInputTextWhenAC.giraffe -> (AC)DontChangeInputText.giraffe DontOpenFirstshot.giraffe -> (AC)DontOpenFirstshot.giraffe DontThreadWithoutText.giraffe -> (DRAW)DontThreadWithoutText.giraffe FlatAutocomplete.giraffe -> (AC)FlatRegItems.giraffe GradatinalFrame.giraffe -> (DRAW)GradationalFrame.giraffe HistoryAvoidRepetition.giraffe -> (History)AvoidRepetition.giraffe HistoryAvoidRepetitionCompletely.giraffe -> (History)AvoidRepetitionCompletely.giraffe HistoryGroupingMatching.giraffe -> (History)GroupingMatching.giraffe HistoryPartialMatching.giraffe -> (History)PartialMatching.giraffe InvertAllColor.giraffe -> (DRAW)InvertAllColor.giraffe InvertIconBeforeExecute.giraffe -> (DRAW)InvertIconBeforeExecute.giraffe ListBoxEllipsis.giraffe -> (DRAW)ListBoxEllipsis.giraffe MigemoEnable.giraffe -> (AC)MigemoEnable.giraffe MigemoGrouping.giraffe -> (AC)MigemoGrouping.giraffe MigemoMatchAutocomplete.giraffe -> (AC)MigemoMatch.giraffe MigemoMatchAutocompleteIfPath.giraffe -> (AC)MigemoMatchIfPath.giraffe PartialMatchAutocomplete.giraffe -> (AC)PartialMatch.giraffe PartialMatchAutocompleteIfPath.giraffe -> (AC)PartialMatchIfPath.giraffe RedIconBeforeExecute.giraffe -> (DRAW)RedIconBeforeExecute.giraffe SingleThreadDraw.giraffe -> (DRAW)SingleThread.giraffe SpaceAsWildchar.giraffe -> (AC)SpaceAsWildChar.giraffe StartmenuAsRegitem -> (AC)StartmenuAsRegitem TransparentInactive.giraffe -> (DRAW)TransparentInactive.giraffe WithoutMigemoGrouping.giraffe -> (AC)GroupingWithoutMigemo.giraffe windows-frame.giraffe -> (DRAW)WindowsFrame.giraffe ~CacheRegisteredItems -> ~(AC)CacheRegisteredItems ~CacheRegisteredItemsData -> ~(AC)CacheRegisteredItemsData