diff --git a/basis/tools/walker/walker-docs.factor b/basis/tools/walker/walker-docs.factor index 318f7e065c..454fb29372 100644 --- a/basis/tools/walker/walker-docs.factor +++ b/basis/tools/walker/walker-docs.factor @@ -12,6 +12,9 @@ HELP: breakpoint-if HELP: B { $description "An alias for " { $link break } ", defined in the " { $vocab-link "syntax" } " vocabulary so that it is always available." } ; +HELP: B: +{ $description "A breakpoint for parsing words. When this word is executed, it copies the definition of the following parsing word, prepends a " { $link break } " to it so that it is the first word to be executed when the definition is called, and calls this new definition.\n\nWhen the walker tool opens, execution will still be inside " { $link POSTPONE: B: } ". To step out of B: and into the parsing word, do just that: jump out with O, then into with I." } ; + ARTICLE: "breakpoints" "Setting breakpoints" "In addition to invoking the walker explicitly through the UI, it is possible to set breakpoints on words using words in the " { $vocab-link "tools.walker" } " vocabulary." $nl @@ -24,6 +27,7 @@ $nl { $subsections break POSTPONE: B + POSTPONE: B: } "Note that because the walker calls various core library and UI words while rendering its own user interface, setting a breakpoint on a word such as " { $link append } " or " { $link + } " will hang the UI." ; diff --git a/basis/tools/walker/walker.factor b/basis/tools/walker/walker.factor index 3cc53cda9d..3c287cbf24 100644 --- a/basis/tools/walker/walker.factor +++ b/basis/tools/walker/walker.factor @@ -168,3 +168,7 @@ SYMBOL: +stopped+ IN: syntax SYNTAX: B \ break suffix! ; + +SYNTAX: B: scan-word definition + [ break "now press O I to land inside the parsing word" drop ] + prepose call( accum -- accum ) ;