Loading a vocab updates the browser if appropriate

db4
Slava Pestov 2008-01-09 14:41:58 -04:00
parent 0cab0bab24
commit 487abce510
4 changed files with 20 additions and 11 deletions

4
core/compiler/units/units.factor Normal file → Executable file
View File

@ -68,8 +68,8 @@ GENERIC: definitions-changed ( assoc obj -- )
dup changed-vocabs update ;
: finish-compilation-unit ( -- )
changed-definitions notify-definition-observers
changed-words get keys recompile-hook get call ;
changed-words get keys recompile-hook get call
changed-definitions notify-definition-observers ;
: with-compilation-unit ( quot -- )
[

View File

@ -31,7 +31,7 @@ debugger ;
[ t ] [
"kernel" vocab-files
"kernel" vocab vocab-files
"kernel" f \ vocab-link construct-boa vocab-files
"kernel" f <vocab-link> vocab-files
3array all-equal?
] unit-test
@ -46,7 +46,7 @@ IN: temporary
[ { 3 3 3 } ] [
"vocabs.loader.test.2" run
"vocabs.loader.test.2" vocab run
"vocabs.loader.test.2" f \ vocab-link construct-boa run
"vocabs.loader.test.2" f <vocab-link> run
3array
] unit-test
@ -117,7 +117,7 @@ IN: temporary
[ 3 ] [ "count-me" get-global ] unit-test
[ { "resource:core/kernel/kernel.factor" 1 } ]
[ "kernel" f \ vocab-link construct-boa where ] unit-test
[ "kernel" f <vocab-link> where ] unit-test
[ { "resource:core/kernel/kernel.factor" 1 } ]
[ "kernel" vocab where ] unit-test

View File

@ -85,11 +85,19 @@ SYMBOL: load-vocab-hook
TUPLE: vocab-link name root ;
C: <vocab-link> vocab-link
M: vocab-link equal?
over vocab-link?
[ [ vocab-link-name ] 2apply = ] [ 2drop f ] if ;
M: vocab-link hashcode*
vocab-link-name hashcode* ;
M: vocab-link vocab-name vocab-link-name ;
: >vocab-link ( name root -- vocab )
over vocab dup
[ 2nip ] [ drop \ vocab-link construct-boa ] if ;
over vocab dup [ 2nip ] [ drop <vocab-link> ] if ;
UNION: vocab-spec vocab vocab-link ;

9
extra/ui/tools/browser/browser.factor Normal file → Executable file
View File

@ -3,7 +3,7 @@
USING: debugger ui.tools.workspace help help.topics kernel
models ui.commands ui.gadgets ui.gadgets.panes
ui.gadgets.scrollers ui.gadgets.tracks ui.gestures
ui.gadgets.buttons compiler.units assocs words ;
ui.gadgets.buttons compiler.units assocs words vocabs ;
IN: ui.tools.browser
TUPLE: browser-gadget pane history ;
@ -42,9 +42,10 @@ M: browser-gadget ungraft*
remove-definition-observer ;
: showing-definition? ( defspec assoc -- ? )
2dup key? >r
>r dup word-link? [ link-name ] when r> key?
r> or ;
[ key? ] 2keep
[ >r dup word-link? [ link-name ] when r> key? ] 2keep
>r dup vocab-link? [ vocab ] when r> key?
or or ;
M: browser-gadget definitions-changed ( assoc browser -- )
browser-gadget-history