diff --git a/extensions/markdown/syntaxes/markdown.tmLanguage b/extensions/markdown/syntaxes/markdown.tmLanguage
index 754d0179fb6..e165976734b 100644
--- a/extensions/markdown/syntaxes/markdown.tmLanguage
+++ b/extensions/markdown/syntaxes/markdown.tmLanguage
@@ -126,6 +126,10 @@
include
#fenced_code_block_c
+
+ include
+ #fenced_code_block_cpp
+
include
#fenced_code_block_diff
@@ -1560,7 +1564,6 @@
punctuation.definition.markdown
-
patterns
@@ -1578,6 +1581,57 @@
+ fenced_code_block_cpp
+
+ begin
+ (^|\G)(\s*)([`~]{3,})\s*((cpp|c\+\+|cxx)(\s+.*)?$)
+ name
+ markup.fenced_code.block.markdown
+ end
+ (^|\G)(\2|\s{0,3})(\3)\s*$
+ beginCaptures
+
+ 3
+
+ name
+ punctuation.definition.markdown
+
+ 5
+
+ name
+ fenced_code.block.language
+
+ 6
+
+ name
+ fenced_code.block.language.attributes
+
+
+ endCaptures
+
+ 3
+
+ name
+ punctuation.definition.markdown
+
+
+ patterns
+
+
+ begin
+ (^|\G)(\s*)(.*)
+ while
+ (^|\G)(?!\s*([`~]{3,})\s*$)
+ patterns
+
+
+ include
+ source.cpp
+
+
+
+
+
fenced_code_block_diff
begin