| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Vim syntax file | 
					
						
							|  |  |  | " Language:     OCaml | 
					
						
							|  |  |  | " Filenames:    *.ml *.mli *.mll *.mly | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  | " Maintainers:  Markus Mottl      <markus.mottl@gmail.com> | 
					
						
							| 
									
										
										
										
											2004-07-26 12:53:41 +00:00
										 |  |  | "               Karl-Heinz Sylla  <Karl-Heinz.Sylla@gmd.de> | 
					
						
							|  |  |  | "               Issac Trotts      <ijtrotts@ucdavis.edu> | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  | " URL:          http://www.ocaml.info/vim/syntax/ocaml.vim | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | " Last Change:  2012 May 12 - Added Dominique Pellé's spell checking patch (MM) | 
					
						
							|  |  |  | "               2012 Feb 01 - Improved module path highlighting (MM) | 
					
						
							|  |  |  | "               2010 Oct 11 - Added highlighting of lnot (MM, thanks to Erick Matsen) | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " A minor patch was applied to the official version so that object/end | 
					
						
							|  |  |  | " can be distinguished from begin/end, which is used for indentation, | 
					
						
							|  |  |  | " and folding. (David Baelde) | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | " quit when a syntax file was already loaded | 
					
						
							|  |  |  | if exists("b:current_syntax") && b:current_syntax == "ocaml" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " OCaml is case sensitive. | 
					
						
							|  |  |  | syn case match | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | " Access to the method of an object | 
					
						
							|  |  |  | syn match    ocamlMethod       "#" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Script headers highlighted like comments | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn match    ocamlComment   "^#!.*" contains=@Spell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Scripting directives | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | syn match    ocamlScript "^#\<\(quit\|labels\|warnings\|directory\|cd\|load\|use\|install_printer\|remove_printer\|require\|thread\|trace\|untrace\|untrace_all\|print_depth\|print_length\|camlp4o\)\>" | 
					
						
							| 
									
										
										
										
											2007-05-05 17:54:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " lowercase identifier - the standard way to match | 
					
						
							|  |  |  | syn match    ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match    ocamlKeyChar    "|" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Errors | 
					
						
							|  |  |  | syn match    ocamlBraceErr   "}" | 
					
						
							|  |  |  | syn match    ocamlBrackErr   "\]" | 
					
						
							|  |  |  | syn match    ocamlParenErr   ")" | 
					
						
							|  |  |  | syn match    ocamlArrErr     "|]" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match    ocamlCommentErr "\*)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match    ocamlCountErr   "\<downto\>" | 
					
						
							|  |  |  | syn match    ocamlCountErr   "\<to\>" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if !exists("ocaml_revised") | 
					
						
							|  |  |  |   syn match    ocamlDoErr      "\<do\>" | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match    ocamlDoneErr    "\<done\>" | 
					
						
							|  |  |  | syn match    ocamlThenErr    "\<then\>" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Error-highlighting of "end" without synchronization: | 
					
						
							|  |  |  | " as keyword or as error (default) | 
					
						
							|  |  |  | if exists("ocaml_noend_error") | 
					
						
							|  |  |  |   syn match    ocamlKeyword    "\<end\>" | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   syn match    ocamlEndErr     "\<end\>" | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Some convenient clusters | 
					
						
							|  |  |  | syn cluster  ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn cluster  ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | syn cluster  ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlPreMPRestr,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod,ocamlVal | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Enclosing delimiters | 
					
						
							|  |  |  | syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr | 
					
						
							|  |  |  | syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}"  contains=ALLBUT,@ocamlContained,ocamlBraceErr | 
					
						
							|  |  |  | syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr | 
					
						
							|  |  |  | syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Comments | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn region   ocamlComment start="(\*" end="\*)" contains=@Spell,ocamlComment,ocamlTodo | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  | syn keyword  ocamlTodo contained TODO FIXME XXX NOTE | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Objects | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  | syn region   ocamlEnd matchgroup=ocamlObject start="\<object\>" matchgroup=ocamlObject end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Blocks | 
					
						
							|  |  |  | if !exists("ocaml_revised") | 
					
						
							|  |  |  |   syn region   ocamlEnd matchgroup=ocamlKeyword start="\<begin\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " "for" | 
					
						
							|  |  |  | syn region   ocamlNone matchgroup=ocamlKeyword start="\<for\>" matchgroup=ocamlKeyword end="\<\(to\|downto\)\>" contains=ALLBUT,@ocamlContained,ocamlCountErr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " "do" | 
					
						
							|  |  |  | if !exists("ocaml_revised") | 
					
						
							|  |  |  |   syn region   ocamlDo matchgroup=ocamlKeyword start="\<do\>" matchgroup=ocamlKeyword end="\<done\>" contains=ALLBUT,@ocamlContained,ocamlDoneErr | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " "if" | 
					
						
							|  |  |  | syn region   ocamlNone matchgroup=ocamlKeyword start="\<if\>" matchgroup=ocamlKeyword end="\<then\>" contains=ALLBUT,@ocamlContained,ocamlThenErr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "" Modules | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " "sig" | 
					
						
							|  |  |  | syn region   ocamlSig matchgroup=ocamlModule start="\<sig\>" matchgroup=ocamlModule end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule | 
					
						
							|  |  |  | syn region   ocamlModSpec matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " "open" | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn region   ocamlNone matchgroup=ocamlKeyword start="\<open\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " "include" | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  | syn match    ocamlKeyword "\<include\>" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " "module" - somewhat complicated stuff ;-) | 
					
						
							|  |  |  | syn region   ocamlModule matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | syn region   ocamlPreDef start="."me=e-1 matchgroup=ocamlKeyword end="\l\|=\|)"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHS | 
					
						
							|  |  |  | syn region   ocamlModParam start="([^*]" end=")" contained contains=@ocamlAENoParen,ocamlModParam1,ocamlVal | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn match    ocamlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlPreMPRestr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn region   ocamlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlMPRestr,ocamlModTypeRestr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn region   ocamlMPRestr start=":" end="."me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3 | 
					
						
							|  |  |  | syn region   ocamlMPRestr1 matchgroup=ocamlModule start="\ssig\s\=" matchgroup=ocamlModule end="\<end\>" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule | 
					
						
							|  |  |  | syn region   ocamlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=ocamlKeyword end="->" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2 | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn match    ocamlMPRestr3 "\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*" contained | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn match    ocamlModPreRHS "=" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | syn keyword  ocamlKeyword val | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn region   ocamlVal matchgroup=ocamlKeyword start="\<val\>" matchgroup=ocamlLCIdentifier end="\<\l\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment,ocamlFullMod skipwhite skipempty nextgroup=ocamlMPRestr | 
					
						
							|  |  |  | syn region   ocamlModRHS start="." end=". *\w\|([^*]"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod | 
					
						
							|  |  |  | syn match    ocamlFullMod "\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=ocamlFuncWith | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | syn region   ocamlFuncWith start="([^*]"me=e-1 end=")" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWith | 
					
						
							|  |  |  | syn region   ocamlFuncStruct matchgroup=ocamlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=ocamlModule end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn match    ocamlModTypeRestr "\<\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*\>" contained | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn region   ocamlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@ocamlAENoParen,ocamlWith | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn match    ocamlWith "\<\(\u\(\w\|'\)* *\. *\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlWithRest | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn region   ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | " "struct" | 
					
						
							|  |  |  | syn region   ocamlStruct matchgroup=ocamlModule start="\<\(module\s\+\)\=struct\>" matchgroup=ocamlModule end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " "module type" | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | syn region   ocamlKeyword start="\<module\>\s*\<type\>\(\s*\<of\>\)\=" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn match    ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s+1 skipwhite skipempty nextgroup=ocamlFullMod | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | syn keyword  ocamlKeyword  and as assert class | 
					
						
							|  |  |  | syn keyword  ocamlKeyword  constraint else | 
					
						
							|  |  |  | syn keyword  ocamlKeyword  exception external fun | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn keyword  ocamlKeyword  in inherit initializer | 
					
						
							|  |  |  | syn keyword  ocamlKeyword  land lazy let match | 
					
						
							|  |  |  | syn keyword  ocamlKeyword  method mutable new of | 
					
						
							|  |  |  | syn keyword  ocamlKeyword  parser private raise rec | 
					
						
							|  |  |  | syn keyword  ocamlKeyword  try type | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | syn keyword  ocamlKeyword  virtual when while with | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if exists("ocaml_revised") | 
					
						
							|  |  |  |   syn keyword  ocamlKeyword  do value | 
					
						
							|  |  |  |   syn keyword  ocamlBoolean  True False | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   syn keyword  ocamlKeyword  function | 
					
						
							|  |  |  |   syn keyword  ocamlBoolean  true false | 
					
						
							|  |  |  |   syn match    ocamlKeyChar  "!" | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  | syn keyword  ocamlType     array bool char exn float format format4 | 
					
						
							|  |  |  | syn keyword  ocamlType     int int32 int64 lazy_t list nativeint option | 
					
						
							|  |  |  | syn keyword  ocamlType     string unit | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | syn keyword  ocamlOperator asr lnot lor lsl lsr lxor mod not | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | syn match    ocamlConstructor  "(\s*)" | 
					
						
							|  |  |  | syn match    ocamlConstructor  "\[\s*\]" | 
					
						
							|  |  |  | syn match    ocamlConstructor  "\[|\s*>|]" | 
					
						
							|  |  |  | syn match    ocamlConstructor  "\[<\s*>\]" | 
					
						
							|  |  |  | syn match    ocamlConstructor  "\u\(\w\|'\)*\>" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Polymorphic variants | 
					
						
							|  |  |  | syn match    ocamlConstructor  "`\w\(\w\|'\)*\>" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Module prefix | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn match    ocamlModPath      "\u\(\w\|'\)* *\."he=e-1 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | syn match    ocamlCharacter    "'\\\d\d\d'\|'\\[\'ntbr]'\|'.'" | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | syn match    ocamlCharacter    "'\\x\x\x'" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn match    ocamlCharErr      "'\\\d\d'\|'\\\d'" | 
					
						
							|  |  |  | syn match    ocamlCharErr      "'\\[^\'ntbr]'" | 
					
						
							| 
									
										
										
										
											2013-07-28 16:02:18 +02:00
										 |  |  | syn region   ocamlString       start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | syn match    ocamlFunDef       "->" | 
					
						
							|  |  |  | syn match    ocamlRefAssign    ":=" | 
					
						
							|  |  |  | syn match    ocamlTopStop      ";;" | 
					
						
							|  |  |  | syn match    ocamlOperator     "\^" | 
					
						
							|  |  |  | syn match    ocamlOperator     "::" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match    ocamlOperator     "&&" | 
					
						
							|  |  |  | syn match    ocamlOperator     "<" | 
					
						
							|  |  |  | syn match    ocamlOperator     ">" | 
					
						
							|  |  |  | syn match    ocamlAnyVar       "\<_\>" | 
					
						
							|  |  |  | syn match    ocamlKeyChar      "|[^\]]"me=e-1 | 
					
						
							|  |  |  | syn match    ocamlKeyChar      ";" | 
					
						
							|  |  |  | syn match    ocamlKeyChar      "\~" | 
					
						
							|  |  |  | syn match    ocamlKeyChar      "?" | 
					
						
							|  |  |  | syn match    ocamlKeyChar      "\*" | 
					
						
							|  |  |  | syn match    ocamlKeyChar      "=" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if exists("ocaml_revised") | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  |   syn match    ocamlErr        "<-" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  |   syn match    ocamlOperator   "<-" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 17:54:07 +00:00
										 |  |  | syn match    ocamlNumber        "\<-\=\d\(_\|\d\)*[l|L|n]\?\>" | 
					
						
							|  |  |  | syn match    ocamlNumber        "\<-\=0[x|X]\(\x\|_\)\+[l|L|n]\?\>" | 
					
						
							|  |  |  | syn match    ocamlNumber        "\<-\=0[o|O]\(\o\|_\)\+[l|L|n]\?\>" | 
					
						
							|  |  |  | syn match    ocamlNumber        "\<-\=0[b|B]\([01]\|_\)\+[l|L|n]\?\>" | 
					
						
							| 
									
										
										
										
											2011-05-19 12:22:51 +02:00
										 |  |  | syn match    ocamlFloat         "\<-\=\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Labels | 
					
						
							| 
									
										
										
										
											2005-10-11 20:29:39 +00:00
										 |  |  | syn match    ocamlLabel        "\~\(\l\|_\)\(\w\|'\)*"lc=1 | 
					
						
							|  |  |  | syn match    ocamlLabel        "?\(\l\|_\)\(\w\|'\)*"lc=1 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | syn region   ocamlLabel transparent matchgroup=ocamlLabel start="?(\(\l\|_\)\(\w\|'\)*"lc=2 end=")"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Synchronization | 
					
						
							|  |  |  | syn sync minlines=50 | 
					
						
							|  |  |  | syn sync maxlines=500 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if !exists("ocaml_revised") | 
					
						
							|  |  |  |   syn sync match ocamlDoSync      grouphere  ocamlDo      "\<do\>" | 
					
						
							|  |  |  |   syn sync match ocamlDoSync      groupthere ocamlDo      "\<done\>" | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if exists("ocaml_revised") | 
					
						
							|  |  |  |   syn sync match ocamlEndSync     grouphere  ocamlEnd     "\<\(object\)\>" | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   syn sync match ocamlEndSync     grouphere  ocamlEnd     "\<\(begin\|object\)\>" | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn sync match ocamlEndSync     groupthere ocamlEnd     "\<end\>" | 
					
						
							|  |  |  | syn sync match ocamlStructSync  grouphere  ocamlStruct  "\<struct\>" | 
					
						
							|  |  |  | syn sync match ocamlStructSync  groupthere ocamlStruct  "\<end\>" | 
					
						
							|  |  |  | syn sync match ocamlSigSync     grouphere  ocamlSig     "\<sig\>" | 
					
						
							|  |  |  | syn sync match ocamlSigSync     groupthere ocamlSig     "\<end\>" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Define the default highlighting. | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | " Only when an item doesn't have highlighting yet | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlBraceErr	   Error | 
					
						
							|  |  |  | hi def link ocamlBrackErr	   Error | 
					
						
							|  |  |  | hi def link ocamlParenErr	   Error | 
					
						
							|  |  |  | hi def link ocamlArrErr	   Error | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlCommentErr   Error | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlCountErr	   Error | 
					
						
							|  |  |  | hi def link ocamlDoErr	   Error | 
					
						
							|  |  |  | hi def link ocamlDoneErr	   Error | 
					
						
							|  |  |  | hi def link ocamlEndErr	   Error | 
					
						
							|  |  |  | hi def link ocamlThenErr	   Error | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlCharErr	   Error | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlErr	   Error | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlComment	   Comment | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlModPath	   Include | 
					
						
							|  |  |  | hi def link ocamlObject	   Include | 
					
						
							|  |  |  | hi def link ocamlModule	   Include | 
					
						
							|  |  |  | hi def link ocamlModParam1    Include | 
					
						
							|  |  |  | hi def link ocamlModType	   Include | 
					
						
							|  |  |  | hi def link ocamlMPRestr3	   Include | 
					
						
							|  |  |  | hi def link ocamlFullMod	   Include | 
					
						
							|  |  |  | hi def link ocamlModTypeRestr Include | 
					
						
							|  |  |  | hi def link ocamlWith	   Include | 
					
						
							|  |  |  | hi def link ocamlMTDef	   Include | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlScript	   Include | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlConstructor  Constant | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlVal          Keyword | 
					
						
							|  |  |  | hi def link ocamlModPreRHS    Keyword | 
					
						
							|  |  |  | hi def link ocamlMPRestr2	   Keyword | 
					
						
							|  |  |  | hi def link ocamlKeyword	   Keyword | 
					
						
							|  |  |  | hi def link ocamlMethod	   Include | 
					
						
							|  |  |  | hi def link ocamlFunDef	   Keyword | 
					
						
							|  |  |  | hi def link ocamlRefAssign    Keyword | 
					
						
							|  |  |  | hi def link ocamlKeyChar	   Keyword | 
					
						
							|  |  |  | hi def link ocamlAnyVar	   Keyword | 
					
						
							|  |  |  | hi def link ocamlTopStop	   Keyword | 
					
						
							|  |  |  | hi def link ocamlOperator	   Keyword | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlBoolean	   Boolean | 
					
						
							|  |  |  | hi def link ocamlCharacter    Character | 
					
						
							|  |  |  | hi def link ocamlNumber	   Number | 
					
						
							|  |  |  | hi def link ocamlFloat	   Float | 
					
						
							|  |  |  | hi def link ocamlString	   String | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlLabel	   Identifier | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlType	   Type | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlTodo	   Todo | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link ocamlEncl	   Keyword | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | let b:current_syntax = "ocaml" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " vim: ts=8 |