blob: dab894865cacc1082c397c0445a7d7af24dacf30 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: MEL (Maya Extension Language)
3" Maintainer: Robert Minsk <egbert@centropolisfx.com>
4" Last Change: May 27 1999
5" Based on: Bram Moolenaar <Bram@vim.org> C syntax file
6
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9if version < 600
10 syntax clear
11elseif exists("b:current_syntax")
12 finish
13endif
14
15" when wanted, highlight trailing white space and spaces before tabs
16if exists("mel_space_errors")
17 sy match melSpaceError "\s\+$"
18 sy match melSpaceError " \+\t"me=e-1
19endif
20
21" A bunch of usefull MEL keyworks
22sy keyword melBoolean true false yes no on off
23
24sy keyword melFunction proc
25sy match melIdentifier "\$\(\a\|_\)\w*"
26
27sy keyword melStatement break continue return
28sy keyword melConditional if else switch
29sy keyword melRepeat while for do in
30sy keyword melLabel case default
31sy keyword melOperator size eval env exists whatIs
32sy keyword melKeyword alias
33sy keyword melException catch error warning
34
35sy keyword melInclude source
36
37sy keyword melType int float string vector matrix
38sy keyword melStorageClass global
39
40sy keyword melDebug trace
41
42sy keyword melTodo contained TODO FIXME XXX
43
44" MEL data types
45sy match melCharSpecial contained "\\[ntr\\"]"
46sy match melCharError contained "\\[^ntr\\"]"
47
48sy region melString start=+"+ skip=+\\"+ end=+"+ contains=melCharSpecial,melCharError
49
50sy case ignore
51sy match melInteger "\<\d\+\(e[-+]\=\d\+\)\=\>"
52sy match melFloat "\<\d\+\(e[-+]\=\d\+\)\=f\>"
53sy match melFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=f\=\>"
54sy match melFloat "\.\d\+\(e[-+]\=\d\+\)\=f\=\>"
55sy case match
56
57sy match melCommaSemi contained "[,;]"
58sy region melMatrixVector start=/<</ end=/>>/ contains=melInteger,melFloat,melIdentifier,melCommaSemi
59
60sy cluster melGroup contains=melFunction,melStatement,melConditional,melLabel,melKeyword,melStorageClass,melTODO,melCharSpecial,melCharError,melCommaSemi
61
62" catch errors caused by wrong parenthesis
63sy region melParen transparent start='(' end=')' contains=ALLBUT,@melGroup,melParenError,melInParen
64sy match melParenError ")"
65sy match melInParen contained "[{}]"
66
67" comments
68sy region melComment start="/\*" end="\*/" contains=melTodo,melSpaceError
69sy match melComment "//.*" contains=melTodo,melSpaceError
70sy match melCommentError "\*/"
71
72sy region melQuestionColon matchgroup=melConditional transparent start='?' end=':' contains=ALLBUT,@melGroup
73
74if !exists("mel_minlines")
75 let mel_minlines=15
76endif
77exec "sy sync ccomment melComment minlines=" . mel_minlines
78
79" Define the default highlighting.
80" For version 5.7 and earlier: only when not done already
81" For version 5.8 and later: only when an item doesn't have highlighting yet
82if version >= 508 || !exists("did_mel_syntax_inits")
83 if version < 508
84 let did_mel_syntax_inits = 1
85 command -nargs=+ HiLink hi link <args>
86 else
87 command -nargs=+ HiLink hi def link <args>
88 endif
89
90 HiLink melBoolean Boolean
91 HiLink melFunction Function
92 HiLink melIdentifier Identifier
93 HiLink melStatement Statement
94 HiLink melConditional Conditional
95 HiLink melRepeat Repeat
96 HiLink melLabel Label
97 HiLink melOperator Operator
98 HiLink melKeyword Keyword
99 HiLink melException Exception
100 HiLink melInclude Include
101 HiLink melType Type
102 HiLink melStorageClass StorageClass
103 HiLink melDebug Debug
104 HiLink melTodo Todo
105 HiLink melCharSpecial SpecialChar
106 HiLink melString String
107 HiLink melInteger Number
108 HiLink melFloat Float
109 HiLink melMatrixVector Float
110 HiLink melComment Comment
111 HiLink melError Error
112 HiLink melSpaceError melError
113 HiLink melCharError melError
114 HiLink melParenError melError
115 HiLink melInParen melError
116 HiLink melCommentError melError
117
118 delcommand HiLink
119endif
120
121let b:current_syntax = "mel"