falcon.vim 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. " Vim syntax file
  2. " Language: Falcon
  3. " Maintainer: Steven Oliver <oliver.steven@gmail.com>
  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. " Thanks to the lisp authors for the rainbow code!
  7. " -------------------------------------------------------------------------------
  8. " When wanted, highlight the trailing whitespace.
  9. if exists("c_space_errors")
  10. if !exists("c_no_trail_space_error")
  11. syn match falconSpaceError "\s\+$"
  12. endif
  13. if !exists("c_no_tab_space_error")
  14. syn match falconSpaceError " \+\t"me=e-1
  15. endif
  16. endif
  17. " Symbols
  18. syn match falconSymbol "\(;\|,\|\.\)"
  19. syn match falconSymbolOther "\(#\|@\)" display
  20. " Operators
  21. syn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)"
  22. syn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)"
  23. " Clusters
  24. syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@falconStringSpecial fold
  25. syn case match
  26. " Keywords
  27. syn keyword falconKeyword all allp any anyp as attributes brigade cascade catch choice class const
  28. syn keyword falconKeyword continue def directive do list dropping enum eq eval exit export from function
  29. syn keyword falconKeyword give global has hasnt in init innerfunc lambda launch launch len List list
  30. syn keyword falconKeyword load notin object pass print printl provides raise return self sender static to
  31. syn keyword falconKeyword try xamp
  32. " Error Type Keywords
  33. syn keyword falconKeyword CloneError CodeError Error InterruprtedError IoError MathError
  34. syn keyword falconKeyword ParamError RangeError SyntaxError TraceStep TypeError
  35. " Todo
  36. syn keyword falconTodo DEBUG FIXME NOTE TODO XXX
  37. " Conditionals
  38. syn keyword falconConditional and case default else end if iff
  39. syn keyword falconConditional elif or not switch select
  40. syn match falconConditional "end\s\if"
  41. " Loops
  42. syn keyword falconRepeat break for loop forfirst forlast formiddle while
  43. " Booleans
  44. syn keyword falconBool true false
  45. " Constants
  46. syn keyword falconConst PI E nil
  47. syn match falconConstant "\%(\%([.@$]\@<!\.\)\@<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=\%(\s*(\)\@!"
  48. " Comments
  49. syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)"
  50. syn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo
  51. syn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo
  52. syn match falconSharpBang "\%^#!.*" display
  53. syn sync ccomment falconComment
  54. " Numbers
  55. syn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
  56. syn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
  57. syn match falconHexadecimal contained "\<0x\x\+\>"
  58. syn match falconOctal contained "\<0\o\+\>"
  59. syn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>"
  60. syn match falconFloatLiteral contained "[+-]\=\d\+\.\d*"
  61. syn match falconFloatLiteral contained "[+-]\=\d*\.\d*"
  62. " Includes
  63. syn keyword falconInclude load import
  64. " Expression Substitution and Backslash Notation
  65. syn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
  66. syn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
  67. syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
  68. " Normal String and Shell Command Output
  69. syn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
  70. syn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold
  71. syn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold
  72. " Generalized Single Quoted String, Symbol and Array of Strings
  73. syn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
  74. syn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
  75. syn region falconString matchgroup=falconStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
  76. syn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
  77. syn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
  78. syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
  79. syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
  80. syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
  81. syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
  82. syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
  83. " Generalized Double Quoted String and Array of Strings and Shell Command Output
  84. syn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
  85. syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
  86. syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold
  87. syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold
  88. syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold
  89. syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold
  90. syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
  91. syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
  92. syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ fold keepend
  93. syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
  94. syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-\z(\h\w*\)\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
  95. syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
  96. syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ fold keepend
  97. syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
  98. " Falcon rainbox to highlight parens in varying colors
  99. if exists("g:falcon_rainbow") && g:falcon_rainbow != 0
  100. syn region falconParen0 matchgroup=hlLevel0 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen1
  101. syn region falconParen1 contained matchgroup=hlLevel1 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen2
  102. syn region falconParen2 contained matchgroup=hlLevel2 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen3
  103. syn region falconParen3 contained matchgroup=hlLevel3 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen4
  104. syn region falconParen4 contained matchgroup=hlLevel4 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen5
  105. syn region falconParen5 contained matchgroup=hlLevel5 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen6
  106. syn region falconParen6 contained matchgroup=hlLevel6 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen7
  107. syn region falconParen7 contained matchgroup=hlLevel7 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen8
  108. syn region falconParen8 contained matchgroup=hlLevel8 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen9
  109. syn region falconParen9 contained matchgroup=hlLevel9 start="`\=(" end=")" skip="|.\{-}|" contains=@falconListCluster,falconParen0
  110. endif
  111. " Setup the colors for the rainbox
  112. if exists("g:falcon_rainbow") && g:falcon_rainbow != 0
  113. if &bg == "dark"
  114. hi def hlLevel0 ctermfg=red guifg=red1
  115. hi def hlLevel1 ctermfg=yellow guifg=orange1
  116. hi def hlLevel2 ctermfg=green guifg=yellow1
  117. hi def hlLevel3 ctermfg=cyan guifg=greenyellow
  118. hi def hlLevel4 ctermfg=magenta guifg=green1
  119. hi def hlLevel5 ctermfg=red guifg=springgreen1
  120. hi def hlLevel6 ctermfg=yellow guifg=cyan1
  121. hi def hlLevel7 ctermfg=green guifg=slateblue1
  122. hi def hlLevel8 ctermfg=cyan guifg=magenta1
  123. hi def hlLevel9 ctermfg=magenta guifg=purple1
  124. else
  125. hi def hlLevel0 ctermfg=red guifg=red3
  126. hi def hlLevel1 ctermfg=darkyellow guifg=orangered3
  127. hi def hlLevel2 ctermfg=darkgreen guifg=orange2
  128. hi def hlLevel3 ctermfg=blue guifg=yellow3
  129. hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
  130. hi def hlLevel5 ctermfg=red guifg=green4
  131. hi def hlLevel6 ctermfg=darkyellow guifg=paleturquoise3
  132. hi def hlLevel7 ctermfg=darkgreen guifg=deepskyblue4
  133. hi def hlLevel8 ctermfg=blue guifg=darkslateblue
  134. hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
  135. endif
  136. endif
  137. " Syntax Synchronizing
  138. syn sync minlines=10 maxlines=100
  139. " Define the default highlighting
  140. if !exists("did_falcon_syn_inits")
  141. hi def link falconKeyword Keyword
  142. hi def link falconCommentString String
  143. hi def link falconTodo Todo
  144. hi def link falconConditional Keyword
  145. hi def link falconRepeat Repeat
  146. hi def link falconcommentSkip Comment
  147. hi def link falconComment Comment
  148. hi def link falconCommentL Comment
  149. hi def link falconConst Constant
  150. hi def link falconConstants Constant
  151. hi def link falconOperator Operator
  152. hi def link falconSymbol Normal
  153. hi def link falconSpaceError Error
  154. hi def link falconHexadecimal Number
  155. hi def link falconOctal Number
  156. hi def link falconIntLiteral Number
  157. hi def link falconFloatLiteral Float
  158. hi def link falconStringEscape Special
  159. hi def link falconStringDelimiter Delimiter
  160. hi def link falconString String
  161. hi def link falconBool Constant
  162. hi def link falconSharpBang PreProc
  163. hi def link falconInclude Include
  164. hi def link falconSymbol Constant
  165. hi def link falconSymbolOther Delimiter
  166. endif
  167. let b:current_syntax = "falcon"
  168. " vim: set sw=4 sts=4 et tw=80 :