diff options
author | Jon Reid | 2012-03-06 18:08:11 -0800 |
---|---|---|
committer | Jon Reid | 2012-03-06 18:08:11 -0800 |
commit | a12603cfcfe9d82def3b972dcbcc80f1e790ad85 (patch) | |
tree | f52c7dcc837dd98d28f505696b67b94db15e4c63 /imports/codemirror/lib/util/runmode.js | |
parent | 60bba95eaffa8b5c741c6c85fb84b327cd75d6c3 (diff) | |
parent | bb6a1d82b2884b410f5859cc0c2cafd380acbe6a (diff) | |
download | ninja-a12603cfcfe9d82def3b972dcbcc80f1e790ad85.tar.gz |
Merge remote-tracking branch 'ninja-jduran/TimelineUber' into Timeline-uber
Diffstat (limited to 'imports/codemirror/lib/util/runmode.js')
-rw-r--r--[-rwxr-xr-x] | imports/codemirror/lib/util/runmode.js | 38 |
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 @@ | |||
1 | CodeMirror.runMode = function(string, modespec, callback) { | 1 | CodeMirror.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); |