2 calendar calendar.format
3 io kernel multiline prettyprint sequences sorting
10 " Maintainer: Alex Chapman <chapman.alex@gmail.com>
12 now >gmt { YYYY " " MONTH " " DD } formatted [=[
13 " Minimum Version: 600
14 " To regenerate: ]=] wr {
15 [=[ USING: io.encodings.utf8 io.files parser ; ]=]
16 [=[ "resource:misc/vim/syntax/factor/generated.vim" utf8 ]=]
17 [=[ "resource:misc/factor.vim.fgen" parse-file ]=]
18 [=[ with-file-writer]=]
21 if exists('b:factorsyn_no_generated')
26 [=[ command -nargs=+ -bar HiLink hi def link <args>
27 function s:syn_keyword_factor_word(group, ...)
28 execute 'HiLink' a:group 'factorWord'
29 execute 'syn' 'cluster' 'factorWord' 'add=' . a:group
31 command -nargs=+ -bar SynKeywordFactorWord
32 \ call s:syn_keyword_factor_word(<f-args>)
34 : (vocab-name>syntax-group-name) ( string -- string )
35 "_" "___" "-" "__" "." "_" [ replace ] 2tri@ ;
36 : vocab-name>syntax-group-name ( string -- string )
37 (vocab-name>syntax-group-name) "factorWord_" prepend ;
38 : write-syn-keyword ( string seq seq -- )
39 "syn keyword " wr [ wr ] 2dip
40 [ bl [ bl ] [ wr ] interleave ] unless-empty
41 [ bl [ bl ] [ "|" "\\|" replace wr ] interleave ]
43 : write-keywords ( vocab -- )
45 [ name>> ] [ vocab-words [ name>> ] map ] bi natural-sort [
46 [ vocab-name>syntax-group-name
47 [ "SynKeywordFactorWord " wr wr " | " wr ] keep
49 { "contained" } write-syn-keyword nl
53 ! Uncomment to highlight all words from all vocabularies.
54 ! Note that factor/generated.vim grows from ~16k to ~100k.
56 [ loaded-vocab-names ] [ {
89 } ] if [ write-keywords ] each nl
91 delcommand SynKeywordFactorWord
94 [=[ let b:factor_syn_no_generated = 1
96 ! Modeline is broken up to prevent detection here.
97 [=[ " vim]=] wr [=[ :set ft=vim sw=2:]=] wr nl