diff --git a/basis/colors/constants/factor-colors.txt b/basis/colors/constants/factor-colors.txt index 9d7649ab3d..c032aae5c4 100644 --- a/basis/colors/constants/factor-colors.txt +++ b/basis/colors/constants/factor-colors.txt @@ -1,4 +1,5 @@ ! Factor UI theme colors +243 242 234 FactorLightLightTan 227 226 219 FactorLightTan 172 167 147 FactorDarkTan 81 91 105 FactorLightSlateBlue diff --git a/basis/help/help.factor b/basis/help/help.factor index 6e09e298f4..e31c705e26 100644 --- a/basis/help/help.factor +++ b/basis/help/help.factor @@ -99,19 +99,26 @@ M: word set-article-parent swap "help-parent" set-word-prop ; : $navigation-row ( content element label -- ) [ prefix 1array ] dip prefix , ; +: ($navigation-table) ( element -- ) + help-path-style get table-style set [ $table ] with-scope ; + : $navigation-table ( topic -- ) [ - [ help-path [ \ $links "Up:" $navigation-row ] unless-empty ] [ prev-article [ 1array \ $long-link "Prev:" $navigation-row ] when* ] [ next-article [ 1array \ $long-link "Next:" $navigation-row ] when* ] - tri - ] { } make [ $table ] unless-empty ; + bi + ] { } make [ ($navigation-table) ] unless-empty ; + +: ($navigation) ( topic -- ) + help-path-style get [ + [ help-path [ reverse $breadcrumbs ] unless-empty ] + [ $navigation-table ] bi + ] with-style ; : $title ( topic -- ) title-style get [ title-style get [ - [ ($title) ] - [ help-path-style get [ $navigation-table ] with-style ] bi + [ ($title) ] [ ($navigation) ] bi ] with-nesting ] with-style nl ; diff --git a/basis/help/html/stylesheet.css b/basis/help/html/stylesheet.css index ff657d634e..c56a19bc9a 100644 --- a/basis/help/html/stylesheet.css +++ b/basis/help/html/stylesheet.css @@ -1,4 +1,4 @@ -a:link { text-decoration: none; color: #00004c; } -a:visited { text-decoration: none; color: #00004c; } -a:active { text-decoration: none; color: #00004c; } -a:hover { text-decoration: underline; color: #00004c; } +a:link { text-decoration: none; color: #104e8b; } +a:visited { text-decoration: none; color: #104e8b; } +a:active { text-decoration: none; color: #104e8b; } +a:hover { text-decoration: underline; color: #104e8b; } diff --git a/basis/help/markup/markup.factor b/basis/help/markup/markup.factor index 6e75adc8aa..c64f315d6d 100644 --- a/basis/help/markup/markup.factor +++ b/basis/help/markup/markup.factor @@ -205,8 +205,11 @@ ALIAS: $slot $snippet "Vocabulary" $heading nl dup ($vocab-link) ] when* ; +: (textual-list) ( seq quot sep -- ) + '[ _ print-element ] swap interleave ; inline + : textual-list ( seq quot -- ) - [ ", " print-element ] swap interleave ; inline + ", " (textual-list) ; inline : $links ( topics -- ) [ [ ($link) ] textual-list ] ($span) ; @@ -214,6 +217,9 @@ ALIAS: $slot $snippet : $vocab-links ( vocabs -- ) [ vocab ] map $links ; +: $breadcrumbs ( topics -- ) + [ [ ($link) ] " > " (textual-list) ] ($span) ; + : $see-also ( topics -- ) "See also" $heading $links ; diff --git a/basis/help/stylesheet/stylesheet.factor b/basis/help/stylesheet/stylesheet.factor index 6c0b18e8e9..2475fba0f6 100644 --- a/basis/help/stylesheet/stylesheet.factor +++ b/basis/help/stylesheet/stylesheet.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2005, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: io.styles namespaces colors colors.constants ; +USING: colors colors.constants io.styles literals namespaces ; IN: help.stylesheet SYMBOL: default-span-style @@ -30,22 +30,27 @@ H{ { font-style bold } } strong-style set-global SYMBOL: title-style H{ { font-name "sans-serif" } - { font-size 18 } + { font-size 20 } { font-style bold } { wrap-margin 500 } - { foreground COLOR: FactorDarkSlateBlue } - { page-color COLOR: FactorLightTan } - { border-width 5 } + { foreground COLOR: gray20 } + { page-color COLOR: FactorLightLightTan } + { inset { 5 5 } } } title-style set-global SYMBOL: help-path-style -H{ { font-size 10 } } help-path-style set-global +H{ + { font-size 10 } + { table-gap { 5 5 } } + { table-border $ transparent } +} help-path-style set-global SYMBOL: heading-style H{ { font-name "sans-serif" } { font-size 16 } { font-style bold } + { foreground COLOR: FactorDarkSlateBlue } } heading-style set-global SYMBOL: subsection-style @@ -70,8 +75,8 @@ H{ SYMBOL: code-style H{ - { page-color COLOR: FactorLightTan } - { border-width 5 } + { page-color COLOR: FactorLightLightTan } + { inset { 5 5 } } { wrap-margin f } } code-style set-global @@ -88,7 +93,7 @@ SYMBOL: warning-style H{ { page-color COLOR: gray90 } { border-color COLOR: red } - { border-width 5 } + { inset { 5 5 } } { wrap-margin 500 } } warning-style set-global @@ -96,7 +101,7 @@ SYMBOL: deprecated-style H{ { page-color COLOR: gray90 } { border-color COLOR: red } - { border-width 5 } + { inset { 5 5 } } { wrap-margin 500 } } deprecated-style set-global diff --git a/basis/help/tips/tips.factor b/basis/help/tips/tips.factor index 4685b6c517..8569be0b8f 100644 --- a/basis/help/tips/tips.factor +++ b/basis/help/tips/tips.factor @@ -30,7 +30,7 @@ SYMBOL: tip-of-the-day-style H{ { page-color COLOR: lavender } - { border-width 5 } + { inset { 5 5 } } { wrap-margin 500 } } tip-of-the-day-style set-global diff --git a/basis/html/streams/streams.factor b/basis/html/streams/streams.factor index 49a9225402..26a3d5f391 100644 --- a/basis/html/streams/streams.factor +++ b/basis/html/streams/streams.factor @@ -99,7 +99,8 @@ M: html-span-stream dispose : border-css, ( border -- ) "border: 1px solid #" % hex-color, "; " % ; -: padding-css, ( padding -- ) "padding: " % # "px; " % ; +: padding-css, ( padding -- ) + first2 "padding: " % # "px " % # "px; " % ; CONSTANT: pre-css "white-space: pre; font-family: monospace;" @@ -108,7 +109,7 @@ CONSTANT: pre-css "white-space: pre; font-family: monospace;" { { page-color bg-css, } { border-color border-css, } - { border-width padding-css, } + { inset padding-css, } } make-css ] [ wrap-margin swap at diff --git a/basis/io/styles/styles-docs.factor b/basis/io/styles/styles-docs.factor index 8fcf12aae9..8d29cffb04 100755 --- a/basis/io/styles/styles-docs.factor +++ b/basis/io/styles/styles-docs.factor @@ -133,7 +133,7 @@ ARTICLE: "paragraph-styles" "Paragraph styles" "Paragraph styles for " { $link with-nesting } ":" { $subsection page-color } { $subsection border-color } -{ $subsection border-width } +{ $subsection inset } { $subsection wrap-margin } { $subsection presented } ; @@ -243,10 +243,10 @@ HELP: border-color { $code "H{ { border-color T{ rgba f 1 0 0 1 } } }\n[ \"A border\" write ] with-nesting nl" } } ; -HELP: border-width -{ $description "Paragraph style. Pixels between edge of text and border, an integer." } +HELP: inset +{ $description "Paragraph style. A pair of integers representing the number of pixels that the content should be inset from the border. The first number is the horizontal inset, and the second is the vertical inset." } { $examples - { $code "H{ { border-width 10 } }\n[ \"Some inset text\" write ] with-nesting nl" } + { $code "H{ { inset { 10 10 } } }\n[ \"Some inset text\" write ] with-nesting nl" } } ; HELP: wrap-margin diff --git a/basis/io/styles/styles.factor b/basis/io/styles/styles.factor index 2d25016919..b141d8d2f7 100644 --- a/basis/io/styles/styles.factor +++ b/basis/io/styles/styles.factor @@ -132,7 +132,7 @@ SYMBOL: image ! Paragraph styles SYMBOL: page-color SYMBOL: border-color -SYMBOL: border-width +SYMBOL: inset SYMBOL: wrap-margin ! Table styles diff --git a/basis/prettyprint/stylesheet/stylesheet-docs.factor b/basis/prettyprint/stylesheet/stylesheet-docs.factor new file mode 100644 index 0000000000..4f7a7f2141 --- /dev/null +++ b/basis/prettyprint/stylesheet/stylesheet-docs.factor @@ -0,0 +1,44 @@ +! Copyright (C) 2009 Your name. +! See http://factorcode.org/license.txt for BSD license. +USING: help.markup help.syntax kernel words ; +IN: prettyprint.stylesheet + +HELP: effect-style +{ $values + { "effect" "an effect" } + { "style" "a style assoc" } +} +{ $description "The styling hook for stack effects" } ; + +HELP: string-style +{ $values + { "str" "a string" } + { "style" "a style assoc" } +} +{ $description "The styling hook for string literals" } ; + +HELP: vocab-style +{ $values + { "vocab" "a vocabulary specifier" } + { "style" "a style assoc" } +} +{ $description "The styling hook for vocab names" } ; + +HELP: word-style +{ $values + { "word" "a word" } + { "style" "a style assoc" } +} +{ $description "The styling hook for word names" } ; + +ARTICLE: "prettyprint.stylesheet" "Prettyprinter Formatted Output" +{ $vocab-link "prettyprint.stylesheet" } +$nl +"Control the way that the prettyprinter formats output based on object type. These hooks form a basic \"syntax\" highlighting system." +{ $subsection word-style } +{ $subsection string-style } +{ $subsection vocab-style } +{ $subsection effect-style } +; + +ABOUT: "prettyprint.stylesheet" diff --git a/basis/prettyprint/stylesheet/stylesheet.factor b/basis/prettyprint/stylesheet/stylesheet.factor index 2be959cc9b..a593f23d99 100644 --- a/basis/prettyprint/stylesheet/stylesheet.factor +++ b/basis/prettyprint/stylesheet/stylesheet.factor @@ -1,34 +1,46 @@ -! Copyright (C) 2009 Your name. +! Copyright (C) 2009 Keith Lazuka. ! See http://factorcode.org/license.txt for BSD license. -USING: colors.constants hashtables io.styles kernel namespaces -words words.symbol ; +USING: assocs colors.constants combinators +combinators.short-circuit hashtables io.styles kernel literals +namespaces sequences words words.symbol ; IN: prettyprint.stylesheet -: word-style ( word -- style ) - dup "word-style" word-prop >hashtable [ - [ - [ presented set ] [ - [ parsing-word? ] [ delimiter? ] [ symbol? ] tri - or or [ COLOR: DarkSlateGray ] [ COLOR: black ] if - foreground set - ] bi - ] bind - ] keep ; + + +GENERIC: word-style ( word -- style ) + +M: word word-style + [ presented associate ] + [ "word-style" word-prop >hashtable ] bi assoc-union ; + +M: highlighted-word word-style + call-next-method COLOR: DarkSlateGray foreground associate + swap assoc-union ; + + + +: string-style ( str -- style ) + COLOR: LightSalmon4 colored-presentation-style ; : vocab-style ( vocab -- style ) - [ - presented set - COLOR: cornsilk4 foreground set - ] H{ } make-assoc ; + dim-color colored-presentation-style ; : effect-style ( effect -- style ) - [ - presented set - COLOR: DarkGreen foreground set - ] H{ } make-assoc ; \ No newline at end of file + COLOR: DarkGreen colored-presentation-style ; diff --git a/basis/prettyprint/stylesheet/summary.txt b/basis/prettyprint/stylesheet/summary.txt new file mode 100644 index 0000000000..39a50c8d9f --- /dev/null +++ b/basis/prettyprint/stylesheet/summary.txt @@ -0,0 +1 @@ +prettyprinter syntax highlighting and formatted output diff --git a/basis/ui/gadgets/panes/panes.factor b/basis/ui/gadgets/panes/panes.factor index 6f68c32ff0..50a609b897 100644 --- a/basis/ui/gadgets/panes/panes.factor +++ b/basis/ui/gadgets/panes/panes.factor @@ -242,11 +242,11 @@ MEMO: specified-font ( assoc -- font ) : apply-page-color-style ( style gadget -- style gadget ) page-color [ >>interior ] apply-style ; -: apply-border-width-style ( style gadget -- style gadget ) - border-width [ dup 2array ] apply-style ; +: apply-inset-style ( style gadget -- style gadget ) + inset [ ] apply-style ; : style-pane ( style pane -- pane ) - apply-border-width-style + apply-inset-style apply-border-color-style apply-page-color-style apply-presentation-style diff --git a/basis/vocabs/prettyprint/prettyprint.factor b/basis/vocabs/prettyprint/prettyprint.factor index 2813485da3..6b759dddde 100644 --- a/basis/vocabs/prettyprint/prettyprint.factor +++ b/basis/vocabs/prettyprint/prettyprint.factor @@ -4,6 +4,7 @@ USING: accessors arrays assocs colors colors.constants fry io io.styles kernel make math.order namespaces parser prettyprint.backend prettyprint.sections prettyprint.stylesheet sequences sets sorting vocabs vocabs.parser ; +FROM: io.styles => inset ; IN: vocabs.prettyprint : pprint-vocab ( vocab -- ) @@ -86,7 +87,10 @@ PRIVATE> "To avoid doing this in the future, add the following forms" print "at the top of the source file:" print nl ] with-style - { { page-color COLOR: FactorLightTan } } - [ manifest get pprint-manifest ] with-nesting + { + { page-color COLOR: FactorLightLightTan } + { border-color COLOR: FactorDarkTan } + { inset { 5 5 } } + } [ manifest get pprint-manifest ] with-nesting nl nl ] print-use-hook set-global \ No newline at end of file