From f6cf98c827e374baf38c01c2e341a93d2e06b275 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Mon, 18 Dec 2017 21:53:40 +0800 Subject: [PATCH] do not highlight code blocks without lang specified by default --- src/resources/hoedown.js | 15 ++++++++++----- src/resources/markdown-it.js | 10 +++++++--- src/resources/markdown_template.js | 10 ++++++++++ src/resources/marked.js | 10 +++++++--- src/resources/showdown.js | 4 +++- 5 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/resources/hoedown.js b/src/resources/hoedown.js index 408e0569..80e253c0 100644 --- a/src/resources/hoedown.js +++ b/src/resources/hoedown.js @@ -3,10 +3,14 @@ var placeholder = document.getElementById('placeholder'); // Use Marked to highlight code blocks in edit mode. marked.setOptions({ highlight: function(code, lang) { - if (lang && hljs.getLanguage(lang)) { - return hljs.highlight(lang, code).value; + if (lang) { + if (hljs.getLanguage(lang)) { + return hljs.highlight(lang, code).value; + } else { + return hljs.highlightAuto(code).value; + } } else { - return hljs.highlightAuto(code).value; + return code; } } }); @@ -37,7 +41,9 @@ var updateHtml = function(html) { } } - hljs.highlightBlock(code); + if (listContainsRegex(code.classList, /language-.*/)) { + hljs.highlightBlock(code); + } } } @@ -63,4 +69,3 @@ var highlightText = function(text, id, timeStamp) { var html = marked(text); content.highlightTextCB(html, id, timeStamp); } - diff --git a/src/resources/markdown-it.js b/src/resources/markdown-it.js index 51962184..c5b7ccc6 100644 --- a/src/resources/markdown-it.js +++ b/src/resources/markdown-it.js @@ -44,10 +44,14 @@ var mdit = window.markdownit({ typographer: true, langPrefix: 'lang-', highlight: function(str, lang) { - if (lang && hljs.getLanguage(lang)) { - return hljs.highlight(lang, str).value; + if (lang) { + if (hljs.getLanguage(lang)) { + return hljs.highlight(lang, str).value; + } else { + return hljs.highlightAuto(str).value; + } } else { - return hljs.highlightAuto(str).value; + return str; } } }); diff --git a/src/resources/markdown_template.js b/src/resources/markdown_template.js index 7d6ae805..4c3dbf50 100644 --- a/src/resources/markdown_template.js +++ b/src/resources/markdown_template.js @@ -844,3 +844,13 @@ var addClassToCodeBlock = function() { } } }; + +var listContainsRegex = function(strs, exp) { + for (var i = 0, len = strs.length; i < len; ++i) { + if (exp.test(strs[i])) { + return true; + } + } + + return false; +} diff --git a/src/resources/marked.js b/src/resources/marked.js index 32a1162e..95e2251a 100644 --- a/src/resources/marked.js +++ b/src/resources/marked.js @@ -17,10 +17,14 @@ renderer.heading = function(text, level) { // Highlight.js to highlight code block marked.setOptions({ highlight: function(code, lang) { - if (lang && hljs.getLanguage(lang)) { - return hljs.highlight(lang, code).value; + if (lang) { + if (hljs.getLanguage(lang)) { + return hljs.highlight(lang, code).value; + } else { + return hljs.highlightAuto(code).value; + } } else { - return hljs.highlightAuto(code).value; + return code; } } }); diff --git a/src/resources/showdown.js b/src/resources/showdown.js index f51d0675..8743b305 100644 --- a/src/resources/showdown.js +++ b/src/resources/showdown.js @@ -60,7 +60,9 @@ var highlightCodeBlocks = function(doc, enableMermaid, enableFlowchart) { } if (enableFlowchart && code.classList.contains('language-flowchart')) { // Flowchart code block. continue; - } else { + } + + if (listContainsRegex(code.classList, /language-.*/)) { hljs.highlightBlock(code); } }