xref: /vim-8.2.3635/runtime/syntax/matlab.vim (revision 5c73622a)
1" Vim syntax file
2" Language:	Matlab
3" Maintainer:	Maurizio Tranchero - [email protected]
4" Credits:	Preben 'Peppe' Guldberg <[email protected]>
5"		Original author: Mario Eusebio
6" Change History:
7" 		Sat Jul 25 16:14:55 CEST 2009
8"		- spell check enabled only for comments (thanks to James Vega)
9"
10" 		Tue Apr 21 10:03:31 CEST 2009
11"		- added object oriented support
12"		- added multi-line comments %{ ...\n... %}
13
14" For version 5.x: Clear all syntax items
15" For version 6.x: Quit when a syntax file was already loaded
16if version < 600
17  syntax clear
18elseif exists("b:current_syntax")
19  finish
20endif
21
22syn keyword matlabStatement		return
23syn keyword matlabLabel			case switch
24syn keyword matlabConditional		else elseif end if otherwise
25syn keyword matlabRepeat		do for while
26" MT_ADDON - added exception-specific keywords
27syn keyword matlabExceptions		try catch
28syn keyword matlabOO			classdef properties events methods
29
30syn keyword matlabTodo			contained  TODO
31
32" If you do not want these operators lit, uncommment them and the "hi link" below
33syn match matlabArithmeticOperator	"[-+]"
34syn match matlabArithmeticOperator	"\.\=[*/\\^]"
35syn match matlabRelationalOperator	"[=~]="
36syn match matlabRelationalOperator	"[<>]=\="
37syn match matlabLogicalOperator		"[&|~]"
38
39syn match matlabLineContinuation	"\.\{3}"
40
41"syn match matlabIdentifier		"\<\a\w*\>"
42
43" String
44" MT_ADDON - added 'skip' in order to deal with 'tic' escaping sequence
45syn region matlabString			start=+'+ end=+'+	oneline skip=+''+ contains=@Spell
46
47" If you don't like tabs
48syn match matlabTab			"\t"
49
50" Standard numbers
51syn match matlabNumber		"\<\d\+[ij]\=\>"
52" floating point number, with dot, optional exponent
53syn match matlabFloat		"\<\d\+\(\.\d*\)\=\([edED][-+]\=\d\+\)\=[ij]\=\>"
54" floating point number, starting with a dot, optional exponent
55syn match matlabFloat		"\.\d\+\([edED][-+]\=\d\+\)\=[ij]\=\>"
56
57" Transpose character and delimiters: Either use just [...] or (...) aswell
58syn match matlabDelimiter		"[][]"
59"syn match matlabDelimiter		"[][()]"
60syn match matlabTransposeOperator	"[])a-zA-Z0-9.]'"lc=1
61
62syn match matlabSemicolon		";"
63
64syn match matlabComment			"%.*$"	contains=matlabTodo,matlabTab,@Spell
65" MT_ADDON - correctly highlights words after '...' as comments
66syn match matlabComment			"\.\.\..*$"	contains=matlabTodo,matlabTab,@Spell
67syn region matlabMultilineComment	start=+%{+ end=+%}+ contains=matlabTodo,matlabTab,@Spell
68
69syn keyword matlabOperator		break zeros default margin round ones rand
70syn keyword matlabOperator		ceil floor size clear zeros eye mean std cov
71
72syn keyword matlabFunction		error eval function
73
74syn keyword matlabImplicit		abs acos atan asin cos cosh exp log prod sum
75syn keyword matlabImplicit		log10 max min sign sin sqrt tan reshape
76
77syn match matlabError	"-\=\<\d\+\.\d\+\.[^*/\\^]"
78syn match matlabError	"-\=\<\d\+\.\d\+[eEdD][-+]\=\d\+\.\([^*/\\^]\)"
79
80" Define the default highlighting.
81" For version 5.7 and earlier: only when not done already
82" For version 5.8 and later: only when an item doesn't have highlighting yet
83if version >= 508 || !exists("did_matlab_syntax_inits")
84  if version < 508
85    let did_matlab_syntax_inits = 1
86    command -nargs=+ HiLink hi link <args>
87  else
88    command -nargs=+ HiLink hi def link <args>
89  endif
90
91  HiLink matlabTransposeOperator	matlabOperator
92  HiLink matlabOperator			Operator
93  HiLink matlabLineContinuation		Special
94  HiLink matlabLabel			Label
95  HiLink matlabConditional		Conditional
96  HiLink matlabExceptions		Conditional
97  HiLink matlabRepeat			Repeat
98  HiLink matlabTodo			Todo
99  HiLink matlabString			String
100  HiLink matlabDelimiter		Identifier
101  HiLink matlabTransposeOther		Identifier
102  HiLink matlabNumber			Number
103  HiLink matlabFloat			Float
104  HiLink matlabFunction			Function
105  HiLink matlabError			Error
106  HiLink matlabImplicit			matlabStatement
107  HiLink matlabStatement		Statement
108  HiLink matlabOO			Statement
109  HiLink matlabSemicolon		SpecialChar
110  HiLink matlabComment			Comment
111  HiLink matlabMultilineComment		Comment
112
113  HiLink matlabArithmeticOperator	matlabOperator
114  HiLink matlabRelationalOperator	matlabOperator
115  HiLink matlabLogicalOperator		matlabOperator
116
117"optional highlighting
118  "HiLink matlabIdentifier		Identifier
119  "HiLink matlabTab			Error
120
121  delcommand HiLink
122endif
123
124let b:current_syntax = "matlab"
125
126"EOF	vim: ts=8 noet tw=100 sw=8 sts=0
127