forked from aniani/vim
156 lines
8.8 KiB
VimL
156 lines
8.8 KiB
VimL
" Vim syntax file
|
|
" Language: Falcon
|
|
" Maintainer: Steven Oliver <oliver.steven@gmail.com>
|
|
" Website: http://github.com/steveno/vim-files/blob/master/syntax/falcon.vim
|
|
" Credits: Thanks the ruby.vim authors, I borrowed a lot!
|
|
" -------------------------------------------------------------------------------
|
|
" GetLatestVimScripts: 2745 1 :AutoInstall: falcon.vim
|
|
|
|
" When wanted, highlight the trailing whitespace.
|
|
if exists("c_space_errors")
|
|
if !exists("c_no_trail_space_error")
|
|
syn match falconSpaceError "\s\+$"
|
|
endif
|
|
|
|
if !exists("c_no_tab_space_error")
|
|
syn match falconSpaceError " \+\t"me=e-1
|
|
endif
|
|
endif
|
|
|
|
" Symbols
|
|
syn match falconSymbol "\(;\|,\|\.\)"
|
|
syn match falconSymbolOther "\(#\|@\)" display
|
|
|
|
" Operators
|
|
syn match falconOperator "\(+\|-\|\*\|/\|=\|<\|>\|\*\*\|!=\|\~=\)"
|
|
syn match falconOperator "\(<=\|>=\|=>\|\.\.\|<<\|>>\|\"\)"
|
|
|
|
" Clusters
|
|
syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@falconStringSpecial fold
|
|
syn case match
|
|
|
|
" Keywords
|
|
syn keyword falconKeyword all allp any anyp as attributes brigade cascade catch choice class const
|
|
syn keyword falconKeyword continue def directive do list dropping enum eq eval exit export from function
|
|
syn keyword falconKeyword give global has hasnt in init innerfunc lambda launch launch len List list
|
|
syn keyword falconKeyword load notin object pass print printl provides raise return self sender static to
|
|
syn keyword falconKeyword try xamp
|
|
|
|
" Error Type Keywords
|
|
syn keyword falconKeyword CloneError CodeError Error InterruprtedError IoError MathError
|
|
syn keyword falconKeyword ParamError RangeError SyntaxError TraceStep TypeError
|
|
|
|
" Todo
|
|
syn keyword falconTodo DEBUG FIXME NOTE TODO XXX
|
|
|
|
" Conditionals
|
|
syn keyword falconConditional and case default else end if iff
|
|
syn keyword falconConditional elif or not switch select
|
|
syn match falconConditional "end\s\if"
|
|
|
|
" Loops
|
|
syn keyword falconRepeat break for loop forfirst forlast formiddle while
|
|
|
|
" Booleans
|
|
syn keyword falconBool true false
|
|
|
|
" Constants
|
|
syn keyword falconConst PI E nil
|
|
|
|
" Comments
|
|
syn match falconCommentSkip contained "^\s*\*\($\|\s\+\)"
|
|
syn region falconComment start="/\*" end="\*/" contains=@falconCommentGroup,falconSpaceError,falconTodo
|
|
syn region falconCommentL start="//" end="$" keepend contains=@falconCommentGroup,falconSpaceError,falconTodo
|
|
syn match falconSharpBang "\%^#!.*" display
|
|
syn sync ccomment falconComment
|
|
|
|
" Numbers
|
|
syn match falconNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
|
|
syn match falconNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=falconIntLiteral,falconFloatLiteral,falconHexadecimal,falconOctal
|
|
syn match falconHexadecimal contained "\<0x\x\+\>"
|
|
syn match falconOctal contained "\<0\o\+\>"
|
|
syn match falconIntLiteral contained "[+-]\<d\+\(\d\+\)\?\>"
|
|
syn match falconFloatLiteral contained "[+-]\=\d\+\.\d*"
|
|
syn match falconFloatLiteral contained "[+-]\=\d*\.\d*"
|
|
|
|
" Includes
|
|
syn keyword falconInclude load import
|
|
|
|
" Expression Substitution and Backslash Notation
|
|
syn match falconStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
|
|
syn match falconStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
|
|
syn region falconSymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
|
|
|
|
" Normal String and Shell Command Output
|
|
syn region falconString matchgroup=falconStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" contains=falconStringEscape fold
|
|
syn region falconString matchgroup=falconStringDelimiter start="'" end="'" skip="\\\\\|\\'" fold
|
|
syn region falconString matchgroup=falconStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=falconStringEscape fold
|
|
|
|
" Generalized Single Quoted String, Symbol and Array of Strings
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
|
|
syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
|
|
syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]{" end="}" skip="\\\\\|\\}" fold contains=falconDelimEscape
|
|
syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]<" end=">" skip="\\\\\|\\>" fold contains=falconDelimEscape
|
|
syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s]\[" end="\]" skip="\\\\\|\\\]" fold contains=falconDelimEscape
|
|
syn region falconSymbol matchgroup=falconSymbolDelimiter start="%[s](" end=")" skip="\\\\\|\\)" fold contains=falconDelimEscape
|
|
|
|
" Generalized Double Quoted String and Array of Strings and Shell Command Output
|
|
syn region falconString matchgroup=falconStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=falconStringEscape fold
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=falconStringEscape,falconDelimEscape fold
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=falconStringEscape,falconDelimEscape fold
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=falconStringEscape,falconDelimEscape fold
|
|
syn region falconString matchgroup=falconStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=falconStringEscape,falconDelimEscape fold
|
|
|
|
syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<\z(\h\w*\)\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
|
|
syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<"\z([^"]*\)"\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
|
|
syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<'\z([^']*\)'\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ fold keepend
|
|
syn region falconString start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<`\z([^`]*\)`\ze+hs=s+2 matchgroup=falconStringDelimiter end=+^\z1$+ contains=falconStringEscape fold keepend
|
|
|
|
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
|
|
syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-"\z([^"]*\)"\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
|
|
syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-'\z([^']*\)'\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ fold keepend
|
|
syn region falconString start=+\%(\%(class\s*\|\%([]}).]\|::\)\)\_s*\|\w\)\@<!<<-`\z([^`]*\)`\ze+hs=s+3 matchgroup=falconStringDelimiter end=+^\s*\zs\z1$+ contains=falconStringEscape fold keepend
|
|
|
|
" Syntax Synchronizing
|
|
syn sync minlines=10 maxlines=100
|
|
|
|
" Define the default highlighting
|
|
if !exists("did_falcon_syn_inits")
|
|
command -nargs=+ HiLink hi def link <args>
|
|
|
|
HiLink falconKeyword Keyword
|
|
HiLink falconCommentString String
|
|
HiLink falconTodo Todo
|
|
HiLink falconConditional Keyword
|
|
HiLink falconRepeat Repeat
|
|
HiLink falconcommentSkip Comment
|
|
HiLink falconComment Comment
|
|
HiLink falconCommentL Comment
|
|
HiLink falconConst Constant
|
|
HiLink falconOperator Operator
|
|
HiLink falconSymbol Normal
|
|
HiLink falconSpaceError Error
|
|
HiLink falconHexadecimal Number
|
|
HiLink falconOctal Number
|
|
HiLink falconIntLiteral Number
|
|
HiLink falconFloatLiteral Float
|
|
HiLink falconStringEscape Special
|
|
HiLink falconStringDelimiter Delimiter
|
|
HiLink falconString String
|
|
HiLink falconBool Constant
|
|
HiLink falconSharpBang PreProc
|
|
HiLink falconInclude Include
|
|
HiLink falconSymbol Constant
|
|
HiLink falconSymbolOther Delimiter
|
|
delcommand HiLink
|
|
endif
|
|
|
|
let b:current_syntax = "falcon"
|
|
|
|
" vim: set sw=4 sts=4 et tw=80 :
|