diff --git a/components/prism-diff.js b/components/prism-diff.js index 9dfc0e9153..823a41c7ab 100644 --- a/components/prism-diff.js +++ b/components/prism-diff.js @@ -39,11 +39,24 @@ alias.push("bold"); } - Prism.languages.diff[name] = { - // pattern: /^(?:[_].*(?:\r\n?|\n|(?![\s\S])))+/m - pattern: RegExp('^(?:[' + prefix + '].*(?:\r\n?|\n|(?![\\s\\S])))+', 'm'), - alias: alias - }; + var pattern = RegExp('^(?:[' + prefix + '].*(?:\r\n?|\n|(?![\\s\\S])))+', 'm'); + + if (['-', '<', '+', '>'].indexOf(prefix) !== -1) { + var inside = { + prefix: RegExp('^[' + prefix + ']', 'm') + }; + Prism.languages.diff[name] = { + pattern: pattern, + alias: alias, + inside: inside + }; + } else { + Prism.languages.diff[name] = { + pattern: pattern, + alias: alias + }; + } + }); // make prefixes available to Diff plugin diff --git a/tests/languages/diff/diff_feature.test b/tests/languages/diff/diff_feature.test index 4379e56d44..2c9593bf81 100644 --- a/tests/languages/diff/diff_feature.test +++ b/tests/languages/diff/diff_feature.test @@ -13,10 +13,10 @@ [ ["diff", "! qt: core\r\n"], ["unchanged", " unchanged\r\n"], - ["deleted-sign", "- qt: core\r\n"], - ["inserted-sign", "+ qt: core gui\r\n"], - ["deleted-arrow", "< qt: core\r\n"], - ["inserted-arrow", "> qt: core quick"] + ["deleted-sign", [["prefix", "-"], " qt: core\r\n"]], + ["inserted-sign", [["prefix", "+"], " qt: core gui\r\n"]], + ["deleted-arrow", [["prefix", "<"], " qt: core\r\n"]], + ["inserted-arrow", [["prefix", ">"], " qt: core quick"]] ] ----------------------------------------------------