blob: 3828f3e8a876d9ad05f01880f3836c8180cc4942 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Matlab
Bram Moolenaar9db9d9c2010-01-16 14:29:14 +01003" Maintainer: Maurizio Tranchero - maurizio(.)tranchero(@)gmail(.)com
Bram Moolenaar5c736222010-01-06 20:54:52 +01004" Credits: Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
Bram Moolenaar071d4272004-06-13 20:20:40 +00005" Original author: Mario Eusebio
Bram Moolenaar9db9d9c2010-01-16 14:29:14 +01006" Last Change: Wed Jan 13 11:12:34 CET 2010
Bram Moolenaar251e1912011-06-19 05:09:16 +02007" sinh added to matlab implicit commands
8" Change History:
Bram Moolenaar9db9d9c2010-01-16 14:29:14 +01009" - 'global' and 'persistent' keyword are now recognized
Bram Moolenaar071d4272004-06-13 20:20:40 +000010
11" For version 5.x: Clear all syntax items
12" For version 6.x: Quit when a syntax file was already loaded
13if version < 600
14 syntax clear
15elseif exists("b:current_syntax")
16 finish
17endif
18
19syn keyword matlabStatement return
20syn keyword matlabLabel case switch
21syn keyword matlabConditional else elseif end if otherwise
22syn keyword matlabRepeat do for while
Bram Moolenaar5c736222010-01-06 20:54:52 +010023" MT_ADDON - added exception-specific keywords
24syn keyword matlabExceptions try catch
25syn keyword matlabOO classdef properties events methods
Bram Moolenaar071d4272004-06-13 20:20:40 +000026
27syn keyword matlabTodo contained TODO
Bram Moolenaar9db9d9c2010-01-16 14:29:14 +010028syn keyword matlabScope global persistent
Bram Moolenaar071d4272004-06-13 20:20:40 +000029
30" If you do not want these operators lit, uncommment them and the "hi link" below
31syn match matlabArithmeticOperator "[-+]"
32syn match matlabArithmeticOperator "\.\=[*/\\^]"
33syn match matlabRelationalOperator "[=~]="
34syn match matlabRelationalOperator "[<>]=\="
35syn match matlabLogicalOperator "[&|~]"
36
37syn match matlabLineContinuation "\.\{3}"
38
39"syn match matlabIdentifier "\<\a\w*\>"
40
41" String
Bram Moolenaar5c736222010-01-06 20:54:52 +010042" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence
Bram Moolenaar9db9d9c2010-01-16 14:29:14 +010043syn region matlabString start=+'+ end=+'+ oneline skip=+''+
Bram Moolenaar071d4272004-06-13 20:20:40 +000044
45" If you don't like tabs
46syn match matlabTab "\t"
47
48" Standard numbers
49syn match matlabNumber "\<\d\+[ij]\=\>"
50" floating point number, with dot, optional exponent
51syn match matlabFloat "\<\d\+\(\.\d*\)\=\([edED][-+]\=\d\+\)\=[ij]\=\>"
52" floating point number, starting with a dot, optional exponent
53syn match matlabFloat "\.\d\+\([edED][-+]\=\d\+\)\=[ij]\=\>"
54
55" Transpose character and delimiters: Either use just [...] or (...) aswell
56syn match matlabDelimiter "[][]"
57"syn match matlabDelimiter "[][()]"
58syn match matlabTransposeOperator "[])a-zA-Z0-9.]'"lc=1
59
60syn match matlabSemicolon ";"
61
Bram Moolenaar9db9d9c2010-01-16 14:29:14 +010062syn match matlabComment "%.*$" contains=matlabTodo,matlabTab
Bram Moolenaar5c736222010-01-06 20:54:52 +010063" MT_ADDON - correctly highlights words after '...' as comments
Bram Moolenaar9db9d9c2010-01-16 14:29:14 +010064syn match matlabComment "\.\.\..*$" contains=matlabTodo,matlabTab
65syn region matlabMultilineComment start=+%{+ end=+%}+ contains=matlabTodo,matlabTab
Bram Moolenaar071d4272004-06-13 20:20:40 +000066
67syn keyword matlabOperator break zeros default margin round ones rand
68syn keyword matlabOperator ceil floor size clear zeros eye mean std cov
69
70syn keyword matlabFunction error eval function
71
72syn keyword matlabImplicit abs acos atan asin cos cosh exp log prod sum
Bram Moolenaar251e1912011-06-19 05:09:16 +020073syn keyword matlabImplicit log10 max min sign sin sinh sqrt tan reshape
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
75syn match matlabError "-\=\<\d\+\.\d\+\.[^*/\\^]"
76syn match matlabError "-\=\<\d\+\.\d\+[eEdD][-+]\=\d\+\.\([^*/\\^]\)"
77
78" Define the default highlighting.
79" For version 5.7 and earlier: only when not done already
80" For version 5.8 and later: only when an item doesn't have highlighting yet
81if version >= 508 || !exists("did_matlab_syntax_inits")
82 if version < 508
83 let did_matlab_syntax_inits = 1
84 command -nargs=+ HiLink hi link <args>
85 else
86 command -nargs=+ HiLink hi def link <args>
87 endif
88
89 HiLink matlabTransposeOperator matlabOperator
Bram Moolenaar5c736222010-01-06 20:54:52 +010090 HiLink matlabOperator Operator
91 HiLink matlabLineContinuation Special
Bram Moolenaar071d4272004-06-13 20:20:40 +000092 HiLink matlabLabel Label
93 HiLink matlabConditional Conditional
Bram Moolenaar5c736222010-01-06 20:54:52 +010094 HiLink matlabExceptions Conditional
Bram Moolenaar071d4272004-06-13 20:20:40 +000095 HiLink matlabRepeat Repeat
96 HiLink matlabTodo Todo
97 HiLink matlabString String
98 HiLink matlabDelimiter Identifier
99 HiLink matlabTransposeOther Identifier
100 HiLink matlabNumber Number
101 HiLink matlabFloat Float
Bram Moolenaar5c736222010-01-06 20:54:52 +0100102 HiLink matlabFunction Function
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103 HiLink matlabError Error
Bram Moolenaar5c736222010-01-06 20:54:52 +0100104 HiLink matlabImplicit matlabStatement
Bram Moolenaar071d4272004-06-13 20:20:40 +0000105 HiLink matlabStatement Statement
Bram Moolenaar5c736222010-01-06 20:54:52 +0100106 HiLink matlabOO Statement
Bram Moolenaar071d4272004-06-13 20:20:40 +0000107 HiLink matlabSemicolon SpecialChar
108 HiLink matlabComment Comment
Bram Moolenaar5c736222010-01-06 20:54:52 +0100109 HiLink matlabMultilineComment Comment
Bram Moolenaar9db9d9c2010-01-16 14:29:14 +0100110 HiLink matlabScope Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000111
112 HiLink matlabArithmeticOperator matlabOperator
113 HiLink matlabRelationalOperator matlabOperator
114 HiLink matlabLogicalOperator matlabOperator
115
116"optional highlighting
117 "HiLink matlabIdentifier Identifier
118 "HiLink matlabTab Error
119
120 delcommand HiLink
121endif
122
123let b:current_syntax = "matlab"
124
125"EOF vim: ts=8 noet tw=100 sw=8 sts=0