Split off some code into tools.errors.model and update UI listener's error summary when errors change

db4
Slava Pestov 2009-04-23 22:36:34 -05:00
parent 5649cc7a0a
commit cc5b1c1e2d
6 changed files with 40 additions and 41 deletions

View File

@ -60,7 +60,7 @@ SYMBOL: max-stack-items
10 max-stack-items set-global 10 max-stack-items set-global
SYMBOL: error-summary-hook SYMBOL: error-summary?
<PRIVATE <PRIVATE
@ -99,13 +99,8 @@ SYMBOL: error-summary-hook
in get auto-use? get [ " - auto" append ] when "( " " )" surround in get auto-use? get [ " - auto" append ] when "( " " )" surround
H{ { background T{ rgba f 1 0.7 0.7 1 } } } format bl flush ; H{ { background T{ rgba f 1 0.7 0.7 1 } } } format bl flush ;
[ error-summary ] error-summary-hook set-global
: call-error-summary-hook ( -- )
error-summary-hook get call( -- ) ;
:: (listener) ( datastack -- ) :: (listener) ( datastack -- )
call-error-summary-hook error-summary? get [ error-summary ] when
visible-vars. visible-vars.
datastack datastack. datastack datastack.
prompt. prompt.

View File

@ -22,7 +22,7 @@ M: source-file-error summary
M: source-file-error error. M: source-file-error error.
[ summary print nl ] [ summary print nl ]
[ "Asset: " write asset>> short. nl ] [ asset>> [ "Asset: " write short. nl ] when* ]
[ error>> error. ] [ error>> error. ]
tri ; tri ;

View File

@ -0,0 +1 @@
Slava Pestov

View File

@ -0,0 +1,18 @@
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: models source-files.errors namespaces models.delay init
kernel calendar ;
IN: tools.errors.model
SYMBOLS: (error-list-model) error-list-model ;
(error-list-model) [ f <model> ] initialize
error-list-model [ (error-list-model) get-global 100 milliseconds <delay> ] initialize
SINGLETON: updater
M: updater errors-changed drop f (error-list-model) get-global set-model ;
[ updater add-error-observer ] "ui.tools.error-list" add-init-hook

View File

@ -4,14 +4,14 @@ USING: accessors arrays sequences sorting assocs colors.constants fry
combinators combinators.smart combinators.short-circuit editors make combinators combinators.smart combinators.short-circuit editors make
memoize compiler.units fonts kernel io.pathnames prettyprint memoize compiler.units fonts kernel io.pathnames prettyprint
source-files.errors math.parser init math.order models models.arrow source-files.errors math.parser init math.order models models.arrow
models.arrow.smart models.search models.mapping models.delay debugger models.arrow.smart models.search models.mapping debugger
namespaces summary locals ui ui.commands ui.gadgets ui.gadgets.panes namespaces summary locals ui ui.commands ui.gadgets ui.gadgets.panes
ui.gadgets.tables ui.gadgets.labeled ui.gadgets.tracks ui.gestures ui.gadgets.tables ui.gadgets.labeled ui.gadgets.tracks ui.gestures
ui.operations ui.tools.browser ui.tools.common ui.gadgets.scrollers ui.operations ui.tools.browser ui.tools.common ui.gadgets.scrollers
ui.tools.inspector ui.gadgets.status-bar ui.operations ui.tools.inspector ui.gadgets.status-bar ui.operations
ui.gadgets.buttons ui.gadgets.borders ui.gadgets.packs ui.gadgets.buttons ui.gadgets.borders ui.gadgets.packs
ui.gadgets.labels ui.baseline-alignment ui.images ui.tools.listener ui.gadgets.labels ui.baseline-alignment ui.images ui.tools.listener
compiler.errors calendar tools.errors ; compiler.errors tools.errors tools.errors.model ;
IN: ui.tools.error-list IN: ui.tools.error-list
CONSTANT: source-file-icon CONSTANT: source-file-icon
@ -180,23 +180,9 @@ error-list-gadget "toolbar" f {
{ T{ key-down f f "F1" } error-list-help } { T{ key-down f f "F1" } error-list-help }
} define-command-map } define-command-map
SYMBOL: error-list-model
error-list-model [ f <model> ] initialize
SINGLETON: updater
M: updater errors-changed
drop f error-list-model get-global set-model ;
[ updater add-error-observer ] "ui.tools.error-list" add-init-hook
: <error-list-model> ( -- model )
error-list-model get-global
1/2 seconds <delay> [ drop all-errors ] <arrow> ;
: error-list-window ( -- ) : error-list-window ( -- )
<error-list-model> <error-list-gadget> "Errors" open-status-window ; error-list-model get [ drop all-errors ] <arrow>
<error-list-gadget> "Errors" open-status-window ;
: show-error-list ( -- ) : show-error-list ( -- )
[ error-list-gadget? ] find-window [ error-list-gadget? ] find-window

