codemirror-rails 2.36 → 3.00

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. data/lib/codemirror/rails/version.rb +2 -2
  2. data/vendor/assets/javascripts/codemirror.js +3727 -2345
  3. data/vendor/assets/javascripts/codemirror/keymaps/vim.js +2226 -825
  4. data/vendor/assets/javascripts/codemirror/modes/clike.js +23 -8
  5. data/vendor/assets/javascripts/codemirror/modes/clojure.js +4 -4
  6. data/vendor/assets/javascripts/codemirror/modes/coffeescript.js +1 -1
  7. data/vendor/assets/javascripts/codemirror/modes/commonlisp.js +1 -1
  8. data/vendor/assets/javascripts/codemirror/modes/css.js +20 -3
  9. data/vendor/assets/javascripts/codemirror/modes/diff.js +2 -2
  10. data/vendor/assets/javascripts/codemirror/modes/ecl.js +192 -203
  11. data/vendor/assets/javascripts/codemirror/modes/erlang.js +1 -1
  12. data/vendor/assets/javascripts/codemirror/modes/gfm.js +1 -1
  13. data/vendor/assets/javascripts/codemirror/modes/go.js +1 -6
  14. data/vendor/assets/javascripts/codemirror/modes/groovy.js +1 -1
  15. data/vendor/assets/javascripts/codemirror/modes/haskell.js +1 -1
  16. data/vendor/assets/javascripts/codemirror/modes/haxe.js +13 -13
  17. data/vendor/assets/javascripts/codemirror/modes/htmlembedded.js +3 -3
  18. data/vendor/assets/javascripts/codemirror/modes/htmlmixed.js +1 -1
  19. data/vendor/assets/javascripts/codemirror/modes/http.js +98 -0
  20. data/vendor/assets/javascripts/codemirror/modes/javascript.js +1 -1
  21. data/vendor/assets/javascripts/codemirror/modes/jinja2.js +1 -1
  22. data/vendor/assets/javascripts/codemirror/modes/markdown.js +7 -14
  23. data/vendor/assets/javascripts/codemirror/modes/mysql.js +2 -2
  24. data/vendor/assets/javascripts/codemirror/modes/ntriples.js +0 -2
  25. data/vendor/assets/javascripts/codemirror/modes/ocaml.js +1 -2
  26. data/vendor/assets/javascripts/codemirror/modes/pascal.js +2 -2
  27. data/vendor/assets/javascripts/codemirror/modes/perl.js +1 -1
  28. data/vendor/assets/javascripts/codemirror/modes/php.js +5 -4
  29. data/vendor/assets/javascripts/codemirror/modes/pig.js +3 -4
  30. data/vendor/assets/javascripts/codemirror/modes/plsql.js +3 -4
  31. data/vendor/assets/javascripts/codemirror/modes/python.js +1 -1
  32. data/vendor/assets/javascripts/codemirror/modes/r.js +1 -1
  33. data/vendor/assets/javascripts/codemirror/modes/rpm-changes.js +1 -1
  34. data/vendor/assets/javascripts/codemirror/modes/rpm-spec.js +1 -1
  35. data/vendor/assets/javascripts/codemirror/modes/rst.js +1 -13
  36. data/vendor/assets/javascripts/codemirror/modes/ruby.js +1 -1
  37. data/vendor/assets/javascripts/codemirror/modes/rust.js +3 -3
  38. data/vendor/assets/javascripts/codemirror/modes/scheme.js +4 -4
  39. data/vendor/assets/javascripts/codemirror/modes/shell.js +1 -1
  40. data/vendor/assets/javascripts/codemirror/modes/sieve.js +1 -1
  41. data/vendor/assets/javascripts/codemirror/modes/smalltalk.js +2 -2
  42. data/vendor/assets/javascripts/codemirror/modes/smarty.js +1 -1
  43. data/vendor/assets/javascripts/codemirror/modes/sparql.js +2 -2
  44. data/vendor/assets/javascripts/codemirror/modes/stex.js +6 -13
  45. data/vendor/assets/javascripts/codemirror/modes/tiddlywiki.js +6 -37
  46. data/vendor/assets/javascripts/codemirror/modes/tiki.js +3 -3
  47. data/vendor/assets/javascripts/codemirror/modes/vb.js +3 -3
  48. data/vendor/assets/javascripts/codemirror/modes/velocity.js +2 -4
  49. data/vendor/assets/javascripts/codemirror/modes/verilog.js +182 -194
  50. data/vendor/assets/javascripts/codemirror/modes/xml.js +9 -5
  51. data/vendor/assets/javascripts/codemirror/modes/xquery.js +3 -4
  52. data/vendor/assets/javascripts/codemirror/utils/closetag.js +85 -164
  53. data/vendor/assets/javascripts/codemirror/utils/colorize.js +29 -0
  54. data/vendor/assets/javascripts/codemirror/utils/continuecomment.js +1 -1
  55. data/vendor/assets/javascripts/codemirror/utils/continuelist.js +28 -0
  56. data/vendor/assets/javascripts/codemirror/utils/dialog.js +21 -16
  57. data/vendor/assets/javascripts/codemirror/utils/foldcode.js +59 -73
  58. data/vendor/assets/javascripts/codemirror/utils/formatting.js +43 -131
  59. data/vendor/assets/javascripts/codemirror/utils/javascript-hint.js +22 -19
  60. data/vendor/assets/javascripts/codemirror/utils/match-highlighter.js +5 -3
  61. data/vendor/assets/javascripts/codemirror/utils/matchbrackets.js +63 -0
  62. data/vendor/assets/javascripts/codemirror/utils/multiplex.js +18 -0
  63. data/vendor/assets/javascripts/codemirror/utils/pig-hint.js +3 -9
  64. data/vendor/assets/javascripts/codemirror/utils/runmode.js +19 -20
  65. data/vendor/assets/javascripts/codemirror/utils/search.js +6 -5
  66. data/vendor/assets/javascripts/codemirror/utils/searchcursor.js +1 -1
  67. data/vendor/assets/javascripts/codemirror/utils/simple-hint.js +10 -10
  68. data/vendor/assets/javascripts/codemirror/utils/xml-hint.js +2 -2
  69. data/vendor/assets/stylesheets/codemirror.css +169 -104
  70. data/vendor/assets/stylesheets/codemirror/themes/ambiance-mobile.css +1 -1
  71. data/vendor/assets/stylesheets/codemirror/themes/ambiance.css +7 -12
  72. data/vendor/assets/stylesheets/codemirror/themes/blackboard.css +3 -3
  73. data/vendor/assets/stylesheets/codemirror/themes/cobalt.css +3 -3
  74. data/vendor/assets/stylesheets/codemirror/themes/erlang-dark.css +3 -3
  75. data/vendor/assets/stylesheets/codemirror/themes/lesser-dark.css +4 -4
  76. data/vendor/assets/stylesheets/codemirror/themes/monokai.css +3 -3
  77. data/vendor/assets/stylesheets/codemirror/themes/night.css +3 -3
  78. data/vendor/assets/stylesheets/codemirror/themes/rubyblue.css +3 -3
  79. data/vendor/assets/stylesheets/codemirror/themes/solarized.css +207 -0
  80. data/vendor/assets/stylesheets/codemirror/themes/twilight.css +4 -4
  81. data/vendor/assets/stylesheets/codemirror/themes/vibrant-ink.css +3 -3
  82. data/vendor/assets/stylesheets/codemirror/themes/xq-dark.css +3 -3
  83. data/vendor/assets/stylesheets/codemirror/utils/dialog.css +12 -7
  84. metadata +16 -11
