aboutsummaryrefslogtreecommitdiff
path: root/imports/codemirror/lib/util/runmode.js
diff options
context:
space:
mode:
authorNivesh Rajbhandari2012-03-12 16:25:28 -0700
committerNivesh Rajbhandari2012-03-12 16:25:28 -0700
commit5fb358d9e80a364d5f300d60b7a9fe0f773741e7 (patch)
tree2c4d5292b19c91697dffb542f369ec9dcb340f77 /imports/codemirror/lib/util/runmode.js
parent5f9b67be3b8bdb391d021103c6bcee6be2f6cdf4 (diff)
parent69d90467865a1384725b2301901be2180c5a841f (diff)
downloadninja-5fb358d9e80a364d5f300d60b7a9fe0f773741e7.tar.gz
Merge branch 'refs/heads/ninja-internal' into ToolFixes
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);