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: accessors calendar calendar.format io io.encodings.utf8
|
||||||
USING: io.encodings.utf8 io.files parser ;
|
io.files kernel multiline parser sequences sorting splitting
|
||||||
|
vocabs ;
|
||||||
IN: editors.vim.generate-syntax
|
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 ( -- )
|
: generate-vim-syntax ( -- )
|
||||||
"resource:misc/vim/syntax/factor/generated.vim"
|
"resource:misc/vim/syntax/factor/generated.vim"
|
||||||
utf8 "resource:misc/factor.vim.fgen" parse-file
|
utf8 [ (generate-vim-syntax) ] with-file-writer ;
|
||||||
with-file-writer ;
|
|
||||||
|
|
||||||
MAIN: generate-vim-syntax
|
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
|
" Vim syntax file
|
||||||
" Language: Factor
|
" Language: Factor
|
||||||
" Maintainer: Alex Chapman <chapman.alex@gmail.com>
|
" Maintainer: Alex Chapman <chapman.alex@gmail.com>
|
||||||
" Last Change: 2020 Jun 05
|
" Last Change: 2020 Jun 08
|
||||||
" Minimum Version: 600
|
" 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')
|
if exists('b:factorsyn_no_generated')
|
||||||
finish
|
finish
|
||||||
|
|
Loading…
Reference in New Issue