@@ -1,5 +1,5 @@
1
1
  // Define match-highlighter commands. Depends on searchcursor.js
2
- // Use by attaching the following function call to the onCursorActivity event:
2
+ // Use by attaching the following function call to the cursorActivity event:
3
3
  //myCodeMirror.matchHighlight(minChars);
4
4
  // And including a special span.CodeMirror-matchhighlight css class (also optionally a separate one for .CodeMirror-focused -- see demo matchhighlighter.html)
5
5
 
@@ -30,8 +30,10 @@
30
30
  if (cm.lineCount() < 2000) { // This is too expensive on big documents.
31
31
  for (var cursor = cm.getSearchCursor(query); cursor.findNext();) {
32
32
  //Only apply matchhighlight to the matches other than the one actually selected
33
- if (!(cursor.from().line === cm.getCursor(true).line && cursor.from().ch === cm.getCursor(true).ch))
34
- state.marked.push(cm.markText(cursor.from(), cursor.to(), className));
33
+ if (cursor.from().line !== cm.getCursor(true).line ||
34
+ cursor.from().ch !== cm.getCursor(true).ch)
35
+ state.marked.push(cm.markText(cursor.from(), cursor.to(),
36
+ {className: className}));
35
37
  }
36
38
  }
37
39
  });
@@ -0,0 +1,63 @@
1
+ (function() {
2
+ var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"};
3
+ function findMatchingBracket(cm) {
4
+ var cur = cm.getCursor(), line = cm.getLineHandle(cur.line), pos = cur.ch - 1;
5
+ var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];
6
+ if (!match) return null;
7
+ var forward = match.charAt(1) == ">", d = forward ? 1 : -1;
8
+ var style = cm.getTokenAt({line: cur.line, ch: pos + 1}).type;
9
+
10
+ var stack = [line.text.charAt(pos)], re = /[(){}[\]]/;
11
+ function scan(line, lineNo, start) {
12
+ if (!line.text) return;
13
+ var pos = forward ? 0 : line.text.length - 1, end = forward ? line.text.length : -1;
14
+ if (start != null) pos = start + d;
15
+ for (; pos != end; pos += d) {
16
+ var ch = line.text.charAt(pos);
17
+ if (re.test(ch) && cm.getTokenAt({line: lineNo, ch: pos + 1}).type == style) {
18
+ var match = matching[ch];
19
+ if (match.charAt(1) == ">" == forward) stack.push(ch);
20
+ else if (stack.pop() != match.charAt(0)) return {pos: pos, match: false};
21
+ else if (!stack.length) return {pos: pos, match: true};
22
+ }
23
+ }
24
+ }
25
+ for (var i = cur.line, found, e = forward ? Math.min(i + 100, cm.lineCount()) : Math.max(-1, i - 100); i != e; i+=d) {
26
+ if (i == cur.line) found = scan(line, i, pos);
27
+ else found = scan(cm.getLineHandle(i), i);
28
+ if (found) break;
29
+ }
30
+ return {from: {line: cur.line, ch: pos}, to: found && {line: i, ch: found.pos}, match: found && found.match};
31
+ }
32
+
33
+ function matchBrackets(cm, autoclear) {
34
+ var found = findMatchingBracket(cm);
35
+ if (!found) return;
36
+ var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
37
+ var one = cm.markText(found.from, {line: found.from.line, ch: found.from.ch + 1},
38
+ {className: style});
39
+ var two = found.to && cm.markText(found.to, {line: found.to.line, ch: found.to.ch + 1},
40
+ {className: style});
41
+ var clear = function() {
42
+ cm.operation(function() { one.clear(); two && two.clear(); });
43
+ };
44
+ if (autoclear) setTimeout(clear, 800);
45
+ else return clear;
46
+ }
47
+
48
+ var currentlyHighlighted = null;
49
+ function doMatchBrackets(cm) {
50
+ cm.operation(function() {
51
+ if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}
52
+ if (!cm.somethingSelected()) currentlyHighlighted = matchBrackets(cm, false);
53
+ });
54
+ }
55
+
56
+ CodeMirror.defineOption("matchBrackets", false, function(cm, val) {
57
+ if (val) cm.on("cursorActivity", doMatchBrackets);
58
+ else cm.off("cursorActivity", doMatchBrackets);
59
+ });
60
+
61
+ CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);});
62
+ CodeMirror.defineExtension("findMatchingBracket", function(){return findMatchingBracket(this);});
63
+ })();
@@ -68,6 +68,24 @@ CodeMirror.multiplexingMode = function(outer /*, others */) {
68
68
  return mode.indent(state.innerActive ? state.inner : state.outer, textAfter);
69
69
  },
