Update runtime files.
diff --git a/runtime/syntax/ocaml.vim b/runtime/syntax/ocaml.vim
index 42913f2..af3efd3 100644
--- a/runtime/syntax/ocaml.vim
+++ b/runtime/syntax/ocaml.vim
@@ -4,7 +4,7 @@
 " Maintainers:  Markus Mottl      <markus.mottl@gmail.com>
 "               Karl-Heinz Sylla  <Karl-Heinz.Sylla@gmd.de>
 "               Issac Trotts      <ijtrotts@ucdavis.edu>
-" URL:          https://github.com/rgrinberg/vim-ocaml
+" URL:          https://github.com/ocaml/vim-ocaml
 " Last Change:
 "               2018 Nov 08 - Improved highlighting of operators (Maëlan)
 "               2018 Apr 22 - Improved support for PPX (Andrey Popp)
@@ -18,14 +18,20 @@
 " can be distinguished from begin/end, which is used for indentation,
 " and folding. (David Baelde)
 
-" quit when a syntax file was already loaded
+" Quit when a syntax file was already loaded
 if exists("b:current_syntax") && b:current_syntax == "ocaml"
   finish
 endif
 
+let s:keepcpo = &cpo
+set cpo&vim
+
 " ' can be used in OCaml identifiers
 setlocal iskeyword+='
 
+" ` is part of the name of polymorphic variants
+setlocal iskeyword+=`
+
 " OCaml is case sensitive.
 syn case match
 
@@ -123,7 +129,7 @@
 syn region   ocamlModSpec matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr
 
 " "open"
-syn region   ocamlNone matchgroup=ocamlKeyword start="\<open\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment
+syn match   ocamlKeyword "\<open\>" skipwhite skipempty nextgroup=ocamlFullMod
 
 " "include"
 syn match    ocamlKeyword "\<include\>" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
@@ -225,7 +231,18 @@
 syn match    ocamlAngle        "<"
 syn match    ocamlAngle        ">"
 " Custom indexing operators:
-syn match    ocamlIndexingOp   "\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\(()\|\[]\|{}\)\(<-\)\?"
+syn region   ocamlIndexing matchgroup=ocamlIndexingOp
+  \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*("
+  \ end=")\(\_s*<-\)\?"
+  \ contains=ALLBUT,@ocamlContained,ocamlParenErr
+syn region   ocamlIndexing matchgroup=ocamlIndexingOp
+  \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*\["
+  \ end="]\(\_s*<-\)\?"
+  \ contains=ALLBUT,@ocamlContained,ocamlBrackErr
+syn region   ocamlIndexing matchgroup=ocamlIndexingOp
+  \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*{"
+  \ end="}\(\_s*<-\)\?"
+  \ contains=ALLBUT,@ocamlContained,ocamlBraceErr
 " Extension operators (has to be declared before regular infix operators):
 syn match    ocamlExtensionOp          "#[#~?!.:|&$%<=>@^*/+-]\+"
 " Infix and prefix operators:
@@ -283,7 +300,6 @@
 syn sync match ocamlSigSync     groupthere ocamlSig     "\<end\>"
 
 " Define the default highlighting.
-" Only when an item doesn't have highlighting yet
 
 hi def link ocamlBraceErr	   Error
 hi def link ocamlBrackErr	   Error
@@ -308,14 +324,17 @@
 hi def link ocamlObject	   Include
 hi def link ocamlModule	   Include
 hi def link ocamlModParam1    Include
+hi def link ocamlGenMod       Include
 hi def link ocamlModType	   Include
 hi def link ocamlMPRestr3	   Include
 hi def link ocamlFullMod	   Include
+hi def link ocamlFuncWith	   Include
+hi def link ocamlModParam     Include
 hi def link ocamlModTypeRestr Include
 hi def link ocamlWith	   Include
 hi def link ocamlMTDef	   Include
-hi def link ocamlSigEncl    ocamlModule
-hi def link ocamlStructEncl ocamlModule
+hi def link ocamlSigEncl	   ocamlModule
+hi def link ocamlStructEncl	   ocamlModule
 
 hi def link ocamlScript	   Include
 
@@ -326,24 +345,25 @@
 hi def link ocamlMPRestr2	   Keyword
 hi def link ocamlKeyword	   Keyword
 hi def link ocamlMethod	   Include
+hi def link ocamlArrow	   Keyword
 hi def link ocamlKeyChar	   Keyword
 hi def link ocamlAnyVar	   Keyword
 hi def link ocamlTopStop	   Keyword
 
-hi def link ocamlRefAssign  ocamlKeyChar
-hi def link ocamlEqual	    ocamlKeyChar
-hi def link ocamlStar	    ocamlInfixOp
-hi def link ocamlAngle	    ocamlInfixOp
-hi def link ocamlCons	    ocamlInfixOp
+hi def link ocamlRefAssign    ocamlKeyChar
+hi def link ocamlEqual        ocamlKeyChar
+hi def link ocamlStar         ocamlInfixOp
+hi def link ocamlAngle        ocamlInfixOp
+hi def link ocamlCons         ocamlInfixOp
 
-hi def link ocamlPrefixOp	ocamlOperator
-hi def link ocamlInfixOp	ocamlOperator
-hi def link ocamlExtensionOp	ocamlOperator
-hi def link ocamlIndexingOp	ocamlOperator
+hi def link ocamlPrefixOp       ocamlOperator
+hi def link ocamlInfixOp        ocamlOperator
+hi def link ocamlExtensionOp    ocamlOperator
+hi def link ocamlIndexingOp     ocamlOperator
 
 if exists("ocaml_highlight_operators")
     hi def link ocamlInfixOpKeyword ocamlOperator
-    hi def link ocamlOperator	    Operator
+    hi def link ocamlOperator       Operator
 else
     hi def link ocamlInfixOpKeyword Keyword
 endif
@@ -353,7 +373,7 @@
 hi def link ocamlNumber	   Number
 hi def link ocamlFloat	   Float
 hi def link ocamlString	   String
-hi def link ocamlQuotedStringDelim  Identifier
+hi def link ocamlQuotedStringDelim Identifier
 
 hi def link ocamlLabel	   Identifier
 
@@ -363,8 +383,11 @@
 
 hi def link ocamlEncl	   Keyword
 
-hi def link ocamlPpxEncl    ocamlEncl
+hi def link ocamlPpxEncl       ocamlEncl
 
 let b:current_syntax = "ocaml"
 
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
 " vim: ts=8