Giraffe+ 0.6.20.1187

Downloadページへ ADD: Script/samples/autocompletion_with_ShowMenu2.giraffe ADD: Shift+Delete でSwitchWindowにおいて選択したウインドウを閉じる ADD: ShowMenu2 はKeyイベントを持つべき ADD: settings/setup/SwitchWindowSort, 入力に一致するものを…

Giraffe+ 0.6.19.1144

Downloadページへ 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: Wind…

Migemo Groupingのまとめ

検索エンジンのようなAND/ORによる絞り込みです。空白がAND、|がOR、-でNOT、""でLITERAL、~でREGEXになり、そして括弧によるGROUPINGができます。 設定ダイアログでSettings/setup/(AC)MigemoGroupingを有効にすることで使えます。(デフォルトで有効) 文字…

Giraffe+ 0.6.18.1134

Downloadページへ 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 とし…

Giraffe+ 0.6.17.1080

Downloadページへ 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 のシ…

高階関数の書き方 (invoke_in, invoke_from)

gs

C++側で書く場合は、どちらにしろContextオブジェクトをmethod invocationに渡すので、そのContextをcallerにすればいいだけだが、gsで高階関数を書く場合、これといって、このあたりのidiom的なものが無い。 というか、C++で書いてばかりで、gsで書くことが…

Giraffe+ 0.6.16.1058

Downloadページへ ADD: Container.to_Map ADD: Object.invoke (Method.invokeから移動) ADD: Object.invoke_from (指定したcontextを継承してのinvoke) ADD: Object.invoke_in (Method.invoke_inlineからの移動) FIX: Statusのテキストをシリアライズすべき …

Giraffe+ 0.6.15.1053

Downloadページへ ADD: Regex.+ (フラグはselfのに) ADD: String.regex_escape ADD: settings/setup/google-mode.encrypted.google.com FIX: settings.iniの値が空欄でエラーになる FIX: 設定ダイアログでスクリプト名に空白等を使えない MOD: AddRegItemは…

Giraffe+ 0.6.14.1049

Downloadページへ ADD: Event.OnCaretChange ADD: Object.extend, extend! MOD: Boost 1.47.0 (Filesystem 3) MOD: Config.AutoResize.MoveLeftを2にするとウインドウを真ん中に

resolveとclosureのまとめ

gs

Giraffe+のScript\samples\resolve_and_closure.giraffeにテストとしてまとまってますが、resolve, resolve2, closure, closure2, closure3と十分ややこしくなってきてるので解説しておきます。LispやJavaScriptのようなクロージャはgiraffeにはありません。…

Giraffe+ 0.6.13.1042

