]> gitweb.factorcode.org Git - factor.git/commitdiff
editors.vim.generate-syntax: merge in factor.vim.fgen.
authorJohn Benediktsson <mrjbq7@gmail.com>
Mon, 8 Jun 2020 18:06:22 +0000 (11:06 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 8 Jun 2020 18:21:09 +0000 (11:21 -0700)
basis/editors/vim/generate-syntax/generate-syntax.factor
misc/factor.vim.fgen [deleted file]
misc/vim/syntax/factor/generated.vim

index 3df11f3fda5a91bcb785726cad92e9bd544d45e7..bbbc6c3a3184a27ba008100e5e7f354f697b08ed 100644 (file)
-! 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
diff --git a/misc/factor.vim.fgen b/misc/factor.vim.fgen
deleted file mode 100644 (file)
index 7a14103..0000000
+++ /dev/null
@@ -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:
index 3e50b89a4b3a0c49c8d0f83cffb094b3299deb73..eea14c895045e3104bc4c3719d3d883a48f129d3 100644 (file)
@@ -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