70
70
 
71
+ blankLine: function(state) {
72
+ var mode = state.innerActive ? state.innerActive.mode : outer;
73
+ if (mode.blankLine) {
74
+ mode.blankLine(state.innerActive ? state.inner : state.outer);
75
+ }
76
+ if (!state.innerActive) {
77
+ for (var i = 0; i < n_others; ++i) {
78
+ var other = others[i];
79
+ if (other.open === "\n") {
80
+ state.innerActive = other;
81
+ state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, "") : 0);
82
+ }
83
+ }
84
+ } else if (mode.close === "\n") {
85
+ state.innerActive = state.inner = null;
86
+ }
87
+ },
88
+
71
89
  electricChars: outer.electricChars,
72
90
 
73
91
  innerMode: function(state) {
@@ -16,7 +16,7 @@
16
16
  return arr.indexOf(item) != -1;
17
17
  }
18
18
 
19
- function scriptHint(editor, keywords, getToken) {
19
+ function scriptHint(editor, _keywords, getToken) {
20
20
  // Find the token at the cursor
21
21
  var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token;
22
22
  // If it's not a 'word-style' token, ignore the token.
@@ -45,12 +45,6 @@
45
45
  return scriptHint(editor, pigKeywordsU, function (e, cur) {return e.getTokenAt(cur);});
46
46
  };
47
47
 
48
- function toTitleCase(str) {
49
- return str.replace(/(?:^|\s)\w/g, function(match) {
50
- return match.toUpperCase();
51
- });
52
- }
53
-
54
48
  var pigKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP "
55
49
  + "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL "
56
50
  + "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE "
@@ -109,9 +103,9 @@
109
103
  // find in the current environment.
110
104
  var obj = context.pop(), base;
111
105
 
112
- if (obj.className == "pig-word")
106
+ if (obj.type == "variable")
113
107
  base = obj.string;
114
- else if(obj.className == "pig-type")
108
+ else if(obj.type == "variable-3")
115
109
  base = ":" + obj.string;
116
110
 
117
111
  while (base != null && context.length)
@@ -1,43 +1,44 @@
1
1
  CodeMirror.runMode = function(string, modespec, callback, options) {
2
- function esc(str) {
3
- return str.replace(/[<&]/g, function(ch) { return ch == "<" ? "&lt;" : "&amp;"; });
4
- }
5
-
6
2
  var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);
7
- var isNode = callback.nodeType == 1;
8
- var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;
9
- if (isNode) {
10
- var node = callback, accum = [], col = 0;
3
+
4
+ if (callback.nodeType == 1) {
5
+ var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;
6
+ var node = callback, col = 0;
7
+ node.innerHTML = "";
11
8
  callback = function(text, style) {
12
9
  if (text == "\n") {
13
- accum.push("<br>");
10
+ node.appendChild(document.createElement("br"));
14
11
  col = 0;
15
12
  return;
16
13
  }
17
- var escaped = "";
18
- // HTML-escape and replace tabs
14
+ var content = "";
15
+ // replace tabs
19
16
  for (var pos = 0;;) {
20
17
  var idx = text.indexOf("\t", pos);
21
18
  if (idx == -1) {
22
- escaped += esc(text.slice(pos));
19
+ content += text.slice(pos);
23
20
  col += text.length - pos;
24
21
  break;
25
22
  } else {
26
23
  col += idx - pos;
27
- escaped += esc(text.slice(pos, idx));
24
+ content += text.slice(pos, idx);
28
25
  var size = tabSize - col % tabSize;
29
26
  col += size;
30
- for (var i = 0; i < size; ++i) escaped += " ";
27
+ for (var i = 0; i < size; ++i) content += " ";
31
28
  pos = idx + 1;
32
29
  }
33
30
  }
34
31
 
35
- if (style)
36
- accum.push("<span class=\"cm-" + esc(style) + "\">" + escaped + "</span>");
37
- else
38
- accum.push(escaped);
32
+ if (style) {
33
+ var sp = node.appendChild(document.createElement("span"));
34
+ sp.className = "cm-" + style.replace(/ +/g, " cm-");
35
+ sp.appendChild(document.createTextNode(content));
36
+ } else {
37
+ node.appendChild(document.createTextNode(content));
38
+ }
39
39
  };
40
40
  }
41
+
41
42
  var lines = CodeMirror.splitLines(string), state = CodeMirror.startState(mode);
42
43
  for (var i = 0, e = lines.length; i < e; ++i) {
43
44
  if (i) callback("\n");
@@ -48,6 +49,4 @@ CodeMirror.runMode = function(string, modespec, callback, options) {
48
49
  stream.start = stream.pos;
49
50
  }
50
51
  }
51
- if (isNode)
52
- node.innerHTML = accum.join("");
53
52
  };
@@ -41,7 +41,8 @@
41
41
  state.query = parseQuery(query);
42
42
  if (cm.lineCount() < 2000) { // This is too expensive on big documents.
43
43
  for (var cursor = getSearchCursor(cm, state.query); cursor.findNext();)
44
- state.marked.push(cm.markText(cursor.from(), cursor.to(), "CodeMirror-searching"));
44
+ state.marked.push(cm.markText(cursor.from(), cursor.to(),
45
+ {className: "CodeMirror-searching"}));
45
46
  }
46
47
  state.posFrom = state.posTo = cm.getCursor();
47
48
  findNext(cm, rev);
@@ -76,14 +77,14 @@
76
77
  query = parseQuery(query);
77
78
  dialog(cm, replacementQueryDialog, "Replace with:", function(text) {
78
79
  if (all) {
79
- cm.compoundChange(function() { cm.operation(function() {
80
+ cm.operation(function() {
80
81
  for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {
81
82
  if (typeof query != "string") {
82
83
  var match = cm.getRange(cursor.from(), cursor.to()).match(query);
83
- cursor.replace(text.replace(/\$(\d)/, function(w, i) {return match[i];}));
84
+ cursor.replace(text.replace(/\$(\d)/, function(_, i) {return match[i];}));
84
85
  } else cursor.replace(text);
85
86
  }
86
- });});
87
+ });
87
88
  } else {
88
89
  clearSearch(cm);
89
90
  var cursor = getSearchCursor(cm, query, cm.getCursor());
@@ -100,7 +101,7 @@
100
101
  }
101
102
  function doReplace(match) {
102
103
  cursor.replace(typeof query == "string" ? text :
103
- text.replace(/\$(\d)/, function(w, i) {return match[i];}));
104
+ text.replace(/\$(\d)/, function(_, i) {return match[i];}));
104
105
  advance();
105
106
  }
106
107
  advance();
@@ -18,7 +18,7 @@
18
18
  var line = cm.getLine(pos.line).slice(0, pos.ch), match = query.exec(line), start = 0;
19
19
  while (match) {
20
20
  start += match.index + 1;
21
- line = line.slice(start);
21
+ line = line.slice(start);
22
22
  query.lastIndex = 0;
23
23
  var newmatch = query.exec(line);
24
24
  if (newmatch) match = newmatch;
@@ -14,11 +14,11 @@
14
14
 
15
15
  // Don't show completions if token has changed and the option is set.
16
16
  if (options.closeOnTokenChange && previousToken != null &&
17
- (tempToken.start != previousToken.start || tempToken.className != previousToken.className)) {
17
+ (tempToken.start != previousToken.start || tempToken.type != previousToken.type)) {
18
18
  return;
19
19
  }
20
20
 
21
- var result = getHints(editor);
21
+ var result = getHints(editor, givenOptions);
22
22
  if (!result || !result.list.length) return;
23
23
  var completions = result.list;
24
24
  function insert(str) {
@@ -44,14 +44,14 @@
44
44
  }
45
45
  sel.firstChild.selected = true;
46
46
  sel.size = Math.min(10, completions.length);
47
- var pos = options.alignWithWord ? editor.charCoords(result.from) : editor.cursorCoords();
48
- complete.style.left = pos.x + "px";
49
- complete.style.top = pos.yBot + "px";
47
+ var pos = editor.cursorCoords(options.alignWithWord ? result.from : null);
48
+ complete.style.left = pos.left + "px";
49
+ complete.style.top = pos.bottom + "px";
50
50
  document.body.appendChild(complete);
51
51
  // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.
52
52
  var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);
53
- if(winW - pos.x < sel.clientWidth)
54
- complete.style.left = (pos.x - sel.clientWidth) + "px";
53
+ if(winW - pos.left < sel.clientWidth)
54
+ complete.style.left = (pos.left - sel.clientWidth) + "px";
55
55
  // Hack to hide the scrollbar.
56
56
  if (completions.length <= 10)
57
57
  complete.style.width = (sel.clientWidth - 1) + "px";
@@ -67,8 +67,8 @@
67
67
  close();
68
68
  setTimeout(function(){editor.focus();}, 50);
69
69
  }
70
- CodeMirror.connect(sel, "blur", close);
71
- CodeMirror.connect(sel, "keydown", function(event) {
70
+ CodeMirror.on(sel, "blur", close);
71
+ CodeMirror.on(sel, "keydown", function(event) {
72
72
  var code = event.keyCode;
73
73
  // Enter
74
74
  if (code == 13) {CodeMirror.e_stop(event); pick();}
@@ -84,7 +84,7 @@
84
84
  }
85
85
  }
86
86
  });
87
- CodeMirror.connect(sel, "dblclick", pick);
87
+ CodeMirror.on(sel, "dblclick", pick);
88
88
 
89
89
  sel.focus();
90
90
  // Opera sometimes ignores focusing a freshly created node
@@ -36,7 +36,7 @@
36
36
 
37
37
  text = text.slice(0, text.length - typed.length);
38
38
 
39
- var path = getActiveElement(cm, text) + simbol;
39
+ var path = getActiveElement(text) + simbol;
40
40
  var hints = CodeMirror.xmlHints[path];
41
41
 
42
42
  if(typeof hints === 'undefined')
@@ -57,7 +57,7 @@
57
57
  };
