From 0e04fff0ea80fa5cbe96b8354db38bd334aea83a Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Mon, 16 Jul 2012 16:04:05 -0700 Subject: upgrade to codemirror 2.3 Signed-off-by: Ananya Sen Conflicts: js/code-editor/codemirror-ninja/theme/lesser-dark-ninja.css Signed-off-by: Ananya Sen --- imports/codemirror/lib/util/foldcode.js | 36 +++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 13 deletions(-) (limited to 'imports/codemirror/lib/util/foldcode.js') diff --git a/imports/codemirror/lib/util/foldcode.js b/imports/codemirror/lib/util/foldcode.js index b700d860..02cfb50a 100644 --- a/imports/codemirror/lib/util/foldcode.js +++ b/imports/codemirror/lib/util/foldcode.js @@ -1,9 +1,9 @@ // the tagRangeFinder function is // Copyright (C) 2011 by Daniel Glazman // released under the MIT license (../../LICENSE) like the rest of CodeMirror -CodeMirror.tagRangeFinder = function(cm, line) { +CodeMirror.tagRangeFinder = function(cm, line, hideEnd) { var nameStartChar = "A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"; - var nameChar = nameStartChar + "\-\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; + var nameChar = nameStartChar + "\-\:\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; var xmlNAMERegExp = new RegExp("^[" + nameStartChar + "][" + nameChar + "]*"); var lineText = cm.getLine(line); @@ -36,8 +36,10 @@ CodeMirror.tagRangeFinder = function(cm, line) { var slash = lt.lastIndexOf("/", gt); if (-1 != slash && slash < gt) { var str = lineText.substr(slash, gt - slash + 1); - if (!str.match( /\/\s*\>/ )) // yep, that's the end of empty tag - return l+1; + if (!str.match( /\/\s*\>/ )) { // yep, that's the end of empty tag + if (hideEnd === true) l++; + return l; + } } } l++; @@ -95,8 +97,10 @@ CodeMirror.tagRangeFinder = function(cm, line) { depth--; else depth++; - if (!depth) - return l+1; + if (!depth) { + if (hideEnd === true) l++; + return l; + } } } l++; @@ -105,11 +109,16 @@ CodeMirror.tagRangeFinder = function(cm, line) { } }; -CodeMirror.braceRangeFinder = function(cm, line) { - var lineText = cm.getLine(line); - var startChar = lineText.lastIndexOf("{"); - if (startChar < 0 || lineText.lastIndexOf("}") > startChar) return; - var tokenType = cm.getTokenAt({line: line, ch: startChar}).className; +CodeMirror.braceRangeFinder = function(cm, line, hideEnd) { + var lineText = cm.getLine(line), at = lineText.length, startChar, tokenType; + for (;;) { + var found = lineText.lastIndexOf("{", at); + if (found < 0) break; + tokenType = cm.getTokenAt({line: line, ch: found}).className; + if (!/^(comment|string)/.test(tokenType)) { startChar = found; break; } + at = found - 1; + } + if (startChar == null || lineText.lastIndexOf("}") > startChar) return; var count = 1, lastLine = cm.lineCount(), end; outer: for (var i = line + 1; i < lastLine; ++i) { var text = cm.getLine(i), pos = 0; @@ -127,6 +136,7 @@ CodeMirror.braceRangeFinder = function(cm, line) { } } if (end == null || end == line + 1) return; + if (hideEnd === true) end++; return end; }; @@ -144,7 +154,7 @@ CodeMirror.indentRangeFinder = function(cm, line) { return last + 1; }; -CodeMirror.newFoldFunction = function(rangeFinder, markText) { +CodeMirror.newFoldFunction = function(rangeFinder, markText, hideEnd) { var folded = []; if (markText == null) markText = '
%N%'; @@ -169,7 +179,7 @@ CodeMirror.newFoldFunction = function(rangeFinder, markText) { folded.splice(known.pos, 1); expand(cm, known.region); } else { - var end = rangeFinder(cm, line); + var end = rangeFinder(cm, line, hideEnd); if (end == null) return; var hidden = []; for (var i = line + 1; i < end; ++i) { -- cgit v1.2.3