vim-polyglot/syntax/mel.vim
2017-09-27 20:43:42 +02:00

113 lines
3.4 KiB
VimL

if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
" 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
" quit when a syntax file was already loaded
if 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.
" Only when an item doesn't have highlighting yet
hi def link melBoolean Boolean
hi def link melFunction Function
hi def link melIdentifier Identifier
hi def link melStatement Statement
hi def link melConditional Conditional
hi def link melRepeat Repeat
hi def link melLabel Label
hi def link melOperator Operator
hi def link melKeyword Keyword
hi def link melException Exception
hi def link melInclude Include
hi def link melType Type
hi def link melStorageClass StorageClass
hi def link melDebug Debug
hi def link melTodo Todo
hi def link melCharSpecial SpecialChar
hi def link melString String
hi def link melInteger Number
hi def link melFloat Float
hi def link melMatrixVector Float
hi def link melComment Comment
hi def link melError Error
hi def link melSpaceError melError
hi def link melCharError melError
hi def link melParenError melError
hi def link melInParen melError
hi def link melCommentError melError
let b:current_syntax = "mel"
endif