提交 5931743a 编写于 作者: M Matt Bierner 提交者: GitHub

Fix Fenced Code Syntax Highlighting in Markdown Leaking (#14626)

* Use while in fenced code blocks to prevent breakout

* Fix a few edge cases for code blocks
上级 cab6092a
......@@ -546,11 +546,11 @@
<key>fenced_code_block_css</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(css|css.erb)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(css|css.erb)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -562,11 +562,11 @@
<key>fenced_code_block_basic</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(html|htm|shtml|xhtml|inc|tmpl|tpl)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(html|htm|shtml|xhtml|inc|tmpl|tpl)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -578,11 +578,11 @@
<key>fenced_code_block_ini</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(ini|conf)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(ini|conf)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -594,11 +594,11 @@
<key>fenced_code_block_java</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(java|bsh)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(java|bsh)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -610,11 +610,11 @@
<key>fenced_code_block_lua</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(lua)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(lua)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -626,11 +626,11 @@
<key>fenced_code_block_makefile</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(Makefile|makefile|GNUmakefile|OCamlMakefile)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(Makefile|makefile|GNUmakefile|OCamlMakefile)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -642,11 +642,11 @@
<key>fenced_code_block_perl</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(perl|pl|pm|pod|t|PL|psgi|vcl)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(perl|pl|pm|pod|t|PL|psgi|vcl)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -658,11 +658,11 @@
<key>fenced_code_block_r</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(R|r|s|S|Rprofile)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(R|r|s|S|Rprofile)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -674,11 +674,11 @@
<key>fenced_code_block_ruby</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -690,11 +690,11 @@
<key>fenced_code_block_php</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(php|php3|php4|php5|phpt|phtml|aw|ctp)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(php|php3|php4|php5|phpt|phtml|aw|ctp)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -706,11 +706,11 @@
<key>fenced_code_block_sql</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(sql|ddl|dml)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(sql|ddl|dml)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -722,11 +722,11 @@
<key>fenced_code_block_vs_net</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(vb)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(vb)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -738,11 +738,11 @@
<key>fenced_code_block_xml</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -754,11 +754,11 @@
<key>fenced_code_block_xsl</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(xsl|xslt)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(xsl|xslt)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -770,11 +770,11 @@
<key>fenced_code_block_yaml</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(yaml|yml)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(yaml|yml)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -786,11 +786,11 @@
<key>fenced_code_block_dosbatch</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(bat|batch)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(bat|batch)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -802,11 +802,11 @@
<key>fenced_code_block_clojure</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(clj|cljs|clojure)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(clj|cljs|clojure)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -818,11 +818,11 @@
<key>fenced_code_block_coffee</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(coffee|Cakefile|coffee.erb)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(coffee|Cakefile|coffee.erb)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -834,11 +834,11 @@
<key>fenced_code_block_c</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(c|h)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(c|h)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -850,11 +850,11 @@
<key>fenced_code_block_diff</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(patch|diff|rej)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(patch|diff|rej)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -866,11 +866,11 @@
<key>fenced_code_block_dockerfile</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(dockerfile|Dockerfile)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(dockerfile|Dockerfile)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -882,11 +882,11 @@
<key>fenced_code_block_git_commit</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(COMMIT_EDITMSG|MERGE_MSG)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(COMMIT_EDITMSG|MERGE_MSG)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -898,11 +898,11 @@
<key>fenced_code_block_git_rebase</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(git-rebase-todo)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(git-rebase-todo)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -914,11 +914,11 @@
<key>fenced_code_block_groovy</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(groovy|gvy)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(groovy|gvy)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -930,11 +930,11 @@
<key>fenced_code_block_jade</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(jade)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(jade)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -946,11 +946,11 @@
<key>fenced_code_block_js</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(js|jsx|javascript)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(js|jsx|javascript)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -962,11 +962,11 @@
<key>fenced_code_block_js_regexp</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(regexp)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(regexp)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -978,11 +978,11 @@
<key>fenced_code_block_json</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(json|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(json|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -994,11 +994,11 @@
<key>fenced_code_block_less</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(less)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(less)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -1010,11 +1010,11 @@
<key>fenced_code_block_objc</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(objectivec|mm|objc|obj-c|m|h)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(objectivec|mm|objc|obj-c|m|h)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -1026,11 +1026,11 @@
<key>fenced_code_block_perl6</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(perl6|p6|pl6|pm6|nqp)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(perl6|p6|pl6|pm6|nqp)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -1042,11 +1042,11 @@
<key>fenced_code_block_powershell</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(powershell|ps1|psm1|psd1)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(powershell|ps1|psm1|psd1)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -1058,11 +1058,11 @@
<key>fenced_code_block_python</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -1074,11 +1074,11 @@
<key>fenced_code_block_regexp_python</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(re)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(re)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -1090,11 +1090,11 @@
<key>fenced_code_block_shell</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -1106,11 +1106,11 @@
<key>fenced_code_block_ts</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(typescript|ts)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(typescript|ts)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -1122,11 +1122,11 @@
<key>fenced_code_block_tsx</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(tsx)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(tsx)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)[ ]{0,3}(\2)\s*\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......@@ -1138,11 +1138,11 @@
<key>fenced_code_block_csharp</key>
<dict>
<key>begin</key>
<string>(^|\G)\s*([`~]{3,})\s*(cs|csharp|c#)\s*$</string>
<string>(^|\G)\s*(([`~]){3,})\s*(cs|csharp|c#)\s*$</string>
<key>name</key>
<string>markup.fenced_code.block.markdown</string>
<key>end</key>
<string>(^|\G)(\2)\n</string>
<key>while</key>
<string>(^|\G)(?!\s*\2\3*\s*$)</string>
<key>patterns</key>
<array>
<dict>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册