diff -r 538ff809ae53 runtime/doc/syntax.txt
--- a/runtime/doc/syntax.txt	Thu Nov 29 20:10:00 2012 +0100
+++ b/runtime/doc/syntax.txt	Mon Dec 03 19:11:40 2012 -0800
@@ -3459,6 +3459,7 @@
 :syntax region		yes	yes	yes	yes	yes    yes
 
 These arguments can be used for all three commands:
+	combine
 	conceal
 	cchar
 	contained
@@ -3469,6 +3470,24 @@
 	skipnl
 	skipempty
 
+
+combine							*:syn-combine*
+
+When the "combine" argument is given, the highlight attributes of the group
+will be combined with the attributes of other matching syntax groups. The
+"combine" group takes precedence.
+
+Multiple groups may be combined, with the innermost groups taking precedence.
+Example: >
+
+    syntax region Italic start="_" end="_" combine contains=Bold
+    syntax region Bold start="\*" end="\*" combine contains=Italic
+    highlight Italic term=italic
+    highlight Bold term=bold
+
+    _The inner text is italic *and bold*_.
+
+
 conceal						*conceal* *:syn-conceal*
 
 When the "conceal" argument is given, the item is marked as concealable.
@@ -3750,6 +3769,7 @@
 "contains" arguments to make that work (omitted for simplicity of the
 example).
 
+
 IMPLICIT CONCEAL					*:syn-conceal-implicit*
 
 :sy[ntax] conceal [on|off]
diff -r 538ff809ae53 runtime/syntax/vim.vim
--- a/runtime/syntax/vim.vim	Thu Nov 29 20:10:00 2012 +0100
+++ b/runtime/syntax/vim.vim	Mon Dec 03 19:11:40 2012 -0800
@@ -421,14 +421,14 @@
 syn cluster	vimSynKeyGroup	contains=vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin
 syn keyword	vimSynType	contained	keyword	skipwhite nextgroup=vimSynKeyRegion
 syn region	vimSynKeyRegion	contained oneline keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" matchgroup=vimSep end="|\|$" contains=@vimSynKeyGroup
-syn match	vimSynKeyOpt	contained	"\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>"
+syn match	vimSynKeyOpt	contained	"\<\(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\|combine\)\>"
 syn cluster vimFuncBodyList add=vimSynType
 
 " Syntax: match {{{2
 syn cluster	vimSynMtchGroup	contains=vimMtchComment,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation
 syn keyword	vimSynType	contained	match	skipwhite nextgroup=vimSynMatchRegion
 syn region	vimSynMatchRegion	contained keepend	matchgroup=vimGroupName start="\k\+" matchgroup=vimSep end="|\|$" contains=@vimSynMtchGroup
-syn match	vimSynMtchOpt	contained	"\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>"
+syn match	vimSynMtchOpt	contained	"\<\(conceal\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\|combine\)\>"
 if has("conceal")
  syn match	vimSynMtchOpt	contained	"\<cchar="	nextgroup=vimSynMtchCchar
  syn match	vimSynMtchCchar	contained	"\S"
@@ -443,7 +443,7 @@
 syn cluster	vimSynRegGroup	contains=vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp
 syn keyword	vimSynType	contained	region	skipwhite nextgroup=vimSynRegion
 syn region	vimSynRegion	contained keepend	matchgroup=vimGroupName start="\k\+" skip="\\\\\|\\|" end="|\|$" contains=@vimSynRegGroup
-syn match	vimSynRegOpt	contained	"\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>"
+syn match	vimSynRegOpt	contained	"\<\(conceal\(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\|combine\)\>"
 syn match	vimSynReg	contained	"\(start\|skip\|end\)="he=e-1	nextgroup=vimSynRegPat
 syn match	vimSynMtchGrp	contained	"matchgroup="	nextgroup=vimGroup,vimHLGroup
 syn region	vimSynRegPat	contained extend	start="\z([-`~!@#$%^&*_=+;:'",./?]\)"  skip="\\\\\|\\\z1"  end="\z1"  contains=@vimSynRegPatGroup skipwhite nextgroup=vimSynPatMod,vimSynReg