View File

@ -13,7 +13,7 @@ ui.gadgets.labeled ui.gadgets.panes ui.gadgets.scrollers
ui.gadgets.status-bar ui.gadgets.tracks ui.gadgets.borders ui.gestures ui.gadgets.status-bar ui.gadgets.tracks ui.gadgets.borders ui.gestures
ui.operations ui.tools.browser ui.tools.common ui.tools.debugger ui.operations ui.tools.browser ui.tools.common ui.tools.debugger
ui.tools.listener.completion ui.tools.listener.popups ui.tools.listener.completion ui.tools.listener.popups
ui.tools.listener.history ui.tools.error-list ui.images ; ui.tools.listener.history ui.images ui.tools.error-list tools.errors.model ;
FROM: source-files.errors => all-errors ; FROM: source-files.errors => all-errors ;
IN: ui.tools.listener IN: ui.tools.listener
@ -187,8 +187,18 @@ TUPLE: listener-gadget < tool error-summary output scroller input ;
[ >>input ] [ pane new-pane t >>scrolls? >>output ] bi [ >>input ] [ pane new-pane t >>scrolls? >>output ] bi
dup listener-streams >>output drop ; dup listener-streams >>output drop ;
: error-summary. ( -- )
error-counts keys [
H{ { table-gap { 3 3 } } } [
[ [ [ icon>> write-image ] with-cell ] each ] with-row
] tabular-output
{ "Press " { $command tool "common" show-error-list } " to view errors." }
print-element
] unless-empty ;
: <error-summary> ( -- gadget ) : <error-summary> ( -- gadget )
<pane> COLOR: light-yellow <solid> >>interior ; error-list-model get [ drop error-summary. ] <pane-control>
COLOR: light-yellow <solid> >>interior ;
: init-error-summary ( listener -- listener ) : init-error-summary ( listener -- listener )
<error-summary> >>error-summary <error-summary> >>error-summary
@ -366,22 +376,11 @@ interactor "completion" f {
{ T{ key-down f { C+ } "r" } history-completion-popup } { T{ key-down f { C+ } "r" } history-completion-popup }
} define-command-map } define-command-map
: error-summary. ( listener -- )
error-summary>> [
error-counts keys [
H{ { table-gap { 3 3 } } } [
[ [ [ icon>> write-image ] with-cell ] each ] with-row
] tabular-output
{ "Press " { $command tool "common" show-error-list } " to view errors." }
print-element
] unless-empty
] with-pane ;
: listener-thread ( listener -- ) : listener-thread ( listener -- )
dup listener-streams [ dup listener-streams [
[ com-browse ] help-hook set [ com-browse ] help-hook set
[ '[ [ _ input>> ] 2dip debugger-popup ] error-hook set ] '[ [ _ input>> ] 2dip debugger-popup ] error-hook set
[ '[ _ error-summary. ] error-summary-hook set ] bi error-summary? off
tip-of-the-day. nl tip-of-the-day. nl
listener listener
] with-streams* ; ] with-streams* ;