blob: dab894865cacc1082c397c0445a7d7af24dacf30 [file] [log] [blame]
" Vim syntax file
" Language: MEL (Maya Extension Language)
" Maintainer: Robert Minsk <egbert@centropolisfx.com>
" Last Change: May 27 1999
" Based on: Bram Moolenaar <Bram@vim.org> C syntax file
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" when wanted, highlight trailing white space and spaces before tabs
if exists("mel_space_errors")
sy match melSpaceError "\s\+$"
sy match melSpaceError " \+\t"me=e-1
endif
" A bunch of usefull MEL keyworks
sy keyword melBoolean true false yes no on off
sy keyword melFunction proc
sy match melIdentifier "\$\(\a\|_\)\w*"
sy keyword melStatement break continue return
sy keyword melConditional if else switch
sy keyword melRepeat while for do in
sy keyword melLabel case default
sy keyword melOperator size eval env exists whatIs
sy keyword melKeyword alias
sy keyword melException catch error warning
sy keyword melInclude source
sy keyword melType int float string vector matrix
sy keyword melStorageClass global
sy keyword melDebug trace
sy keyword melTodo contained TODO FIXME XXX
" MEL data types
sy match melCharSpecial contained "\\[ntr\\"]"
sy match melCharError contained "\\[^ntr\\"]"
sy region melString start=+"+ skip=+\\"+ end=+"+ contains=melCharSpecial,melCharError
sy case ignore
sy match melInteger "\<\d\+\(e[-+]\=\d\+\)\=\>"
sy match melFloat "\<\d\+\(e[-+]\=\d\+\)\=f\>"
sy match melFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=f\=\>"
sy match melFloat "\.\d\+\(e[-+]\=\d\+\)\=f\=\>"
sy case match
sy match melCommaSemi contained "[,;]"
sy region melMatrixVector start=/<</ end=/>>/ contains=melInteger,melFloat,melIdentifier,melCommaSemi
sy cluster melGroup contains=melFunction,melStatement,melConditional,melLabel,melKeyword,melStorageClass,melTODO,melCharSpecial,melCharError,melCommaSemi
" catch errors caused by wrong parenthesis
sy region melParen transparent start='(' end=')' contains=ALLBUT,@melGroup,melParenError,melInParen
sy match melParenError ")"
sy match melInParen contained "[{}]"
" comments
sy region melComment start="/\*" end="\*/" contains=melTodo,melSpaceError
sy match melComment "//.*" contains=melTodo,melSpaceError
sy match melCommentError "\*/"
sy region melQuestionColon matchgroup=melConditional transparent start='?' end=':' contains=ALLBUT,@melGroup
if !exists("mel_minlines")
let mel_minlines=15
endif
exec "sy sync ccomment melComment minlines=" . mel_minlines
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_mel_syntax_inits")
if version < 508
let did_mel_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink melBoolean Boolean
HiLink melFunction Function
HiLink melIdentifier Identifier
HiLink melStatement Statement
HiLink melConditional Conditional
HiLink melRepeat Repeat
HiLink melLabel Label
HiLink melOperator Operator
HiLink melKeyword Keyword
HiLink melException Exception
HiLink melInclude Include
HiLink melType Type
HiLink melStorageClass StorageClass
HiLink melDebug Debug
HiLink melTodo Todo
HiLink melCharSpecial SpecialChar
HiLink melString String
HiLink melInteger Number
HiLink melFloat Float
HiLink melMatrixVector Float
HiLink melComment Comment
HiLink melError Error
HiLink melSpaceError melError
HiLink melCharError melError
HiLink melParenError melError
HiLink melInParen melError
HiLink melCommentError melError
delcommand HiLink
endif
let b:current_syntax = "mel"