Downloadページへ ADD: defのみで構成される配列リテラルはオブジェクトリテラルに ADD: Method.closure3, self等もクロージャする FIX: Method.closure2が[x: 0 `[x: 1].closure2]をできない FIX: IMEのcompositionフォントサイズはEditがフォーカスを得る…

ShortcutViewerとSesObjectを更新

ShortcutViewerを久しぶりに使ったら気になるところが多くあったのであれこれ改善しました。変更点等はtoolsページのreadmeを参照してください。 SesObjectもついでにUNICODEビルドにしました。 sesファイルがUNICODEを保持できないのは、sesファイルの中身…

Giraffe+ 0.6.12.1035

Downloadページへ ADD: expr.()はcall_obj(expr)のように解釈されるべき ADD: x()はxがmethodで無い場合、x.invokeと扱うべき FIX: Editのキャレットはフォント変更時にリサイズされるべき MOD: カレントスクリプトディレクトリはスクリプト名が"../"で始ま…

Giraffe+ 0.6.11.1018

Downloadページへ 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.D…

mayuにC/C++のpreprocessorを搭載してみた

mayu.exeとmayu_pp.exe, mayu_pp.cfgのdownloadと概要はhttp://www.ric.hi-ho.ne.jp/giraffe/mayus/。 目的と例 Windowsの定数の定義 #include <winuser.h> window ConsoleWindow /ConsoleWindowClass/ : Global key C-Up = &PostMessage(ToItself, WM_VSCROLL, SB_LINE</winuser.h>…

mayuの&PlugIn関数を改善

http://www.ric.hi-ho.ne.jp/giraffe/mayusにの下の方にmayu.exeがあります。sourceもあります。 スレッド生成において指定時間待てるようにしました。

Giraffe+ 0.6.10.978

Downloadページへ 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, 選択位置が付随した文字列を持…

Google日本語入力の"その他の文字種"でmayuのIME状態等(IL, MAX等)が無効になる件

対症療法済mayu.dll 原因はGoogleJapaneseInputCandidateWindowにWM_SETFOCUSが送られるため。そうなる原因は知らない。 とにかくhook.cppで、 case WM_SETFOCUS: { TCHAR cls[0xff]; if(GetClassName(cwps.hwnd, cls, sizeof(cls)) && boost::equals("Googl…

Giraffe+ 0.6.9.959

Downloadページへ ADD: Method.closure2, 継承ローカルContextのスロットのみを保持する ADD: ShowMenu2はアイコンを表示できるべき *1 FIX: ShowMenu2のスレッドはGCに登録されるべき FIX: オートコンプリート中にスタックオーバーフローがたまに起きる*2 M…

Giraffe+ 0.6.8.943

Downloadページへ ADD: @scriptのスクリプトをキャッシュ*1 FIX: call fileのContextの継承call methodのそれと一致してない FIX: settings/setup/(DRAW)InvertAllColorが機能しない MOD: Boost 1.45.0 MOD: method call時のスタック使用量が減らせる*2 MOD:…

Giraffe+ 0.6.7.915

Downloadページへ 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時、ダブルクォー…

結局Context lookupはv0.5からv0.6でどう変わったのか

gs

0.6になって以降、少しずつ変更して来ましたが、さすがにもう変化は無さそうなのでまとめておきます。 invokeは同じなので解説しません。以下の説明はcallの場合(関数を名前で呼んだ場合)のみに有効です。 0.6でContextの継承が無くなりましたが、それではロ…

JSONもどき

gs

古い情報です。Giraffe+ 0.6.13.1042よりオブジェクトリテラルがサポートされてます。 配列とブロックがあって、ブロックが値の位置に現れた場合に、オブジェクトになるっていうJavaScriptの文法が重要です。 gsは配列とブロックの記号が入れ替わってますが…

GCとiterator

Giraffe+ 0.6.5.899で、 get-cb.filtered(`c[c.isalpha]).flushがaccess violation。 get-cbはクリップボードの文字列を返す。filteredはfilter_iteratorのRangeを返す。flushの時点で、get-cbが返したオブジェクトがGCに開放されてる可能性がある。実際には…

Giraffe+ 0.6.6.900

Downloadページへ ADD: Range.as_String FIX: get-cb.filtered等がGCによりaccess violationを起こす MOD: msgのダイアログの一部が画面外に出そうな時に見えるように移動すべき MOD: `*[ ]のみならず、`a *[ ]が`a discard.@[ ]のように動作すべき

新しいgoogle-modeの設定のまとめ

mod keyごとのURLを設定できるようになりました。URLにはクエリーがUTF8でエンコードされ追加されます。URLにメソッドを置くことで、URLの実行ではなく、メソッドのinvokeになります。 デフォルト設定: 無し: http://www.google.co.jp/search?q= SHIFT: http…

Giraffe+ 0.6.5.893

Container.[pos len]がRangeを返すようになりました。selfと同じ型が返る想定のスクリプトは書き換えが必要です。 google-modeの設定方法が変わりました。Giraffe.GOOGLE_URLを設定してる場合は、書き換えが必要です。 Downloadページへ ADD: Boost.Range v2…

新しいsliceのまとめ

gs

従来の、selfと同じ型を返すslice([pos len])がslice_safe({pos len})になり、sliceはRangeを返すようになりました。 大きな配列や文字列を扱う場合にかなりの高速化とメモリ使用量抑制が期待できますが、注意点もあります。 Rangeに関する注意 sliceに限ら…

Giraffe+ 0.6.4.885

Downloadページへ ADD: Istream.getline2, \rを含まない文字列を返す ADD: settings/key/RenameFileWithSemicolon, セミコロンを含むファイル名を変更できる ADD: settings/key/SwitchState, Giraffe+のウインドウの状態を切り替える ADD: settings/setup/Do…

Giraffe+ 0.6.3.861

Downloadページへ 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_…