xref: /vim-8.2.3635/runtime/syntax/falcon.vim (revision f37506f6)
14a74803eSBram Moolenaar" Vim syntax file
24a74803eSBram Moolenaar" Language:     Falcon
34a74803eSBram Moolenaar" Maintainer:   Steven Oliver <[email protected]>
44a74803eSBram Moolenaar" Website:      http://github.com/steveno/vim-files/blob/master/syntax/falcon.vim
54a74803eSBram Moolenaar" Credits:      Thanks the ruby.vim authors, I borrowed a lot!
6203d04d7SBram Moolenaar"               Thanks to the lisp authors for the rainbow code!
74a74803eSBram Moolenaar" -------------------------------------------------------------------------------
84a74803eSBram Moolenaar
94a74803eSBram Moolenaar" When wanted, highlight the trailing whitespace.
104a74803eSBram Moolenaarif exists("c_space_errors")
114a74803eSBram Moolenaar    if !exists("c_no_trail_space_error")
124a74803eSBram Moolenaar        syn match falconSpaceError "\s\+$"
134a74803eSBram Moolenaar    endif
144a74803eSBram Moolenaar
154a74803eSBram Moolenaar    if !exists("c_no_tab_space_error")
164a74803eSBram Moolenaar        syn match falconSpaceError " \+\t"me=e-1
174a74803eSBram Moolenaar    endif
184a74803eSBram Moolenaarendif
194a74803eSBram Moolenaar
204a74803eSBram Moolenaar" Symbols
214a74803eSBram Moolenaarsyn match falconSymbol "\(;\|,\|\.\)"
224a74803eSBram Moolenaarsyn match falconSymbolOther "\(#\|@\)" display
234a74803eSBram Moolenaar
244a74803eSBram Moolenaar" Operators
254a74803eSBram Moolenaarsyn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)"
264a74803eSBram Moolenaarsyn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)"
274a74803eSBram Moolenaar
284a74803eSBram Moolenaar" Clusters
294a74803eSBram Moolenaarsyn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@falconStringSpecial fold
304a74803eSBram Moolenaarsyn case match
314a74803eSBram Moolenaar
324a74803eSBram Moolenaar" Keywords
334a74803eSBram Moolenaarsyn keyword falconKeyword all allp any anyp as attributes brigade cascade catch choice class const
344a74803eSBram Moolenaarsyn keyword falconKeyword continue def directive do list dropping enum eq eval exit export from function
354a74803eSBram Moolenaarsyn keyword falconKeyword give global has hasnt in init innerfunc lambda launch launch len List list
364a74803eSBram Moolenaarsyn keyword falconKeyword load notin object pass print printl provides raise return self sender static to
374a74803eSBram Moolenaarsyn keyword falconKeyword try xamp
384a74803eSBram Moolenaar
394a74803eSBram Moolenaar" Error Type Keywords
404a74803eSBram Moolenaarsyn keyword falconKeyword CloneError CodeError Error InterruprtedError IoError MathError
414a74803eSBram Moolenaarsyn keyword falconKeyword ParamError RangeError SyntaxError TraceStep TypeError
424a74803eSBram Moolenaar
434a74803eSBram Moolenaar" Todo
444a74803eSBram Moolenaarsyn keyword falconTodo DEBUG FIXME NOTE TODO XXX
454a74803eSBram Moolenaar
464a74803eSBram Moolenaar" Conditionals
474a74803eSBram Moolenaarsyn keyword falconConditional and case default else end if iff
484a74803eSBram Moolenaarsyn keyword falconConditional elif or not switch select
494a74803eSBram Moolenaarsyn match   falconConditional "end\s\if"
504a74803eSBram Moolenaar
514a74803eSBram Moolenaar" Loops
524a74803eSBram Moolenaarsyn keyword falconRepeat break for loop forfirst forlast formiddle while
534a74803eSBram Moolenaar
544a74803eSBram Moolenaar" Booleans
554a74803eSBram Moolenaarsyn keyword falconBool true false
564a74803eSBram Moolenaar
574a74803eSBram Moolenaar" Constants
584a74803eSBram Moolenaarsyn keyword falconConst PI E nil
59203d04d7SBram Moolenaarsyn match   falconConstant  "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!"
604a74803eSBram Moolenaar
614a74803eSBram Moolenaar" Comments
624a74803eSBram Moolenaarsyn match falconCommentSkip contained "^\s*\*\($\|\s\+\)"
634a74803eSBram Moolenaarsyn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo
644a74803eSBram Moolenaarsyn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo
654a74803eSBram Moolenaarsyn match falconSharpBang "\%^#!.*" display
664a74803eSBram Moolenaarsyn sync ccomment falconComment
674a74803eSBram Moolenaar
684a74803eSBram Moolenaar" Numbers
694a74803eSBram Moolenaarsyn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
704a74803eSBram Moolenaarsyn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
714a74803eSBram Moolenaarsyn match falconHexadecimal contained "\<0x\x\+\>"
724a74803eSBram Moolenaarsyn match falconOctal contained "\<0\o\+\>"
734a74803eSBram Moolenaarsyn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>"
744a74803eSBram Moolenaarsyn match falconFloatLiteral contained "[+-]\=\d\+\.\d*"
754a74803eSBram Moolenaarsyn match falconFloatLiteral contained "[+-]\=\d*\.\d*"
764a74803eSBram Moolenaar
774a74803eSBram Moolenaar" Includes
784a74803eSBram Moolenaarsyn keyword falconInclude load import
794a74803eSBram Moolenaar
804a74803eSBram Moolenaar" Expression Substitution and Backslash Notation
814a74803eSBram Moolenaarsyn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
824a74803eSBram Moolenaarsyn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
834a74803eSBram Moolenaarsyn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
844a74803eSBram Moolenaar
854a74803eSBram Moolenaar" Normal String and Shell Command Output
864a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
874a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold
884a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold
894a74803eSBram Moolenaar
904a74803eSBram Moolenaar" Generalized Single Quoted String, Symbol and Array of Strings
914a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"  end="\z1" skip="\\\\\|\\\z1" fold
924a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
934a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
944a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
954a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
964a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
974a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
984a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
994a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
1004a74803eSBram Moolenaarsyn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
1014a74803eSBram Moolenaar
1024a74803eSBram Moolenaar" Generalized Double Quoted String and Array of Strings and Shell Command Output
1034a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
1044a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
1054a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold
1064a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold
1074a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold
1084a74803eSBram Moolenaarsyn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold
1094a74803eSBram Moolenaar
1104a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
1114a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2  matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
1124a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2  matchgroup=falconStringDelimiter end=+^\z1$+ fold keepend
1134a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2  matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
1144a74803eSBram Moolenaar
1154a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
1164a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3  matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
1174a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3  matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ fold keepend
1184a74803eSBram Moolenaarsyn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3  matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
1194a74803eSBram Moolenaar
120203d04d7SBram Moolenaar" Falcon rainbox to highlight parens in varying colors
121203d04d7SBram Moolenaarif exists("g:falcon_rainbow") && g:falcon_rainbow != 0
122203d04d7SBram Moolenaar    syn region falconParen0           matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen1
123203d04d7SBram Moolenaar    syn region falconParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen2
124203d04d7SBram Moolenaar    syn region falconParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen3
125203d04d7SBram Moolenaar    syn region falconParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen4
126203d04d7SBram Moolenaar    syn region falconParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen5
127203d04d7SBram Moolenaar    syn region falconParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen6
128203d04d7SBram Moolenaar    syn region falconParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen7
129203d04d7SBram Moolenaar    syn region falconParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen8
130203d04d7SBram Moolenaar    syn region falconParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen9
131203d04d7SBram Moolenaar    syn region falconParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen0
132203d04d7SBram Moolenaarendif
133203d04d7SBram Moolenaar
134203d04d7SBram Moolenaar" Setup the colors for the rainbox
135203d04d7SBram Moolenaarif exists("g:falcon_rainbow") && g:falcon_rainbow != 0
136203d04d7SBram Moolenaar    if &bg == "dark"
137203d04d7SBram Moolenaar        hi def hlLevel0 ctermfg=red         guifg=red1
138203d04d7SBram Moolenaar        hi def hlLevel1 ctermfg=yellow      guifg=orange1
139203d04d7SBram Moolenaar        hi def hlLevel2 ctermfg=green       guifg=yellow1
140203d04d7SBram Moolenaar        hi def hlLevel3 ctermfg=cyan        guifg=greenyellow
141203d04d7SBram Moolenaar        hi def hlLevel4 ctermfg=magenta     guifg=green1
142203d04d7SBram Moolenaar        hi def hlLevel5 ctermfg=red         guifg=springgreen1
143203d04d7SBram Moolenaar        hi def hlLevel6 ctermfg=yellow      guifg=cyan1
144203d04d7SBram Moolenaar        hi def hlLevel7 ctermfg=green       guifg=slateblue1
145203d04d7SBram Moolenaar        hi def hlLevel8 ctermfg=cyan        guifg=magenta1
146203d04d7SBram Moolenaar        hi def hlLevel9 ctermfg=magenta     guifg=purple1
147203d04d7SBram Moolenaar    else
148203d04d7SBram Moolenaar        hi def hlLevel0 ctermfg=red         guifg=red3
149203d04d7SBram Moolenaar        hi def hlLevel1 ctermfg=darkyellow  guifg=orangered3
150203d04d7SBram Moolenaar        hi def hlLevel2 ctermfg=darkgreen   guifg=orange2
151203d04d7SBram Moolenaar        hi def hlLevel3 ctermfg=blue        guifg=yellow3
152203d04d7SBram Moolenaar        hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
153203d04d7SBram Moolenaar        hi def hlLevel5 ctermfg=red         guifg=green4
154203d04d7SBram Moolenaar        hi def hlLevel6 ctermfg=darkyellow  guifg=paleturquoise3
155203d04d7SBram Moolenaar        hi def hlLevel7 ctermfg=darkgreen   guifg=deepskyblue4
156203d04d7SBram Moolenaar        hi def hlLevel8 ctermfg=blue        guifg=darkslateblue
157203d04d7SBram Moolenaar        hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
158203d04d7SBram Moolenaar    endif
159203d04d7SBram Moolenaarendif
160203d04d7SBram Moolenaar
1614a74803eSBram Moolenaar" Syntax Synchronizing
1624a74803eSBram Moolenaarsyn sync minlines=10 maxlines=100
1634a74803eSBram Moolenaar
1644a74803eSBram Moolenaar" Define the default highlighting
1654a74803eSBram Moolenaarif !exists("did_falcon_syn_inits")
1664a74803eSBram Moolenaar
167*f37506f6SBram Moolenaar    hi def link falconKeyword          Keyword
168*f37506f6SBram Moolenaar    hi def link falconCommentString    String
169*f37506f6SBram Moolenaar    hi def link falconTodo             Todo
170*f37506f6SBram Moolenaar    hi def link falconConditional      Keyword
171*f37506f6SBram Moolenaar    hi def link falconRepeat           Repeat
172*f37506f6SBram Moolenaar    hi def link falconcommentSkip      Comment
173*f37506f6SBram Moolenaar    hi def link falconComment          Comment
174*f37506f6SBram Moolenaar    hi def link falconCommentL         Comment
175*f37506f6SBram Moolenaar    hi def link falconConst            Constant
176*f37506f6SBram Moolenaar    hi def link falconConstants        Constant
177*f37506f6SBram Moolenaar    hi def link falconOperator         Operator
178*f37506f6SBram Moolenaar    hi def link falconSymbol           Normal
179*f37506f6SBram Moolenaar    hi def link falconSpaceError       Error
180*f37506f6SBram Moolenaar    hi def link falconHexadecimal      Number
181*f37506f6SBram Moolenaar    hi def link falconOctal            Number
182*f37506f6SBram Moolenaar    hi def link falconIntLiteral       Number
183*f37506f6SBram Moolenaar    hi def link falconFloatLiteral     Float
184*f37506f6SBram Moolenaar    hi def link falconStringEscape     Special
185*f37506f6SBram Moolenaar    hi def link falconStringDelimiter  Delimiter
186*f37506f6SBram Moolenaar    hi def link falconString           String
187*f37506f6SBram Moolenaar    hi def link falconBool             Constant
188*f37506f6SBram Moolenaar    hi def link falconSharpBang        PreProc
189*f37506f6SBram Moolenaar    hi def link falconInclude          Include
190*f37506f6SBram Moolenaar    hi def link falconSymbol           Constant
191*f37506f6SBram Moolenaar    hi def link falconSymbolOther      Delimiter
1924a74803eSBram Moolenaarendif
1934a74803eSBram Moolenaar
1944a74803eSBram Moolenaarlet b:current_syntax = "falcon"
1954a74803eSBram Moolenaar
1964a74803eSBram Moolenaar" vim: set sw=4 sts=4 et tw=80 :
197203d04d7SBram Moolenaar
198