75 lines
2.3 KiB
Factor
75 lines
2.3 KiB
Factor
! Copyright (C) 2011 John Benediktsson
|
|
! See http://factorcode.org/license.txt for BSD license
|
|
|
|
USING: accessors assocs colors.hex io io.encodings.utf8 io.files
|
|
io.pathnames io.streams.string io.styles kernel locals see
|
|
sequences splitting strings vocabs vocabs.loader words
|
|
xmode.catalog xmode.marker ;
|
|
|
|
IN: xmode.highlight
|
|
|
|
<PRIVATE
|
|
|
|
CONSTANT: STYLES H{
|
|
{ "NULL" H{ { foreground HEXCOLOR: 000000 } } }
|
|
{ "COMMENT1" H{ { foreground HEXCOLOR: cc0000 } } }
|
|
{ "COMMENT2" H{ { foreground HEXCOLOR: ff8400 } } }
|
|
{ "COMMENT3" H{ { foreground HEXCOLOR: 6600cc } } }
|
|
{ "COMMENT4" H{ { foreground HEXCOLOR: cc6600 } } }
|
|
{ "DIGIT" H{ { foreground HEXCOLOR: ff0000 } } }
|
|
{ "FUNCTION" H{ { foreground HEXCOLOR: 9966ff } } }
|
|
{ "INVALID" H{ { background HEXCOLOR: ffffcc }
|
|
{ foreground HEXCOLOR: ff0066 } } }
|
|
{ "KEYWORD1" H{ { foreground HEXCOLOR: 006699 }
|
|
{ font-style bold } } }
|
|
{ "KEYWORD2" H{ { foreground HEXCOLOR: 009966 }
|
|
{ font-style bold } } }
|
|
{ "KEYWORD3" H{ { foreground HEXCOLOR: 0099ff }
|
|
{ font-style bold } } }
|
|
{ "KEYWORD4" H{ { foreground HEXCOLOR: 66ccff }
|
|
{ font-style bold } } }
|
|
{ "LABEL" H{ { foreground HEXCOLOR: 02b902 } } }
|
|
{ "LITERAL1" H{ { foreground HEXCOLOR: ff00cc } } }
|
|
{ "LITERAL2" H{ { foreground HEXCOLOR: cc00cc } } }
|
|
{ "LITERAL3" H{ { foreground HEXCOLOR: 9900cc } } }
|
|
{ "LITERAL4" H{ { foreground HEXCOLOR: 6600cc } } }
|
|
{ "MARKUP" H{ { foreground HEXCOLOR: 0000ff } } }
|
|
{ "OPERATOR" H{ { foreground HEXCOLOR: 000000 }
|
|
{ font-style bold } } }
|
|
}
|
|
|
|
CONSTANT: BASE H{
|
|
{ font-name "monospace" }
|
|
}
|
|
|
|
PRIVATE>
|
|
|
|
: highlight-tokens ( tokens -- )
|
|
[
|
|
[ str>> ] [ id>> ] bi
|
|
[ name>> STYLES at BASE assoc-union ] [ BASE ] if*
|
|
format
|
|
] each nl ;
|
|
|
|
: highlight-lines ( lines mode -- )
|
|
[ f ] 2dip load-mode [
|
|
tokenize-line highlight-tokens
|
|
] curry each drop ;
|
|
|
|
GENERIC: highlight. ( obj -- )
|
|
|
|
M:: string highlight. ( path -- )
|
|
path utf8 file-lines [
|
|
path over first find-mode highlight-lines
|
|
] unless-empty ;
|
|
|
|
M: pathname highlight.
|
|
string>> highlight. ;
|
|
|
|
M: vocab highlight.
|
|
vocab-source-path highlight. ;
|
|
|
|
M: word highlight.
|
|
[ see ] with-string-writer string-lines
|
|
"factor" highlight-lines ;
|