]> gitweb.factorcode.org Git - factor.git/blob - misc/factor.vim.fgen
misc/vim/syntax/factor.vim: don't set 'shiftwidth', 'softtabstop', etc.
[factor.git] / misc / factor.vim.fgen
1 <%
2 USING: kernel io prettyprint vocabs sequences multiline ;
3 IN: factor.vim.fgen
4
5 : print-keywords ( vocab -- )
6     words [
7         "syn keyword factorKeyword " write
8         [ bl ] [ pprint ] interleave nl
9     ] when* ;
10
11 %>
12 " Vim syntax file
13 " Language: Factor
14 " Maintainer: Alex Chapman <chapman.alex@gmail.com>
15 " Last Change: 2011 Mar 17
16 " To run: USING: html.templates html.templates.fhtml ; "resource:misc/factor.vim.fgen" <fhtml> call-template
17
18 " For version 5.x: Clear all syntax items
19 " For version 6.x: Quit when a syntax file was already loaded
20 if version < 600
21     syntax clear
22 elseif exists("b:current_syntax")
23     finish
24 endif
25
26 " factor is case sensitive.
27 syn case match
28
29 " make all of these characters part of a word (useful for skipping over words with w, e, and b)
30 if version >= 600
31     setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
32 else
33     set iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
34 endif
35
36 syn cluster factorCluster contains=factorComment,factorFrySpecifier,factorKeyword,factorRepeat,factorConditional,factorBoolean,factorBreakpoint,factorDeclaration,factorCallQuotation,factorExecute,factorCallNextMethod,factorString,factorTriString,factorSbuf,@factorNumber,@factorNumErr,factorDelimiter,factorChar,factorBackslash,factorLiteral,factorLiteralBlock,@factorWordOps,factorAlien,factorSlot,factorTuple,factorStruct
37
38 syn match factorTodo /\(TODO\|FIXME\|XXX\):\=/ contained
39 syn match factorComment /\<!\>\s.*/ contains=factorTodo,@Spell
40 syn match factorComment /\<#!\>\s.*/ contains=factorTodo,@Spell
41 syn match factorShebang /\%\^#!\s.*/
42 syn match factorShebangErr /\%\^#!\S\+/
43
44 syn cluster factorDefnContents contains=@factorCluster,factorStackEffect,factorLiteralStackEffect,factorArray0,factorQuotation0
45
46 syn region factorDefn matchgroup=factorDefnDelims start=/\<\(SYNTAX\|\(MACRO\|MEMO\)\?:\?\):\s\+\S\+\>/ end=/\<;\>/ contains=@factorDefnContents
47 syn region factorMethod matchgroup=factorMethodDelims start=/\<M::\?\s\+\S\+\s\+\S\+\>/ end=/\<;\>/ contains=@factorDefnContents
48 syn region factorGeneric matchgroup=factorGenericDelims start=/\<GENERIC:\s\+\S\+\>/ end=/$/ contains=factorStackEffect
49 syn region factorGenericN matchgroup=factorGenericNDelims start=/\<GENERIC#\s\+\S\+\s\+\d\+\>/ end=/$/ contains=factorStackEffect
50
51 syn region factorPrivateDefn matchgroup=factorPrivateDefnDelims start=/\<\(SYNTAX\|\(MACRO\|MEMO\)\?:\?\):\s\+\S\+\>/ end=/\<;\>/ contains=@factorDefnContents contained
52 syn region factorPrivateMethod matchgroup=factorPrivateMethodDelims start=/\<M::\?\s\+\S\+\s\+\S\+\>/ end=/\<;\>/ contains=@factorDefnContents contained
53 syn region factorPGeneric matchgroup=factorPGenericDelims start=/\<GENERIC:\s\+\S\+\>/ end=/$/ contains=factorStackEffect contained
54 syn region factorPGenericN matchgroup=factorPGenericNDelims start=/\<GENERIC#\s\+\S\+\s\+\d\+\>/ end=/$/ contains=factorStackEffect
55
56 syn region None matchgroup=factorPrivate start=/\<<PRIVATE\>/ end=/\<PRIVATE>\>/ contains=@factorDefnContents,factorPrivateDefn,factorPrivateMethod,factorPGeneric,factorPGenericN
57
58
59 syn keyword factorBoolean f t
60 syn keyword factorBreakpoint B
61 syn keyword factorFrySpecifier @ _ contained
62 syn keyword factorDeclaration delimiter deprecated final flushable foldable inline recursive
63 syn match factorCallQuotation /\<call(\s\(.*\s\)\?--\(\s.*\)\?\s)\>/
64 syn match factorExecute /\<execute(\s\(.*\s\)\?--\(\s.*\)\?\s)\>/
65 syn keyword factorCallNextMethod call-next-method
66
67 <%
68
69 ! uncomment this if you want all words from all vocabularies highlighted. Note
70 ! that this changes factor.vim from around 8k to around 100k (and is a bit
71 ! broken)
72
73 ! vocabs [ print-keywords ] each
74
75     {
76         "kernel" "assocs" "combinators" "math" "sequences"
77         "namespaces" "arrays" "io" "strings" "vectors"
78         "continuations"
79     } [ print-keywords ] each
80 %>
81
82 syn cluster factorReal          contains=factorInt,factorFloat,factorRatio,factorBinary,factorHex,factorOctal
83 syn cluster factorNumber        contains=@factorReal,factorComplex
84 syn cluster factorNumErr        contains=factorBinErr,factorHexErr,factorOctErr
85 syn match   factorInt           /\<-\=[0-9]\([0-9,]*[0-9]\)\?\>/
86 syn match   factorFloat         /\<-\=[0-9]\([0-9,]*[0-9]\)\?\.[0-9,]*[0-9]\+\>/
87 syn match   factorRatio         /\<-\=[0-9]\([0-9,]*[0-9]\)\?\(+[0-9]\([0-9,]*[0-9]\+\)\?\)\?\/-\=[0-9]\([0-9,]*[0-9]\+\)\?\.\?\>/
88 syn region  factorComplex       start=/\<C{\>/ end=/\<}\>/ contains=@factorReal
89 syn match   factorBinErr        /\<BIN:\s\+-\=[01,]*[^01 ]\S*\>/
90 syn match   factorBinary        /\<BIN:\s\+-\=[01,]\+\>/
91 syn match   factorHexErr        /\<HEX:\s\+-\=\(,\S*\|\S*,\|[-0-9a-fA-Fp,]*[^-0-9a-fA-Fp, ]\S*\)\>/
92 syn match   factorHex           /\<HEX:\s\+-\=[0-9a-fA-F]\([0-9a-fA-F,]*[0-9a-fA-F]\)\?\(\.[0-9a-fA-F]\([0-9a-fA-F,]*[0-9a-fA-F]\)\?\)\?\(p-\=[0-9]\([0-9,]*[0-9]\)\?\)\?\>/
93 syn match   factorOctErr        /\<OCT:\s\+-\=\(,\S*\|\S*,\|[0-7,]*[^0-7, ]\S*\)\>/
94 syn match   factorOctal         /\<OCT:\s\+-\=[0-7,]\+\>/
95 syn match   factorNan           /\<NAN:\s\+[0-9a-fA-F]\([0-9a-fA-F,]*[0-9a-fA-F]\)\?\>/
96
97 syn match   factorIn            /\<IN:\s\+\S\+\>/
98 syn match   factorUse           /\<USE:\s\+\S\+\>/
99 syn match   factorUnuse         /\<UNUSE:\s\+\S\+\>/
100
101 syn match   factorChar          /\<CHAR:\s\+\S\+\>/
102
103 syn match   factorBackslash     /\<\\\>\s\+\S\+\>/
104 syn match   factorLiteral       /\<\$\>\s\+\S\+\>/
105 syn region  factorLiteralBlock  start=/\<\$\[\>/ end=/\<\]\>/
106
107 syn region  factorUsing         start=/\<USING:\>/       end=/;/
108 syn match   factorQualified     /\<QUALIFIED:\s\+\S\+\>/
109 syn match   factorQualifiedWith /\<QUALIFIED-WITH:\s\+\S\+\s\+\S\+\>/
110 syn region  factorExclude       start=/\<EXCLUDE:\>/     end=/;/
111 syn region  factorFrom          start=/\<FROM:\>/        end=/;/
112 syn match   factorRename        /\<RENAME:\s\+\S\+\s\+\S\+\s=>\s\+\S\+\>/
113 syn region  factorSingletons    start=/\<SINGLETONS:\>/  end=/;/
114 syn match   factorSymbol        /\<SYMBOL:\s\+\S\+\>/
115 syn region  factorSymbols       start=/\<SYMBOLS:\>/     end=/;/
116 syn region  factorConstructor2  start=/\<CONSTRUCTOR:\?/ end=/;/
117 syn region  factorIntersection  start=/\<INTERSECTION:\>/ end=/\<;\>/
118 syn region  factorTuple         start=/\<TUPLE:\>/ end=/\<;\>/
119 syn region  factorUnion         start=/\<UNION:\>/ end=/\<;\>/
120 syn region  factorStruct        start=/\<\(UNION-STRUCT:\|STRUCT:\)\>/ end=/\<;\>/
121
122 syn match   factorConstant      /\<CONSTANT:\s\+\S\+\>/
123 syn match   factorAlias         /\<ALIAS:\s\+\S\+\s\+\S\+\>/
124 syn match   factorSingleton     /\<SINGLETON:\s\+\S\+\>/
125 syn match   factorPostpone      /\<POSTPONE:\s\+\S\+\>/
126 syn match   factorDefer         /\<DEFER:\s\+\S\+\>/
127 syn match   factorForget        /\<FORGET:\s\+\S\+\>/
128 syn match   factorMixin         /\<MIXIN:\s\+\S\+\>/
129 syn match   factorInstance      /\<INSTANCE:\s\+\S\+\s\+\S\+\>/
130 syn match   factorHook          /\<HOOK:\s\+\S\+\s\+\S\+\>/
131 syn match   factorMain          /\<MAIN:\s\+\S\+\>/
132 syn match   factorConstructor   /\<C:\s\+\S\+\s\+\S\+\>/
133 syn match   factorAlien         /\<ALIEN:\s\+[0-9a-fA-F]\([0-9a-fA-F,]*[0-9a-fA-F]\)\?\>/
134 syn match   factorSlot          /\<SLOT:\s\+\S\+\>/
135
136 syn cluster factorWordOps       contains=factorConstant,factorAlias,factorSingleton,factorSingletons,factorSymbol,factorSymbols,factorPostpone,factorDefer,factorForget,factorMixin,factorInstance,factorHook,factorMain,factorConstructor
137
138 "TODO:
139 "misc:
140 " HELP:
141 " ARTICLE:
142 "literals:
143 " PRIMITIVE:
144
145 "C interface:
146 " C-ENUM:
147 " FUNCTION:
148 " TYPEDEF:
149 " LIBRARY:
150 "#\ "
151
152 syn region factorString start=/\<"/ skip=/\\"/ end=/"/
153 syn region factorTriString start=/\<"""/ skip=/\\"/ end=/"""/
154 syn region factorSbuf start=/\<[-a-zA-Z0-9]\+"\>/ skip=/\\"/ end=/"/
155
156 syn region factorMultiString matchgroup=factorMultiStringDelims start=/\<STRING:\s\+\S\+\>/ end=/^;$/ contains=factorMultiStringContents
157 syn match factorMultiStringContents /.*/ contained
158
159 "syn match factorStackEffectErr /\<)\>/
160 "syn region factorStackEffectErr start=/\<(\>/ end=/\<)\>/
161 "syn region factorStackEffect start=/\<(\>/ end=/\<)\>/ contained
162 syn match factorStackEffect /\<(\s\(.*\s\)\?--\(\s.*\)\?\s)\>/ contained
163 syn match factorLiteralStackEffect /\<((\s\(.*\s\)\?--\(\s.*\)\?\s))\>/
164
165 "adapted from lisp.vim
166 if exists("g:factor_norainbow")
167     syn region factorQuotation matchgroup=factorDelimiter start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/ matchgroup=factorDelimiter end=/\<\]\>/ contains=ALL
168 else
169     syn region factorQuotation0           matchgroup=hlLevel0 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation1,factorArray1
170     syn region factorQuotation1 contained matchgroup=hlLevel1 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation2,factorArray2
171     syn region factorQuotation2 contained matchgroup=hlLevel2 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation3,factorArray3
172     syn region factorQuotation3 contained matchgroup=hlLevel3 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation4,factorArray4
173     syn region factorQuotation4 contained matchgroup=hlLevel4 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation5,factorArray5
174     syn region factorQuotation5 contained matchgroup=hlLevel5 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation6,factorArray6
175     syn region factorQuotation6 contained matchgroup=hlLevel6 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation7,factorArray7
176     syn region factorQuotation7 contained matchgroup=hlLevel7 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation8,factorArray8
177     syn region factorQuotation8 contained matchgroup=hlLevel8 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation9,factorArray9
178     syn region factorQuotation9 contained matchgroup=hlLevel9 start=/\<\(\(\('\|\$\|\)\[\)\|\[\(let\||\)\)\>/  end=/\<\]\>/ contains=@factorCluster,factorQuotation0,factorArray0
179 endif
180
181 if exists("g:factor_norainbow")
182     syn region factorArray    matchgroup=factorDelimiter start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/  matchgroup=factorDelimiter end=/\<}\>/ contains=ALL
183 else
184     syn region factorArray0           matchgroup=hlLevel0 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray1,factorQuotation1
185     syn region factorArray1 contained matchgroup=hlLevel1 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray2,factorQuotation2
186     syn region factorArray2 contained matchgroup=hlLevel2 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray3,factorQuotation3
187     syn region factorArray3 contained matchgroup=hlLevel3 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray4,factorQuotation4
188     syn region factorArray4 contained matchgroup=hlLevel4 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray5,factorQuotation5
189     syn region factorArray5 contained matchgroup=hlLevel5 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray6,factorQuotation6
190     syn region factorArray6 contained matchgroup=hlLevel6 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray7,factorQuotation7
191     syn region factorArray7 contained matchgroup=hlLevel7 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray8,factorQuotation8
192     syn region factorArray8 contained matchgroup=hlLevel8 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray9,factorQuotation9
193     syn region factorArray9 contained matchgroup=hlLevel9 start=/\<\(\$\|[-a-zA-Z0-9]\+\)\?{\>/ end=/\<}\>/ contains=@factorCluster,factorArray0,factorQuotation0
194 endif
195
196 syn match factorBracketErr /\<\]\>/
197 syn match factorBracketErr /\<}\>/
198
199 syn sync lines=100
200
201 if version >= 508 || !exists("did_factor_syn_inits")
202     if version <= 508
203         let did_factor_syn_inits = 1
204         command -nargs=+ HiLink hi link <args>
205     else
206         command -nargs=+ HiLink hi def link <args>
207     endif
208
209     HiLink factorComment                Comment
210     HiLink factorShebang                Special
211     HiLink factorShebangErr             Error
212     HiLink factorStackEffect            Typedef
213     HiLink factorLiteralStackEffect     Typedef
214     HiLink factorTodo                   Todo
215     HiLink factorInclude                Include
216     HiLink factorRepeat                 Repeat
217     HiLink factorConditional            Conditional
218     HiLink factorKeyword                Keyword
219     HiLink factorCallQuotation          Keyword
220     HiLink factorExecute                Keyword
221     HiLink factorCallNextMethod         Keyword
222     HiLink factorOperator               Operator
223     HiLink factorFrySpecifier           Operator
224     HiLink factorBoolean                Boolean
225     HiLink factorBreakpoint             Debug
226     HiLink factorDefnDelims             Typedef
227     HiLink factorMethodDelims           Typedef
228     HiLink factorGenericDelims          Typedef
229     HiLink factorGenericNDelims         Typedef
230     HiLink factorConstructor            Typedef
231     HiLink factorConstructor2           Typedef
232     HiLink factorPrivate                Special
233     HiLink factorPrivateDefnDelims      Special
234     HiLink factorPrivateMethodDelims    Special
235     HiLink factorPGenericDelims         Special
236     HiLink factorPGenericNDelims        Special
237     HiLink factorString                 String
238     HiLink factorTriString              String
239     HiLink factorSbuf                   String
240     HiLink factorMultiStringContents    String
241     HiLink factorMultiStringDelims      Typedef
242     HiLink factorBracketErr             Error
243     HiLink factorComplex                Number
244     HiLink factorRatio                  Number
245     HiLink factorBinary                 Number
246     HiLink factorBinErr                 Error
247     HiLink factorHex                    Number
248     HiLink factorHexErr                 Error
249     HiLink factorNan                    Number
250     HiLink factorOctal                  Number
251     HiLink factorOctErr                 Error
252     HiLink factorFloat                  Float
253     HiLink factorInt                    Number
254     HiLink factorUsing                  Include
255     HiLink factorQualified              Include
256     HiLink factorQualifiedWith          Include
257     HiLink factorExclude                Include
258     HiLink factorFrom                   Include
259     HiLink factorRename                 Include
260     HiLink factorUse                    Include
261     HiLink factorUnuse                  Include
262     HiLink factorIn                     Define
263     HiLink factorChar                   Character
264     HiLink factorDelimiter              Delimiter
265     HiLink factorBackslash              Special
266     HiLink factorLiteral                Special
267     HiLink factorLiteralBlock           Special
268     HiLink factorDeclaration            Typedef
269     HiLink factorSymbol                 Define
270     HiLink factorSymbols                Define
271     HiLink factorConstant               Define
272     HiLink factorAlias                  Define
273     HiLink factorSingleton              Define
274     HiLink factorSingletons             Define
275     HiLink factorMixin                  Typedef
276     HiLink factorInstance               Typedef
277     HiLink factorHook                   Typedef
278     HiLink factorMain                   Define
279     HiLink factorPostpone               Define
280     HiLink factorDefer                  Define
281     HiLink factorForget                 Define
282     HiLink factorAlien                  Define
283     HiLink factorSlot                   Define
284     HiLink factorIntersection           Typedef
285     HiLink factorTuple                  Typedef
286     HiLink factorUnion                  Typedef
287     HiLink factorStruct                 Typedef
288
289     if &bg == "dark"
290         hi   hlLevel0 ctermfg=red         guifg=red1
291         hi   hlLevel1 ctermfg=yellow      guifg=orange1
292         hi   hlLevel2 ctermfg=green       guifg=yellow1
293         hi   hlLevel3 ctermfg=cyan        guifg=greenyellow
294         hi   hlLevel4 ctermfg=magenta     guifg=green1
295         hi   hlLevel5 ctermfg=red         guifg=springgreen1
296         hi   hlLevel6 ctermfg=yellow      guifg=cyan1
297         hi   hlLevel7 ctermfg=green       guifg=slateblue1
298         hi   hlLevel8 ctermfg=cyan        guifg=magenta1
299         hi   hlLevel9 ctermfg=magenta     guifg=purple1
300     else
301         hi   hlLevel0 ctermfg=red         guifg=red3
302         hi   hlLevel1 ctermfg=darkyellow  guifg=orangered3
303         hi   hlLevel2 ctermfg=darkgreen   guifg=orange2
304         hi   hlLevel3 ctermfg=blue        guifg=yellow3
305         hi   hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
306         hi   hlLevel5 ctermfg=red         guifg=green4
307         hi   hlLevel6 ctermfg=darkyellow  guifg=paleturquoise3
308         hi   hlLevel7 ctermfg=darkgreen   guifg=deepskyblue4
309         hi   hlLevel8 ctermfg=blue        guifg=darkslateblue
310         hi   hlLevel9 ctermfg=darkmagenta guifg=darkviolet
311     endif
312
313     delcommand HiLink
314 endif
315
316 let b:current_syntax = "factor"
317
318 " vim: syntax=vim