58
58
  };
59
59
 
60
- var getActiveElement = function(codeMirror, text) {
60
+ var getActiveElement = function(text) {
61
61
 
62
62
  var element = '';
63
63
 
@@ -1,174 +1,239 @@
1
+ /* BASICS */
2
+
1
3
  .CodeMirror {
2
- line-height: 1em;
4
+ /* Set height, width, borders, and global font properties here */
3
5
  font-family: monospace;
6
+ height: 300px;
7
+ }
8
+ .CodeMirror-scroll {
9
+ /* Set scrolling behaviour here */
10
+ overflow: auto;
11
+ }
12
+
13
+ /* PADDING */
14
+
15
+ .CodeMirror-lines {
16
+ padding: 4px 0; /* Vertical padding around content */
17
+ }
18
+ .CodeMirror pre {
19
+ padding: 0 4px; /* Horizontal padding of content */
20
+ }
4
21
 
5
- /* Necessary so the scrollbar can be absolutely positioned within the wrapper on Lion. */
22
+ .CodeMirror-scrollbar-filler {
23
+ background-color: white; /* The little square between H and V scrollbars */
24
+ }
25
+
26
+ /* GUTTER */
27
+
28
+ .CodeMirror-gutters {
29
+ border-right: 1px solid #ddd;
30
+ background-color: #f7f7f7;
31
+ }
32
+ .CodeMirror-linenumbers {}
33
+ .CodeMirror-linenumber {
34
+ padding: 0 3px 0 5px;
35
+ min-width: 20px;
36
+ text-align: right;
37
+ color: #999;
38
+ }
39
+
40
+ /* CURSOR */
41
+
42
+ .CodeMirror pre.CodeMirror-cursor {
43
+ border-left: 1px solid black;
44
+ }
45
+ /* Shown when moving in bi-directional text */
46
+ .CodeMirror pre.CodeMirror-secondarycursor {
47
+ border-left: 1px solid silver;
48
+ }
49
+ .cm-keymap-fat-cursor pre.CodeMirror-cursor {
50
+ width: auto;
51
+ border: 0;
52
+ background: transparent;
53
+ background: rgba(0, 200, 0, .4);
54
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#6600c800, endColorstr=#4c00c800);
55
+ }
56
+ /* Kludge to turn off filter in ie9+, which also accepts rgba */
57
+ .cm-keymap-fat-cursor pre.CodeMirror-cursor:not(#nonsense_id) {
58
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
59
+ }
60
+ /* Can style cursor different in overwrite (non-insert) mode */
61
+ .CodeMirror pre.CodeMirror-cursor.CodeMirror-overwrite {}
62
+
63
+ /* DEFAULT THEME */
64
+
65
+ .cm-s-default .cm-keyword {color: #708;}
66
+ .cm-s-default .cm-atom {color: #219;}
67
+ .cm-s-default .cm-number {color: #164;}
68
+ .cm-s-default .cm-def {color: #00f;}
69
+ .cm-s-default .cm-variable {color: black;}
70
+ .cm-s-default .cm-variable-2 {color: #05a;}
71
+ .cm-s-default .cm-variable-3 {color: #085;}
72
+ .cm-s-default .cm-property {color: black;}
73
+ .cm-s-default .cm-operator {color: black;}
74
+ .cm-s-default .cm-comment {color: #a50;}
75
+ .cm-s-default .cm-string {color: #a11;}
76
+ .cm-s-default .cm-string-2 {color: #f50;}
77
+ .cm-s-default .cm-meta {color: #555;}
78
+ .cm-s-default .cm-error {color: #f00;}
79
+ .cm-s-default .cm-qualifier {color: #555;}
80
+ .cm-s-default .cm-builtin {color: #30a;}
81
+ .cm-s-default .cm-bracket {color: #997;}
82
+ .cm-s-default .cm-tag {color: #170;}
83
+ .cm-s-default .cm-attribute {color: #00c;}
84
+ .cm-s-default .cm-header {color: blue;}
85
+ .cm-s-default .cm-quote {color: #090;}
86
+ .cm-s-default .cm-hr {color: #999;}
87
+ .cm-s-default .cm-link {color: #00c;}
88
+
89
+ .cm-negative {color: #d44;}
90
+ .cm-positive {color: #292;}
91
+ .cm-header, .cm-strong {font-weight: bold;}
92
+ .cm-em {font-style: italic;}
93
+ .cm-emstrong {font-style: italic; font-weight: bold;}
94
+ .cm-link {text-decoration: underline;}
95
+
96
+ .cm-invalidchar {color: #f00;}
97
+
98
+ div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
99
+ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
100
+
101
+ /* STOP */
102
+
103
+ /* The rest of this file contains styles related to the mechanics of
104
+ the editor. You probably shouldn't touch them. */
105
+
106
+ .CodeMirror {
107
+ line-height: 1;
6
108
  position: relative;
7
- /* This prevents unwanted scrollbars from showing up on the body and wrapper in IE. */
8
109
  overflow: hidden;
9
110
  }
10
111
 
11
112
  .CodeMirror-scroll {
12
- overflow: auto;
13
- height: 300px;
14
- /* This is needed to prevent an IE[67] bug where the scrolled content
15
- is visible outside of the scrolling box. */
113
+ /* 30px is the magic margin used to hide the element's real scrollbars */
114
+ /* See overflow: hidden in .CodeMirror, and the paddings in .CodeMirror-sizer */
115
+ margin-bottom: -30px; margin-right: -30px;
116
+ padding-bottom: 30px; padding-right: 30px;
117
+ height: 100%;
118
+ outline: none; /* Prevent dragging from highlighting the element */
119
+ position: relative;
120
+ }
121
+ .CodeMirror-sizer {
16
122
  position: relative;
17
- outline: none;
18
123
  }
19
124
 
20
- /* Vertical scrollbar */
21
- .CodeMirror-scrollbar {
125
+ /* The fake, visible scrollbars. Used to force redraw during scrolling
126
+ before actuall scrolling happens, thus preventing shaking and
127
+ flickering artifacts. */
128
+ .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler {
22
129
  position: absolute;
130
+ z-index: 6;
131
+ display: none;
132
+ }
133
+ .CodeMirror-vscrollbar {
23
134
  right: 0; top: 0;
24
135
  overflow-x: hidden;
25
136
  overflow-y: scroll;
26
- z-index: 5;
27
- }
28
- .CodeMirror-scrollbar-inner {
29
- /* This needs to have a nonzero width in order for the scrollbar to appear
30
- in Firefox and IE9. */
31
- width: 1px;
32
- }
33
- .CodeMirror-scrollbar.cm-sb-overlap {
34
- /* Ensure that the scrollbar appears in Lion, and that it overlaps the content
35
- rather than sitting to the right of it. */
36
- position: absolute;
37
- z-index: 1;
38
- float: none;
39
- right: 0;
40
- min-width: 12px;
41
137
  }
42
- .CodeMirror-scrollbar.cm-sb-nonoverlap {
43
- min-width: 12px;
138
+ .CodeMirror-hscrollbar {
139
+ bottom: 0; left: 0;
140
+ overflow-y: hidden;
141
+ overflow-x: scroll;
44
142
  }
45
- .CodeMirror-scrollbar.cm-sb-ie7 {
46
- min-width: 18px;
143
+ .CodeMirror-scrollbar-filler {
144
+ right: 0; bottom: 0;
145
+ z-index: 6;
47
146
  }
48
147
 
49
- .CodeMirror-gutter {
148
+ .CodeMirror-gutters {
50
149
  position: absolute; left: 0; top: 0;
51
- z-index: 10;
52
- background-color: #f7f7f7;
53
- border-right: 1px solid #eee;
54
- min-width: 2em;
55
150
  height: 100%;
151
+ z-index: 3;
56
152
  }
57
- .CodeMirror-gutter-text {
58
- color: #aaa;
59
- text-align: right;
60
- padding: .4em .2em .4em .4em;
61
- white-space: pre !important;
153
+ .CodeMirror-gutter {
154
+ height: 100%;
155
+ display: inline-block;
156
+ /* Hack to make IE7 behave */
157
+ *zoom:1;
158
+ *display:inline;
159
+ }
160
+ .CodeMirror-gutter-elt {
161
+ position: absolute;
62
162
  cursor: default;
163
+ z-index: 4;
63
164
  }
165
+
64
166
  .CodeMirror-lines {
65
- padding: .4em;
66
- white-space: pre;
67
167
  cursor: text;
68
168
  }
69
-
70
169
  .CodeMirror pre {
71
- -moz-border-radius: 0;
72
- -webkit-border-radius: 0;
73
- -o-border-radius: 0;
74
- border-radius: 0;
75
- border-width: 0; margin: 0; padding: 0; background: transparent;
170
+ /* Reset some styles that the rest of the page might have set */
171
+ -moz-border-radius: 0; -webkit-border-radius: 0; -o-border-radius: 0; border-radius: 0;
172
+ border-width: 0;
173
+ background: transparent;
76
174
  font-family: inherit;
77
175
  font-size: inherit;
78
- padding: 0; margin: 0;
176
+ margin: 0;
79
177
  white-space: pre;
80
178
  word-wrap: normal;
81
179
  line-height: inherit;
82
180
  color: inherit;
181
+ z-index: 2;
182
+ position: relative;
83
183
  overflow: visible;
84
184
  }
85
-
86
185
  .CodeMirror-wrap pre {
87
186
  word-wrap: break-word;
88
187
  white-space: pre-wrap;
89
188
  word-break: normal;
90
189
  }
190
+ .CodeMirror-linebackground {
191
+ position: absolute;
192
+ left: 0; right: 0; top: 0; bottom: 0;
193
+ z-index: 0;
194
+ }
195
+
196
+ .CodeMirror-linewidget {
197
+ position: relative;
198
+ z-index: 2;
199
+ }
200
+
91
201
  .CodeMirror-wrap .CodeMirror-scroll {
92
202
  overflow-x: hidden;
93
203
  }
94
204
 
95
- .CodeMirror textarea {
96
- outline: none !important;
205
+ .CodeMirror-measure {
206
+ position: absolute;
207
+ width: 100%; height: 0px;
208
+ overflow: hidden;
209
+ visibility: hidden;
97
210
  }
211
+ .CodeMirror-measure pre { position: static; }
98
212
 
99
213
  .CodeMirror pre.CodeMirror-cursor {
100
- z-index: 10;
101
214
  position: absolute;
102
215
  visibility: hidden;
103
- border-left: 1px solid black;
104
216
  border-right: none;
105
217
  width: 0;
106
218
  }
107
- .cm-keymap-fat-cursor pre.CodeMirror-cursor {
108
- width: auto;
109
- border: 0;
110
- background: transparent;
111
- background: rgba(0, 200, 0, .4);
112
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#6600c800, endColorstr=#4c00c800);
113
- }
114
- /* Kludge to turn off filter in ie9+, which also accepts rgba */
115
- .cm-keymap-fat-cursor pre.CodeMirror-cursor:not(#nonsense_id) {
116
- filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
117
- }
118
- .CodeMirror pre.CodeMirror-cursor.CodeMirror-overwrite {}
119
219
  .CodeMirror-focused pre.CodeMirror-cursor {
120
220
  visibility: visible;
121
221
  }
122
222
 
123
- div.CodeMirror-selected { background: #d9d9d9; }
124
- .CodeMirror-focused div.CodeMirror-selected { background: #d7d4f0; }
223
+ .CodeMirror-selected { background: #d9d9d9; }
224
+ .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
125
225
 
126
226
  .CodeMirror-searching {
127
227
  background: #ffa;
128
228
  background: rgba(255, 255, 0, .4);
129
229
  }
130
230
 
131
- /* Default theme */
132
-
133
- .cm-s-default span.cm-keyword {color: #708;}
134
- .cm-s-default span.cm-atom {color: #219;}
135
- .cm-s-default span.cm-number {color: #164;}
136
- .cm-s-default span.cm-def {color: #00f;}
137
- .cm-s-default span.cm-variable {color: black;}
138
- .cm-s-default span.cm-variable-2 {color: #05a;}
139
- .cm-s-default span.cm-variable-3 {color: #085;}
140
- .cm-s-default span.cm-property {color: black;}
141
- .cm-s-default span.cm-operator {color: black;}
142
- .cm-s-default span.cm-comment {color: #a50;}
143
- .cm-s-default span.cm-string {color: #a11;}
144
- .cm-s-default span.cm-string-2 {color: #f50;}
145
- .cm-s-default span.cm-meta {color: #555;}
146
- .cm-s-default span.cm-error {color: #f00;}
147
- .cm-s-default span.cm-qualifier {color: #555;}
148
- .cm-s-default span.cm-builtin {color: #30a;}
149
- .cm-s-default span.cm-bracket {color: #997;}
150
- .cm-s-default span.cm-tag {color: #170;}
151
- .cm-s-default span.cm-attribute {color: #00c;}
152
- .cm-s-default span.cm-header {color: blue;}
153
- .cm-s-default span.cm-quote {color: #090;}
154
- .cm-s-default span.cm-hr {color: #999;}
155
- .cm-s-default span.cm-link {color: #00c;}
156
-
157
- span.cm-header, span.cm-strong {font-weight: bold;}
158
- span.cm-em {font-style: italic;}
159
- span.cm-emstrong {font-style: italic; font-weight: bold;}
160
- span.cm-link {text-decoration: underline;}
161
-
162
- span.cm-invalidchar {color: #f00;}
163
-
164
- div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
165
- div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
231
+ /* IE7 hack to prevent it from returning funny offsetTops on the spans */
232
+ .CodeMirror span { *vertical-align: text-bottom; }
166
233
 
167
234
  @media print {
168
-
169
235
  /* Hide the cursor when printing */
170
236
  .CodeMirror pre.CodeMirror-cursor {
171
237
  visibility: hidden;
172
238
  }
173
-
174
239
  }