aboutsummaryrefslogtreecommitdiff
path: root/imports/codemirror/lib/util/runmode.js
diff options
context:
space:
mode:
authorPushkar Joshi2012-03-06 17:04:40 -0800
committerPushkar Joshi2012-03-06 17:04:40 -0800
commit7a43958033906b2273de88bc2a26cda7a905d202 (patch)
treef71817e712c4b07a48257a4f0b206cf9033421df /imports/codemirror/lib/util/runmode.js
parent264e3d8e6d3624083d2fab9fe2560234553bb2ad (diff)
parent2e3943a8f751ec572066f168b58464c24b9f29e5 (diff)
downloadninja-7a43958033906b2273de88bc2a26cda7a905d202.tar.gz
Merge branch 'master' into brushtool
Diffstat (limited to 'imports/codemirror/lib/util/runmode.js')
-rw-r--r--[-rwxr-xr-x]imports/codemirror/lib/util/runmode.js38
1 files changed, 30 insertions, 8 deletions
diff --git a/imports/codemirror/lib/util/runmode.js b/imports/codemirror/lib/util/runmode.js
index de4a7602..fc58d857 100755..100644
--- a/imports/codemirror/lib/util/runmode.js
+++ b/imports/codemirror/lib/util/runmode.js
@@ -1,15 +1,37 @@
1CodeMirror.runMode = function(string, modespec, callback) { 1CodeMirror.runMode = function(string, modespec, callback, options) {
2 var mode = CodeMirror.getMode({indentUnit: 2}, modespec); 2 var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);
3 var isNode = callback.nodeType == 1; 3 var isNode = callback.nodeType == 1;
4 var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;
4 if (isNode) { 5 if (isNode) {
5 var node = callback, accum = []; 6 var node = callback, accum = [], col = 0;
6 callback = function(string, style) { 7 callback = function(text, style) {
7 if (string == "\n") 8 if (text == "\n") {
8 accum.push("<br>"); 9 accum.push("<br>");
9 else if (style) 10 col = 0;
10 accum.push("<span class=\"cm-" + CodeMirror.htmlEscape(style) + "\">" + CodeMirror.htmlEscape(string) + "</span>"); 11 return;
12 }
13 var escaped = "";
14 // HTML-escape and replace tabs
15 for (var pos = 0;;) {
16 var idx = text.indexOf("\t", pos);
17 if (idx == -1) {
18 escaped += CodeMirror.htmlEscape(text.slice(pos));
19 col += text.length - pos;
20 break;
21 } else {
22 col += idx - pos;
23 escaped += CodeMirror.htmlEscape(text.slice(pos, idx));
24 var size = tabSize - col % tabSize;
25 col += size;
26 for (var i = 0; i < size; ++i) escaped += " ";
27 pos = idx + 1;
28 }
29 }
30
31 if (style)
32 accum.push("<span class=\"cm-" + CodeMirror.htmlEscape(style) + "\">" + escaped + "</span>");
11 else 33 else
12 accum.push(CodeMirror.htmlEscape(string)); 34 accum.push(escaped);
13 } 35 }
14 } 36 }
15 var lines = CodeMirror.splitLines(string), state = CodeMirror.startState(mode); 37 var lines = CodeMirror.splitLines(string), state = CodeMirror.startState(mode);