From 01685c255fda6e13f1cd2980130d2e388d52125c Mon Sep 17 00:00:00 2001 From: Wu Cheng-Han Date: Sat, 4 Jul 2015 11:31:01 +0800 Subject: Updated codemirror to 5.4.0 --- public/vendor/codemirror/mode/markdown/markdown.js | 60 +++++++++++++--------- 1 file changed, 37 insertions(+), 23 deletions(-) (limited to 'public/vendor/codemirror/mode/markdown/markdown.js') diff --git a/public/vendor/codemirror/mode/markdown/markdown.js b/public/vendor/codemirror/mode/markdown/markdown.js index bc5314fc..bef37b8a 100755 --- a/public/vendor/codemirror/mode/markdown/markdown.js +++ b/public/vendor/codemirror/mode/markdown/markdown.js @@ -68,12 +68,12 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { , strong = 'strong' , strikethrough = 'strikethrough'; - var hrRE = /^([*\-=_])(?:\s*\1){2,}\s*$/ + var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/ , ulRE = /^[*\-+]\s+/ - , olRE = /^[0-9]+\.\s+/ + , olRE = /^[0-9]+([.)])\s+/ , taskListRE = /^\[(x| )\](?=\s)/ // Must follow ulRE or olRE - , atxHeaderRE = /^#+ ?/ - , setextHeaderRE = /^(?:\={1,}|-{1,})$/ + , atxHeaderRE = /^(#+)(?: |$)/ + , setextHeaderRE = /^ *(?:\={1,}|-{1,})\s*$/ , textRE = /^[^#!\[\]*_\\<>` "'(~]+/; function switchInline(stream, state, f) { @@ -100,6 +100,8 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { state.strikethrough = false; // Reset state.quote state.quote = 0; + // Reset state.indentedCode + state.indentedCode = false; if (!htmlFound && state.f == htmlBlock) { state.f = inlineNormal; state.block = blockNormal; @@ -116,7 +118,11 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { var sol = stream.sol(); - var prevLineIsList = state.list !== false; + var prevLineIsList = state.list !== false, + prevLineIsIndentedCode = state.indentedCode; + + state.indentedCode = false; + if (prevLineIsList) { if (state.indentationDiff >= 0) { // Continued list if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block @@ -134,23 +140,27 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { var match = null; if (state.indentationDiff >= 4) { - state.indentation -= 4; stream.skipToEnd(); - return code; + if (prevLineIsIndentedCode || !state.prevLineHasContent) { + state.indentation -= 4; + state.indentedCode = true; + return code; + } else { + return null; + } } else if (stream.eatSpace()) { return null; - } else if (match = stream.match(atxHeaderRE)) { - state.header = Math.min(6, match[0].indexOf(" ") !== -1 ? match[0].length - 1 : match[0].length); + } else if ((match = stream.match(atxHeaderRE)) && match[1].length <= 6) { + state.header = match[1].length; if (modeCfg.highlightFormatting) state.formatting = "header"; state.f = state.inline; return getType(state); - } else if (state.prevLineHasContent && (match = stream.match(setextHeaderRE))) { + } else if (state.prevLineHasContent && !state.quote && !prevLineIsList && !prevLineIsIndentedCode && (match = stream.match(setextHeaderRE))) { state.header = match[0].charAt(0) == '=' ? 1 : 2; if (modeCfg.highlightFormatting) state.formatting = "header"; state.f = state.inline; return getType(state); } else if (stream.eat('>')) { - state.indentation++; state.quote = sol ? 1 : state.quote + 1; if (modeCfg.highlightFormatting) state.formatting = "quote"; stream.eatSpace(); @@ -158,6 +168,7 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { } else if (stream.peek() === '[') { return switchInline(stream, state, footnoteLink); } else if (stream.match(hrRE, true)) { + state.hr = true; return hr; } else if ((!state.prevLineHasContent || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) { var listType = null; @@ -262,17 +273,16 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { } if (state.linkHref) { - styles.push(linkhref); - return styles.length ? styles.join(' ') : null; - } + styles.push(linkhref, "url"); + } else { // Only apply inline styles to non-url text + if (state.strong) { styles.push(strong); } + if (state.em) { styles.push(em); } + if (state.strikethrough) { styles.push(strikethrough); } - if (state.strong) { styles.push(strong); } - if (state.em) { styles.push(em); } - if (state.strikethrough) { styles.push(strikethrough); } + if (state.linkText) { styles.push(linktext); } - if (state.linkText) { styles.push(linktext); } - - if (state.code) { styles.push(code); } + if (state.code) { styles.push(code); } + } if (state.header) { styles.push(header); styles.push(header + "-" + state.header); } @@ -626,7 +636,7 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true); } state.f = state.inline = inlineNormal; - return linkhref; + return linkhref + " url"; } var savedInlineRE = []; @@ -663,6 +673,7 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { em: false, strong: false, header: 0, + hr: false, taskList: false, list: false, listDepth: 0, @@ -695,10 +706,12 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { strong: s.strong, strikethrough: s.strikethrough, header: s.header, + hr: s.hr, taskList: s.taskList, list: s.list, listDepth: s.listDepth, quote: s.quote, + indentedCode: s.indentedCode, trailingSpace: s.trailingSpace, trailingSpaceNewLine: s.trailingSpaceNewLine, md_inside: s.md_inside @@ -711,10 +724,11 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { state.formatting = false; if (stream.sol()) { - var forceBlankLine = !!state.header; + var forceBlankLine = !!state.header || state.hr; - // Reset state.header + // Reset state.header and state.hr state.header = 0; + state.hr = false; if (stream.match(/^\s*$/, true) || forceBlankLine) { state.prevLineHasContent = false; -- cgit v1.2.3