読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

factorでワードの実行を監視 / コンテキストメニューメニューに追加

ワードそのものを積む、ワードの実行を監視

ワード実行前後のスタック状態を監視するためにはtools.anotationsのwatchを使う。解除にはreset。

使う方法は2つあって

  • ListenerやBrowserなどからワードを右クリック→watch/reset
  • \ hoge-word watch \ hoge-word reset

\ hoge-wordでワードそのものをスタックに載せることができる。

実行例

f:id:phaendal:20150223094815p:plain

デバッグ時にかなり活躍しそう。

コンテキストメニュー

watchなどのコンテキストメニューはどうやって実現しているのか気になったので調べてみる。ui.operationsのdefine-operationで定義されているみたいだ。

[ 述語 ] \ ワード フラグ define-operation

述語のquotationは( obj -- bool )、ワードは ( obj -- )で、述語が真ならワードの先頭を大文字にしたものが表示される。

必ず真になる述語、何もしないワードを作って、ついでに日本語が表示されるか試してみる。

: テストオペレーション ( obj -- ) drop ;

 [ drop t ] \ テストオペレーション H{ } define-operation

実行結果

f:id:phaendal:20150223095531p:plain

日本語もちゃんと表示できる。

広告を非表示にする