xref: /vim-8.2.3635/runtime/syntax/falcon.vim (revision 17fb0e89)
1" Vim syntax file
2" Language:     Falcon
3" Maintainer:   Steven Oliver <[email protected]>
4" Website:      http://github.com/steveno/vim-files/blob/master/syntax/falcon.vim
5" Credits:      Thanks the ruby.vim authors, I borrowed a lot!
6" -------------------------------------------------------------------------------
7" GetLatestVimScripts: 2745 1 :AutoInstall: falcon.vim
8
9" When wanted, highlight the trailing whitespace.
10if exists("c_space_errors")
11    if !exists("c_no_trail_space_error")
12        syn match falconSpaceError "\s\+$"
13    endif
14
15    if !exists("c_no_tab_space_error")
16        syn match falconSpaceError " \+\t"me=e-1
17    endif
18endif
19
20" Symbols
21syn match falconSymbol "\(;\|,\|\.\)"
22syn match falconSymbolOther "\(#\|@\)" display
23
24" Operators
25syn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)"
26syn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)"
27
28" Clusters
29syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@falconStringSpecial fold
30syn case match
31
32" Keywords
33syn keyword falconKeyword all allp any anyp as attributes brigade cascade catch choice class const
34syn keyword falconKeyword continue def directive do list dropping enum eq eval exit export from function
35syn keyword falconKeyword give global has hasnt in init innerfunc lambda launch launch len List list
36syn keyword falconKeyword load notin object pass print printl provides raise return self sender static to
37syn keyword falconKeyword try xamp
38
39" Error Type Keywords
40syn keyword falconKeyword CloneError CodeError Error InterruprtedError IoError MathError
41syn keyword falconKeyword ParamError RangeError SyntaxError TraceStep TypeError
42
43" Todo
44syn keyword falconTodo DEBUG FIXME NOTE TODO XXX
45
46" Conditionals
47syn keyword falconConditional and case default else end if iff
48syn keyword falconConditional elif or not switch select
49syn match   falconConditional "end\s\if"
50
51" Loops
52syn keyword falconRepeat break for loop forfirst forlast formiddle while
53
54" Booleans
55syn keyword falconBool true false
56
57" Constants
58syn keyword falconConst PI E nil
59
60" Comments
61syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)"
62syn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo
63syn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo
64syn match falconSharpBang "\%^#!.*" display
65syn sync ccomment falconComment
66
67" Numbers
68syn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
69syn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
70syn match falconHexadecimal contained "\<0x\x\+\>"
71syn match falconOctal contained "\<0\o\+\>"
72syn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>"
73syn match falconFloatLiteral contained "[+-]\=\d\+\.\d*"
74syn match falconFloatLiteral contained "[+-]\=\d*\.\d*"
75
76" Includes
77syn keyword falconInclude load import
78
79" Expression Substitution and Backslash Notation
80syn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
81syn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
82syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
83
84" Normal String and Shell Command Output
85syn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
86syn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold
87syn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold
88
89" Generalized Single Quoted String, Symbol and Array of Strings
90syn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"  end="\z1" skip="\\\\\|\\\z1" fold
91syn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
92syn region falconString matchgroup=falconStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
93syn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
94syn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
95syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
96syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
97syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
98syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
99syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
100
101" Generalized Double Quoted String and Array of Strings and Shell Command Output
102syn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
103syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
104syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold
105syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold
106syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold
107syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold
108
109syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
110syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2  matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
111syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2  matchgroup=falconStringDelimiter end=+^\z1$+ fold keepend
112syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2  matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
113
114syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
115syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3  matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
116syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3  matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ fold keepend
117syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3  matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
118
119" Syntax Synchronizing
120syn sync minlines=10 maxlines=100
121
122" Define the default highlighting
123if !exists("did_falcon_syn_inits")
124    command -nargs=+ HiLink hi def link <args>
125
126    HiLink falconKeyword          Keyword
127    HiLink falconCommentString    String
128    HiLink falconTodo             Todo
129    HiLink falconConditional      Keyword
130    HiLink falconRepeat           Repeat
131    HiLink falconcommentSkip      Comment
132    HiLink falconComment          Comment
133    HiLink falconCommentL         Comment
134    HiLink falconConst            Constant
135    HiLink falconOperator         Operator
136    HiLink falconSymbol           Normal
137    HiLink falconSpaceError       Error
138    HiLink falconHexadecimal      Number
139    HiLink falconOctal            Number
140    HiLink falconIntLiteral       Number
141    HiLink falconFloatLiteral     Float
142    HiLink falconStringEscape     Special
143    HiLink falconStringDelimiter  Delimiter
144    HiLink falconString           String
145    HiLink falconBool             Constant
146    HiLink falconSharpBang        PreProc
147    HiLink falconInclude          Include
148    HiLink falconSymbol           Constant
149    HiLink falconSymbolOther      Delimiter
150    delcommand HiLink
151endif
152
153let b:current_syntax = "falcon"
154
155" vim: set sw=4 sts=4 et tw=80 :
156