editors.vim.generate-syntax: merge in factor.vim.fgen.
parent
b0b5c31821
commit
d9210f738d
|
@ -1,10 +1,101 @@
|
|||
! Generate a new factor.vim file for syntax highlighting
|
||||
USING: io.encodings.utf8 io.files parser ;
|
||||
USING: accessors calendar calendar.format io io.encodings.utf8
|
||||
io.files kernel multiline parser sequences sorting splitting
|
||||
vocabs ;
|
||||
IN: editors.vim.generate-syntax
|
||||
|
||||
<PRIVATE
|
||||
|
||||
CONSTANT: highlighted-vocabs {
|
||||
"alien"
|
||||
"arrays"
|
||||
"assocs"
|
||||
"byte-arrays"
|
||||
"classes"
|
||||
"classes.maybe"
|
||||
"combinators"
|
||||
"continuations"
|
||||
"definitions"
|
||||
"destructors"
|
||||
"generic"
|
||||
"growable"
|
||||
"io"
|
||||
"io.encodings"
|
||||
"io.encodings.binary"
|
||||
"io.encodings.utf8"
|
||||
"io.files"
|
||||
"kernel"
|
||||
"layouts"
|
||||
"make"
|
||||
"math"
|
||||
"math.order"
|
||||
"memory"
|
||||
"namespaces"
|
||||
"sequences"
|
||||
"sets"
|
||||
"sorting"
|
||||
"splitting"
|
||||
"strings"
|
||||
"strings.parser"
|
||||
"syntax"
|
||||
"vectors"
|
||||
}
|
||||
|
||||
: (vocab-name>syntax-group-name) ( str -- str )
|
||||
"_" "___" "-" "__" "." "_" [ replace ] 2tri@ ;
|
||||
|
||||
: vocab-name>syntax-group-name ( str -- str )
|
||||
(vocab-name>syntax-group-name) "factorWord_" prepend ;
|
||||
|
||||
: write-syn-keyword ( str seq seq -- )
|
||||
"syn keyword " write [ write ] 2dip
|
||||
[ bl [ bl ] [ write ] interleave ] unless-empty
|
||||
[ bl [ bl ] [ "|" "\\|" replace write ] interleave ]
|
||||
unless-empty ;
|
||||
|
||||
: write-keywords ( vocab -- )
|
||||
lookup-vocab
|
||||
[ name>> ] [ vocab-words [ name>> ] map ] bi natural-sort [
|
||||
[ vocab-name>syntax-group-name
|
||||
[ "SynKeywordFactorWord " write write " | " write ] keep
|
||||
] dip
|
||||
{ "contained" } write-syn-keyword nl
|
||||
] [ drop ] if* ;
|
||||
|
||||
: (generate-vim-syntax) ( -- )
|
||||
[=[ " Vim syntax file
|
||||
" Language: Factor
|
||||
" Maintainer: Alex Chapman <chapman.alex@gmail.com>
|
||||
" Last Change: ]=] write
|
||||
now >gmt { YYYY " " MONTH " " DD } formatted [=[
|
||||
" Minimum Version: 600
|
||||
" To regenerate: USE: editors.vim.generate-syntax generate-vim-syntax
|
||||
|
||||
if exists('b:factorsyn_no_generated')
|
||||
finish
|
||||
endif
|
||||
|
||||
command -nargs=+ -bar HiLink hi def link <args>
|
||||
function s:syn_keyword_factor_word(group, ...)
|
||||
execute 'HiLink' a:group 'factorWord'
|
||||
execute 'syn' 'cluster' 'factorWord' 'add=' . a:group
|
||||
endfunction
|
||||
command -nargs=+ -bar SynKeywordFactorWord
|
||||
\ call s:syn_keyword_factor_word(<f-args>)
|
||||
]=] print
|
||||
|
||||
highlighted-vocabs [ write-keywords ] each nl
|
||||
|
||||
[=[ delcommand HiLink
|
||||
delcommand SynKeywordFactorWord
|
||||
|
||||
let b:factor_syn_no_generated = 1
|
||||
|
||||
" vim:set ft=vim sw=2:]=] print ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: generate-vim-syntax ( -- )
|
||||
"resource:misc/vim/syntax/factor/generated.vim"
|
||||
utf8 "resource:misc/factor.vim.fgen" parse-file
|
||||
with-file-writer ;
|
||||
utf8 [ (generate-vim-syntax) ] with-file-writer ;
|
||||
|
||||
MAIN: generate-vim-syntax
|
||||
|
|
|
@ -1,98 +0,0 @@
|
|||
USING: accessors
|
||||
calendar calendar.format
|
||||
io kernel multiline prettyprint sequences sorting
|
||||
splitting tr vocabs ;
|
||||
IN: factor.vim.fgen
|
||||
ALIAS: wr write
|
||||
|
||||
[=[ " Vim syntax file
|
||||
" Language: Factor
|
||||
" Maintainer: Alex Chapman <chapman.alex@gmail.com>
|
||||
" Last Change: ]=] wr
|
||||
now >gmt { YYYY " " MONTH " " DD } formatted [=[
|
||||
" Minimum Version: 600
|
||||
" To regenerate: ]=] wr {
|
||||
[=[ USING: io.encodings.utf8 io.files parser ; ]=]
|
||||
[=[ "resource:misc/vim/syntax/factor/generated.vim" utf8 ]=]
|
||||
[=[ "resource:misc/factor.vim.fgen" parse-file ]=]
|
||||
[=[ with-file-writer]=]
|
||||
} [ wr ] each [=[
|
||||
|
||||
if exists('b:factorsyn_no_generated')
|
||||
finish
|
||||
endif
|
||||
]=] wr nl
|
||||
|
||||
[=[ command -nargs=+ -bar HiLink hi def link <args>
|
||||
function s:syn_keyword_factor_word(group, ...)
|
||||
execute 'HiLink' a:group 'factorWord'
|
||||
execute 'syn' 'cluster' 'factorWord' 'add=' . a:group
|
||||
endfunction
|
||||
command -nargs=+ -bar SynKeywordFactorWord
|
||||
\ call s:syn_keyword_factor_word(<f-args>)
|
||||
]=] wr nl
|
||||
: (vocab-name>syntax-group-name) ( string -- string )
|
||||
"_" "___" "-" "__" "." "_" [ replace ] 2tri@ ;
|
||||
: vocab-name>syntax-group-name ( string -- string )
|
||||
(vocab-name>syntax-group-name) "factorWord_" prepend ;
|
||||
: write-syn-keyword ( string seq seq -- )
|
||||
"syn keyword " wr [ wr ] 2dip
|
||||
[ bl [ bl ] [ wr ] interleave ] unless-empty
|
||||
[ bl [ bl ] [ "|" "\\|" replace wr ] interleave ]
|
||||
unless-empty ;
|
||||
: write-keywords ( vocab -- )
|
||||
lookup-vocab
|
||||
[ name>> ] [ vocab-words [ name>> ] map ] bi natural-sort [
|
||||
[ vocab-name>syntax-group-name
|
||||
[ "SynKeywordFactorWord " wr wr " | " wr ] keep
|
||||
] dip
|
||||
{ "contained" } write-syn-keyword nl
|
||||
] [ drop ] if* ;
|
||||
|
||||
f
|
||||
! Uncomment to highlight all words from all vocabularies.
|
||||
! Note that factor/generated.vim grows from ~16k to ~100k.
|
||||
! drop t
|
||||
[ loaded-vocab-names ] [ {
|
||||
"alien"
|
||||
"arrays"
|
||||
"assocs"
|
||||
"byte-arrays"
|
||||
"classes"
|
||||
"classes.maybe"
|
||||
"combinators"
|
||||
"continuations"
|
||||
"definitions"
|
||||
"destructors"
|
||||
"generic"
|
||||
"growable"
|
||||
"io"
|
||||
"io.encodings"
|
||||
"io.encodings.binary"
|
||||
"io.encodings.utf8"
|
||||
"io.files"
|
||||
"kernel"
|
||||
"layouts"
|
||||
"make"
|
||||
"math"
|
||||
"math.order"
|
||||
"memory"
|
||||
"namespaces"
|
||||
"sequences"
|
||||
"sets"
|
||||
"sorting"
|
||||
"splitting"
|
||||
"strings"
|
||||
"strings.parser"
|
||||
"syntax"
|
||||
"vectors"
|
||||
} ] if [ write-keywords ] each nl
|
||||
[=[ delcommand HiLink
|
||||
delcommand SynKeywordFactorWord
|
||||
]=] wr nl
|
||||
|
||||
[=[ let b:factor_syn_no_generated = 1
|
||||
]=] wr nl
|
||||
! Modeline is broken up to prevent detection here.
|
||||
[=[ " vim]=] wr [=[ :set ft=vim sw=2:]=] wr nl
|
||||
! vim:set ft=factor:
|
|
@ -1,9 +1,9 @@
|
|||
" Vim syntax file
|
||||
" Language: Factor
|
||||
" Maintainer: Alex Chapman <chapman.alex@gmail.com>
|
||||
" Last Change: 2020 Jun 05
|
||||
" Last Change: 2020 Jun 08
|
||||
" Minimum Version: 600
|
||||
" To regenerate: USING: io.encodings.utf8 io.files parser ; "resource:misc/vim/syntax/factor/generated.vim" utf8 "resource:misc/factor.vim.fgen" parse-file with-file-writer
|
||||
" To regenerate: USE: editors.vim.generate-syntax generate-vim-syntax
|
||||
|
||||
if exists('b:factorsyn_no_generated')
|
||||
finish
|
||||
|
|
Loading…
Reference in New Issue