codemirror-rails 3.24 → 4.0

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 (145) hide show
  1. checksums.yaml +4 -4
  2. data/lib/codemirror/rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/codemirror.js +3001 -1798
  4. data/vendor/assets/javascripts/codemirror/addons/comment/comment.js +24 -4
  5. data/vendor/assets/javascripts/codemirror/addons/comment/continuecomment.js +47 -32
  6. data/vendor/assets/javascripts/codemirror/addons/dialog/dialog.js +9 -2
  7. data/vendor/assets/javascripts/codemirror/addons/display/fullscreen.js +9 -2
  8. data/vendor/assets/javascripts/codemirror/addons/display/placeholder.js +9 -2
  9. data/vendor/assets/javascripts/codemirror/addons/display/rulers.js +9 -2
  10. data/vendor/assets/javascripts/codemirror/addons/edit/closebrackets.js +76 -37
  11. data/vendor/assets/javascripts/codemirror/addons/edit/closetag.js +59 -37
  12. data/vendor/assets/javascripts/codemirror/addons/edit/continuelist.js +25 -17
  13. data/vendor/assets/javascripts/codemirror/addons/edit/matchbrackets.js +67 -46
  14. data/vendor/assets/javascripts/codemirror/addons/edit/matchtags.js +10 -3
  15. data/vendor/assets/javascripts/codemirror/addons/edit/trailingspace.js +23 -14
  16. data/vendor/assets/javascripts/codemirror/addons/fold/brace-fold.js +12 -3
  17. data/vendor/assets/javascripts/codemirror/addons/fold/comment-fold.js +12 -0
  18. data/vendor/assets/javascripts/codemirror/addons/fold/foldcode.js +28 -3
  19. data/vendor/assets/javascripts/codemirror/addons/fold/foldgutter.js +9 -2
  20. data/vendor/assets/javascripts/codemirror/addons/fold/indent-fold.js +12 -1
  21. data/vendor/assets/javascripts/codemirror/addons/fold/markdown-fold.js +12 -0
  22. data/vendor/assets/javascripts/codemirror/addons/fold/xml-fold.js +9 -4
  23. data/vendor/assets/javascripts/codemirror/addons/hint/anyword-hint.js +9 -2
  24. data/vendor/assets/javascripts/codemirror/addons/hint/css-hint.js +10 -3
  25. data/vendor/assets/javascripts/codemirror/addons/hint/html-hint.js +11 -3
  26. data/vendor/assets/javascripts/codemirror/addons/hint/javascript-hint.js +9 -4
  27. data/vendor/assets/javascripts/codemirror/addons/hint/python-hint.js +11 -3
  28. data/vendor/assets/javascripts/codemirror/addons/hint/show-hint.js +10 -4
  29. data/vendor/assets/javascripts/codemirror/addons/hint/sql-hint.js +9 -2
  30. data/vendor/assets/javascripts/codemirror/addons/hint/xml-hint.js +22 -34
  31. data/vendor/assets/javascripts/codemirror/addons/lint/coffeescript-lint.js +12 -1
  32. data/vendor/assets/javascripts/codemirror/addons/lint/css-lint.js +12 -1
  33. data/vendor/assets/javascripts/codemirror/addons/lint/javascript-lint.js +9 -4
  34. data/vendor/assets/javascripts/codemirror/addons/lint/json-lint.js +12 -1
  35. data/vendor/assets/javascripts/codemirror/addons/lint/lint.js +12 -8
  36. data/vendor/assets/javascripts/codemirror/addons/lint/yaml-lint.js +12 -1
  37. data/vendor/assets/javascripts/codemirror/addons/merge/merge.js +18 -16
  38. data/vendor/assets/javascripts/codemirror/addons/mode/loadmode.js +9 -2
  39. data/vendor/assets/javascripts/codemirror/addons/mode/multiplex.js +12 -0
  40. data/vendor/assets/javascripts/codemirror/addons/mode/overlay.js +15 -10
  41. data/vendor/assets/javascripts/codemirror/addons/runmode/colorize.js +11 -3
  42. data/vendor/assets/javascripts/codemirror/addons/runmode/runmode-standalone.js +0 -2
  43. data/vendor/assets/javascripts/codemirror/addons/runmode/runmode.js +12 -0
  44. data/vendor/assets/javascripts/codemirror/addons/runmode/runmode.node.js +4 -0
  45. data/vendor/assets/javascripts/codemirror/addons/scroll/scrollpastend.js +9 -2
  46. data/vendor/assets/javascripts/codemirror/addons/search/match-highlighter.js +12 -3
  47. data/vendor/assets/javascripts/codemirror/addons/search/search.js +24 -16
  48. data/vendor/assets/javascripts/codemirror/addons/search/searchcursor.js +21 -2
  49. data/vendor/assets/javascripts/codemirror/addons/selection/active-line.js +38 -17
  50. data/vendor/assets/javascripts/codemirror/addons/selection/mark-selection.js +16 -9
  51. data/vendor/assets/javascripts/codemirror/addons/tern/tern.js +33 -5
  52. data/vendor/assets/javascripts/codemirror/addons/wrap/hardwrap.js +27 -2
  53. data/vendor/assets/javascripts/codemirror/keymaps/emacs.js +12 -5
  54. data/vendor/assets/javascripts/codemirror/keymaps/sublime.js +505 -0
  55. data/vendor/assets/javascripts/codemirror/keymaps/vim.js +138 -179
  56. data/vendor/assets/javascripts/codemirror/modes/apl.js +12 -0
  57. data/vendor/assets/javascripts/codemirror/modes/asterisk.js +12 -0
  58. data/vendor/assets/javascripts/codemirror/modes/clike.js +15 -4
  59. data/vendor/assets/javascripts/codemirror/modes/clojure.js +13 -0
  60. data/vendor/assets/javascripts/codemirror/modes/cobol.js +12 -0
  61. data/vendor/assets/javascripts/codemirror/modes/coffeescript.js +12 -0
  62. data/vendor/assets/javascripts/codemirror/modes/commonlisp.js +12 -0
  63. data/vendor/assets/javascripts/codemirror/modes/css.js +18 -27
  64. data/vendor/assets/javascripts/codemirror/modes/d.js +12 -2
  65. data/vendor/assets/javascripts/codemirror/modes/diff.js +12 -0
  66. data/vendor/assets/javascripts/codemirror/modes/dtd.js +12 -0
  67. data/vendor/assets/javascripts/codemirror/modes/ecl.js +12 -0
  68. data/vendor/assets/javascripts/codemirror/modes/eiffel.js +12 -0
  69. data/vendor/assets/javascripts/codemirror/modes/erlang.js +13 -1
  70. data/vendor/assets/javascripts/codemirror/modes/fortran.js +12 -0
  71. data/vendor/assets/javascripts/codemirror/modes/gas.js +12 -0
  72. data/vendor/assets/javascripts/codemirror/modes/gfm.js +12 -0
  73. data/vendor/assets/javascripts/codemirror/modes/gherkin.js +12 -0
  74. data/vendor/assets/javascripts/codemirror/modes/go.js +12 -1
  75. data/vendor/assets/javascripts/codemirror/modes/groovy.js +12 -0
  76. data/vendor/assets/javascripts/codemirror/modes/haml.js +12 -0
  77. data/vendor/assets/javascripts/codemirror/modes/haskell.js +12 -0
  78. data/vendor/assets/javascripts/codemirror/modes/haxe.js +18 -9
  79. data/vendor/assets/javascripts/codemirror/modes/htmlembedded.js +12 -0
  80. data/vendor/assets/javascripts/codemirror/modes/htmlmixed.js +12 -0
  81. data/vendor/assets/javascripts/codemirror/modes/http.js +12 -0
  82. data/vendor/assets/javascripts/codemirror/modes/jade.js +12 -0
  83. data/vendor/assets/javascripts/codemirror/modes/javascript.js +23 -16
  84. data/vendor/assets/javascripts/codemirror/modes/jinja2.js +53 -118
  85. data/vendor/assets/javascripts/codemirror/modes/julia.js +12 -0
  86. data/vendor/assets/javascripts/codemirror/modes/livescript.js +17 -4
  87. data/vendor/assets/javascripts/codemirror/modes/lua.js +12 -0
  88. data/vendor/assets/javascripts/codemirror/modes/markdown.js +12 -0
  89. data/vendor/assets/javascripts/codemirror/modes/mirc.js +13 -0
  90. data/vendor/assets/javascripts/codemirror/modes/mllike.js +12 -1
  91. data/vendor/assets/javascripts/codemirror/modes/nginx.js +12 -0
  92. data/vendor/assets/javascripts/codemirror/modes/ntriples.js +13 -0
  93. data/vendor/assets/javascripts/codemirror/modes/octave.js +12 -0
  94. data/vendor/assets/javascripts/codemirror/modes/pascal.js +12 -0
  95. data/vendor/assets/javascripts/codemirror/modes/pegjs.js +12 -0
  96. data/vendor/assets/javascripts/codemirror/modes/perl.js +84 -73
  97. data/vendor/assets/javascripts/codemirror/modes/php.js +20 -101
  98. data/vendor/assets/javascripts/codemirror/modes/pig.js +12 -0
  99. data/vendor/assets/javascripts/codemirror/modes/properties.js +12 -0
  100. data/vendor/assets/javascripts/codemirror/modes/puppet.js +13 -0
  101. data/vendor/assets/javascripts/codemirror/modes/python.js +21 -11
  102. data/vendor/assets/javascripts/codemirror/modes/q.js +12 -0
  103. data/vendor/assets/javascripts/codemirror/modes/r.js +13 -3
  104. data/vendor/assets/javascripts/codemirror/modes/{rpm-spec.js → rpm.js} +34 -2
  105. data/vendor/assets/javascripts/codemirror/modes/rst.js +12 -0
  106. data/vendor/assets/javascripts/codemirror/modes/ruby.js +11 -0
  107. data/vendor/assets/javascripts/codemirror/modes/rust.js +12 -0
  108. data/vendor/assets/javascripts/codemirror/modes/sass.js +12 -0
  109. data/vendor/assets/javascripts/codemirror/modes/scheme.js +13 -0
  110. data/vendor/assets/javascripts/codemirror/modes/shell.js +12 -0
  111. data/vendor/assets/javascripts/codemirror/modes/sieve.js +11 -4
  112. data/vendor/assets/javascripts/codemirror/modes/smalltalk.js +12 -0
  113. data/vendor/assets/javascripts/codemirror/modes/smarty.js +13 -0
  114. data/vendor/assets/javascripts/codemirror/modes/smartymixed.js +14 -2
  115. data/vendor/assets/javascripts/codemirror/modes/solr.js +12 -0
  116. data/vendor/assets/javascripts/codemirror/modes/sparql.js +12 -0
  117. data/vendor/assets/javascripts/codemirror/modes/sql.js +12 -0
  118. data/vendor/assets/javascripts/codemirror/modes/stex.js +12 -0
  119. data/vendor/assets/javascripts/codemirror/modes/tcl.js +13 -0
  120. data/vendor/assets/javascripts/codemirror/modes/tiddlywiki.js +13 -0
  121. data/vendor/assets/javascripts/codemirror/modes/tiki.js +12 -0
  122. data/vendor/assets/javascripts/codemirror/modes/toml.js +12 -0
  123. data/vendor/assets/javascripts/codemirror/modes/turtle.js +12 -0
  124. data/vendor/assets/javascripts/codemirror/modes/vb.js +12 -0
  125. data/vendor/assets/javascripts/codemirror/modes/vbscript.js +13 -0
  126. data/vendor/assets/javascripts/codemirror/modes/velocity.js +12 -0
  127. data/vendor/assets/javascripts/codemirror/modes/verilog.js +89 -236
  128. data/vendor/assets/javascripts/codemirror/modes/xml.js +41 -60
  129. data/vendor/assets/javascripts/codemirror/modes/xquery.js +12 -0
  130. data/vendor/assets/javascripts/codemirror/modes/yaml.js +12 -0
  131. data/vendor/assets/javascripts/codemirror/modes/z80.js +12 -0
  132. data/vendor/assets/stylesheets/codemirror.css +15 -10
  133. data/vendor/assets/stylesheets/codemirror/themes/ambiance.css +1 -0
  134. data/vendor/assets/stylesheets/codemirror/themes/lesser-dark.css +4 -0
  135. data/vendor/assets/stylesheets/codemirror/themes/mdn-like.css +1 -1
  136. data/vendor/assets/stylesheets/codemirror/themes/pastel-on-dark.css +1 -0
  137. data/vendor/assets/stylesheets/codemirror/themes/rubyblue.css +2 -0
  138. data/vendor/assets/stylesheets/codemirror/themes/solarized.css +17 -3
  139. metadata +20 -25
  140. data/vendor/assets/javascripts/codemirror/keymaps/extra.js +0 -43
  141. data/vendor/assets/javascripts/codemirror/modes/django.js +0 -55
  142. data/vendor/assets/javascripts/codemirror/modes/dylan.js +0 -284
  143. data/vendor/assets/javascripts/codemirror/modes/less.js +0 -347
  144. data/vendor/assets/javascripts/codemirror/modes/rpm-changes.js +0 -19
  145. data/vendor/assets/stylesheets/codemirror/modes/rpm-spec.css +0 -5
@@ -1,4 +1,11 @@
1
- (function() {
1
+ (function(mod) {
2
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
3
+ mod(require("../../lib/codemirror"));
4
+ else if (typeof define == "function" && define.amd) // AMD
5
+ define(["../../lib/codemirror"], mod);
6
+ else // Plain browser env
7
+ mod(CodeMirror);
8
+ })(function(CodeMirror) {
2
9
  "use strict";
3
10
  // declare global: diff_match_patch, DIFF_INSERT, DIFF_DELETE, DIFF_EQUAL
4
11
 
@@ -46,14 +53,6 @@
46
53
  }
47
54
  };
48
55
 
49
- function ensureDiff(dv) {
50
- if (dv.diffOutOfDate) {
51
- dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue());
52
- dv.diffOutOfDate = false;
53
- CodeMirror.signal(dv.edit, "updateDiff", dv.diff);
54
- }
55
- }
56
-
57
56
  function registerUpdate(dv) {
58
57
  var edit = {from: 0, to: 0, marked: []};
59
58
  var orig = {from: 0, to: 0, marked: []};
@@ -66,7 +65,11 @@
66
65
  clearMarks(dv.orig, orig.marked, dv.classes);
67
66
  edit.from = edit.to = orig.from = orig.to = 0;
68
67
  }
69
- ensureDiff(dv);
68
+ if (dv.diffOutOfDate) {
69
+ dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue());
70
+ dv.diffOutOfDate = false;
71
+ CodeMirror.signal(dv.edit, "updateDiff", dv.diff);
72
+ }
70
73
  if (dv.showDifferences) {
71
74
  updateMarks(dv.edit, dv.diff, edit, DIFF_INSERT, dv.classes);
72
75
  updateMarks(dv.orig, dv.diff, orig, DIFF_DELETE, dv.classes);
@@ -359,10 +362,10 @@
359
362
  if (this.left) this.left.setShowDifferences(val);
360
363
  },
361
364
  rightChunks: function() {
362
- return this.right && getChunks(this.right);
365
+ return this.right && getChunks(this.right.diff);
363
366
  },
364
367
  leftChunks: function() {
365
- return this.left && getChunks(this.left);
368
+ return this.left && getChunks(this.left.diff);
366
369
  }
367
370
  };
368
371
 
@@ -413,10 +416,9 @@
413
416
  f(startOrig, orig.line + 1, startEdit, edit.line + 1);
414
417
  }
415
418
 
416
- function getChunks(dv) {
417
- ensureDiff(dv);
419
+ function getChunks(diff) {
418
420
  var collect = [];
419
- iterateChunks(dv.diff, function(topOrig, botOrig, topEdit, botEdit) {
421
+ iterateChunks(diff, function(topOrig, botOrig, topEdit, botEdit) {
420
422
  collect.push({origFrom: topOrig, origTo: botOrig,
421
423
  editFrom: topEdit, editTo: botEdit});
422
424
  });
@@ -500,4 +502,4 @@
500
502
  function posMin(a, b) { return (a.line - b.line || a.ch - b.ch) < 0 ? a : b; }
501
503
  function posMax(a, b) { return (a.line - b.line || a.ch - b.ch) > 0 ? a : b; }
502
504
  function posEq(a, b) { return a.line == b.line && a.ch == b.ch; }
503
- })();
505
+ });
@@ -1,4 +1,11 @@
1
- (function() {
1
+ (function(mod) {
2
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
3
+ mod(require("../../lib/codemirror"));
4
+ else if (typeof define == "function" && define.amd) // AMD
5
+ define(["../../lib/codemirror"], mod);
6
+ else // Plain browser env
7
+ mod(CodeMirror);
8
+ })(function(CodeMirror) {
2
9
  if (!CodeMirror.modeURL) CodeMirror.modeURL = "../mode/%N/%N.js";
3
10
 
4
11
  var loading = {};
@@ -48,4 +55,4 @@
48
55
  instance.setOption("mode", instance.getOption("mode"));
49
56
  });
50
57
  };
51
- }());
58
+ });
@@ -1,3 +1,13 @@
1
+ (function(mod) {
2
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
3
+ mod(require("../../lib/codemirror"));
4
+ else if (typeof define == "function" && define.amd) // AMD
5
+ define(["../../lib/codemirror"], mod);
6
+ else // Plain browser env
7
+ mod(CodeMirror);
8
+ })(function(CodeMirror) {
9
+ "use strict";
10
+
1
11
  CodeMirror.multiplexingMode = function(outer /*, others */) {
2
12
  // Others should be {open, close, mode [, delimStyle] [, innerStyle]} objects
3
13
  var others = Array.prototype.slice.call(arguments, 1);
@@ -101,3 +111,5 @@ CodeMirror.multiplexingMode = function(outer /*, others */) {
101
111
  }
102
112
  };
103
113
  };
114
+
115
+ });
@@ -6,16 +6,24 @@
6
6
  // overlay wins, unless the combine argument was true, in which case
7
7
  // the styles are combined.
8
8
 
9
- // overlayParser is the old, deprecated name
10
- CodeMirror.overlayMode = CodeMirror.overlayParser = function(base, overlay, combine) {
9
+ (function(mod) {
10
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
11
+ mod(require("../../lib/codemirror"));
12
+ else if (typeof define == "function" && define.amd) // AMD
13
+ define(["../../lib/codemirror"], mod);
14
+ else // Plain browser env
15
+ mod(CodeMirror);
16
+ })(function(CodeMirror) {
17
+ "use strict";
18
+
19
+ CodeMirror.overlayMode = function(base, overlay, combine) {
11
20
  return {
12
21
  startState: function() {
13
22
  return {
14
23
  base: CodeMirror.startState(base),
15
24
  overlay: CodeMirror.startState(overlay),
16
25
  basePos: 0, baseCur: null,
17
- overlayPos: 0, overlayCur: null,
18
- lineSeen: null
26
+ overlayPos: 0, overlayCur: null
19
27
  };
20
28
  },
21
29
  copyState: function(state) {
@@ -28,12 +36,6 @@ CodeMirror.overlayMode = CodeMirror.overlayParser = function(base, overlay, comb
28
36
  },
29
37
 
30
38
  token: function(stream, state) {
31
- if (stream.sol() || stream.string != state.lineSeen ||
32
- Math.min(state.basePos, state.overlayPos) < stream.start) {
33
- state.lineSeen = stream.string;
34
- state.basePos = state.overlayPos = stream.start;
35
- }
36
-
37
39
  if (stream.start == state.basePos) {
38
40
  state.baseCur = base.token(stream, state.base);
39
41
  state.basePos = stream.pos;
@@ -44,6 +46,7 @@ CodeMirror.overlayMode = CodeMirror.overlayParser = function(base, overlay, comb
44
46
  state.overlayPos = stream.pos;
45
47
  }
46
48
  stream.pos = Math.min(state.basePos, state.overlayPos);
49
+ if (stream.eol()) state.basePos = state.overlayPos = 0;
47
50
 
48
51
  if (state.overlayCur == null) return state.baseCur;
49
52
  if (state.baseCur != null && combine) return state.baseCur + " " + state.overlayCur;
@@ -63,3 +66,5 @@ CodeMirror.overlayMode = CodeMirror.overlayParser = function(base, overlay, comb
63
66
  }
64
67
  };
65
68
  };
69
+
70
+ });
@@ -1,4 +1,12 @@
1
- CodeMirror.colorize = (function() {
1
+ (function(mod) {
2
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
3
+ mod(require("../../lib/codemirror"), require("./runmode"));
4
+ else if (typeof define == "function" && define.amd) // AMD
5
+ define(["../../lib/codemirror", "./runmode"], mod);
6
+ else // Plain browser env
7
+ mod(CodeMirror);
8
+ })(function(CodeMirror) {
9
+ "use strict";
2
10
 
3
11
  var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/;
4
12
 
@@ -10,7 +18,7 @@ CodeMirror.colorize = (function() {
10
18
  }
11
19
  }
12
20
 
13
- return function(collection, defaultMode) {
21
+ CodeMirror.colorize = function(collection, defaultMode) {
14
22
  if (!collection) collection = document.body.getElementsByTagName("pre");
15
23
 
16
24
  for (var i = 0; i < collection.length; ++i) {
@@ -26,4 +34,4 @@ CodeMirror.colorize = (function() {
26
34
  node.className += " cm-s-default";
27
35
  }
28
36
  };
29
- })();
37
+ });
@@ -1,5 +1,3 @@
1
- /* Just enough of CodeMirror to run runMode under node.js */
2
-
3
1
  window.CodeMirror = {};
4
2
 
5
3
  (function() {
@@ -1,3 +1,13 @@
1
+ (function(mod) {
2
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
3
+ mod(require("../../lib/codemirror"));
4
+ else if (typeof define == "function" && define.amd) // AMD
5
+ define(["../../lib/codemirror"], mod);
6
+ else // Plain browser env
7
+ mod(CodeMirror);
8
+ })(function(CodeMirror) {
9
+ "use strict";
10
+
1
11
  CodeMirror.runMode = function(string, modespec, callback, options) {
2
12
  var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);
3
13
  var ie = /MSIE \d/.test(navigator.userAgent);
@@ -54,3 +64,5 @@ CodeMirror.runMode = function(string, modespec, callback, options) {
54
64
  }
55
65
  }
56
66
  };
67
+
68
+ });
@@ -1,5 +1,7 @@
1
1
  /* Just enough of CodeMirror to run runMode under node.js */
2
2
 
3
+ // declare global: StringStream
4
+
3
5
  function splitLines(string){ return string.split(/\r?\n|\r/); };
4
6
 
5
7
  function StringStream(string) {
@@ -112,3 +114,5 @@ exports.runMode = function(string, modespec, callback, options) {
112
114
  }
113
115
  }
114
116
  };
117
+
118
+ require.cache[require.resolve("../../lib/codemirror")] = require.cache[require.resolve("./runmode.node")];
@@ -1,4 +1,11 @@
1
- (function() {
1
+ (function(mod) {
2
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
3
+ mod(require("../../lib/codemirror"));
4
+ else if (typeof define == "function" && define.amd) // AMD
5
+ define(["../../lib/codemirror"], mod);
6
+ else // Plain browser env
7
+ mod(CodeMirror);
8
+ })(function(CodeMirror) {
2
9
  "use strict";
3
10
 
4
11
  CodeMirror.defineOption("scrollPastEnd", false, function(cm, val, old) {
@@ -33,4 +40,4 @@
33
40
  cm.setSize();
34
41
  }
35
42
  }
36
- })();
43
+ });
@@ -12,7 +12,16 @@
12
12
  // actual CSS class name. showToken, when enabled, will cause the
13
13
  // current token to be highlighted when nothing is selected.
14
14
 
15
- (function() {
15
+ (function(mod) {
16
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
17
+ mod(require("../../lib/codemirror"));
18
+ else if (typeof define == "function" && define.amd) // AMD
19
+ define(["../../lib/codemirror"], mod);
20
+ else // Plain browser env
21
+ mod(CodeMirror);
22
+ })(function(CodeMirror) {
23
+ "use strict";
24
+
16
25
  var DEFAULT_MIN_CHARS = 2;
17
26
  var DEFAULT_TOKEN_STYLE = "matchhighlight";
18
27
  var DEFAULT_DELAY = 100;
@@ -68,7 +77,7 @@
68
77
  return;
69
78
  }
70
79
  if (cm.getCursor("head").line != cm.getCursor("anchor").line) return;
71
- var selection = cm.getSelection().replace(/^\s+|\s+$/g, "");
80
+ var selection = cm.getSelections()[0].replace(/^\s+|\s+$/g, "");
72
81
  if (selection.length >= state.minChars)
73
82
  cm.addOverlay(state.overlay = makeOverlay(selection, false, state.style));
74
83
  });
@@ -88,4 +97,4 @@
88
97
  stream.skipTo(query.charAt(0)) || stream.skipToEnd();
89
98
  }};
90
99
  }
91
- })();
100
+ });
@@ -6,23 +6,31 @@
6
6
  // replace by making sure the match is no longer selected when hitting
7
7
  // Ctrl-G.
8
8
 
9
- (function() {
9
+ (function(mod) {
10
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
11
+ mod(require("../../lib/codemirror"), require("./searchcursor"), require("../dialog/dialog"));
12
+ else if (typeof define == "function" && define.amd) // AMD
13
+ define(["../../lib/codemirror", "./searchcursor", "../dialog/dialog"], mod);
14
+ else // Plain browser env
15
+ mod(CodeMirror);
16
+ })(function(CodeMirror) {
17
+ "use strict";
10
18
  function searchOverlay(query, caseInsensitive) {
11
- if (typeof query == "string")
12
- query = new RegExp(query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), caseInsensitive ? "gi" : "g");
13
- else if (!query.global)
14
- query = new RegExp(query.source, query.ignoreCase ? "gi" : "g");
15
-
19
+ var startChar;
20
+ if (typeof query == "string") {
21
+ startChar = query.charAt(0);
22
+ query = new RegExp("^" + query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"),
23
+ caseInsensitive ? "i" : "");
24
+ } else {
25
+ query = new RegExp("^(?:" + query.source + ")", query.ignoreCase ? "i" : "");
26
+ }
16
27
  return {token: function(stream) {
17
- query.lastIndex = stream.pos;
18
- var match = query.exec(stream.string);
19
- if (match && match.index == stream.pos) {
20
- stream.pos += match[0].length;
21
- return "searching";
22
- } else if (match) {
23
- stream.pos = match.index;
24
- } else {
25
- stream.skipToEnd();
28
+ if (stream.match(query)) return "searching";
29
+ while (!stream.eol()) {
30
+ stream.next();
31
+ if (startChar && !caseInsensitive)
32
+ stream.skipTo(startChar) || stream.skipToEnd();
33
+ if (stream.match(query, false)) break;
26
34
  }
27
35
  }};
28
36
  }
@@ -144,4 +152,4 @@
144
152
  CodeMirror.commands.clearSearch = clearSearch;
145
153
  CodeMirror.commands.replace = replace;
146
154
  CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};
147
- })();
155
+ });
@@ -1,4 +1,12 @@
1
- (function(){
1
+ (function(mod) {
2
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
3
+ mod(require("../../lib/codemirror"));
4
+ else if (typeof define == "function" && define.amd) // AMD
5
+ define(["../../lib/codemirror"], mod);
6
+ else // Plain browser env
7
+ mod(CodeMirror);
8
+ })(function(CodeMirror) {
9
+ "use strict";
2
10
  var Pos = CodeMirror.Pos;
3
11
 
4
12
  function SearchCursor(doc, query, pos, caseFold) {
@@ -164,4 +172,15 @@
164
172
  CodeMirror.defineDocExtension("getSearchCursor", function(query, pos, caseFold) {
165
173
  return new SearchCursor(this, query, pos, caseFold);
166
174
  });
167
- })();
175
+
176
+ CodeMirror.defineExtension("selectMatches", function(query, caseFold) {
177
+ var ranges = [], next;
178
+ var cur = this.getSearchCursor(query, this.getCursor("from"), caseFold);
179
+ while (next = cur.findNext()) {
180
+ if (CodeMirror.cmpPos(cur.to(), this.getCursor("to")) > 0) break;
181
+ ranges.push({anchor: cur.from(), head: cur.to()});
182
+ }
183
+ if (ranges.length)
184
+ this.setSelections(ranges, 0);
185
+ });
186
+ });
@@ -4,7 +4,14 @@
4
4
  // active line's wrapping <div> the CSS class "CodeMirror-activeline",
5
5
  // and gives its background <div> the class "CodeMirror-activeline-background".
6
6
 
7
- (function() {
7
+ (function(mod) {
8
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
9
+ mod(require("../../lib/codemirror"));
10
+ else if (typeof define == "function" && define.amd) // AMD
11
+ define(["../../lib/codemirror"], mod);
12
+ else // Plain browser env
13
+ mod(CodeMirror);
14
+ })(function(CodeMirror) {
8
15
  "use strict";
9
16
  var WRAP_CLASS = "CodeMirror-activeline";
10
17
  var BACK_CLASS = "CodeMirror-activeline-background";
@@ -12,34 +19,48 @@
12
19
  CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) {
13
20
  var prev = old && old != CodeMirror.Init;
14
21
  if (val && !prev) {
15
- updateActiveLine(cm, cm.getCursor().line);
22
+ cm.state.activeLines = [];
23
+ updateActiveLines(cm, cm.listSelections());
16
24
  cm.on("beforeSelectionChange", selectionChange);
17
25
  } else if (!val && prev) {
18
26
  cm.off("beforeSelectionChange", selectionChange);
19
- clearActiveLine(cm);
20
- delete cm.state.activeLine;
27
+ clearActiveLines(cm);
28
+ delete cm.state.activeLines;
21
29
  }
22
30
  });
23
31
 
24
- function clearActiveLine(cm) {
25
- if ("activeLine" in cm.state) {
26
- cm.removeLineClass(cm.state.activeLine, "wrap", WRAP_CLASS);
27
- cm.removeLineClass(cm.state.activeLine, "background", BACK_CLASS);
32
+ function clearActiveLines(cm) {
33
+ for (var i = 0; i < cm.state.activeLines.length; i++) {
34
+ cm.removeLineClass(cm.state.activeLines[i], "wrap", WRAP_CLASS);
35
+ cm.removeLineClass(cm.state.activeLines[i], "background", BACK_CLASS);
28
36
  }
29
37
  }
30
38
 
31
- function updateActiveLine(cm, selectedLine) {
32
- var line = cm.getLineHandleVisualStart(selectedLine);
33
- if (cm.state.activeLine == line) return;
39
+ function sameArray(a, b) {
40
+ if (a.length != b.length) return false;
41
+ for (var i = 0; i < a.length; i++)
42
+ if (a[i] != b[i]) return false;
43
+ return true;
44
+ }
45
+
46
+ function updateActiveLines(cm, ranges) {
47
+ var active = [];
48
+ for (var i = 0; i < ranges.length; i++) {
49
+ var line = cm.getLineHandleVisualStart(ranges[i].head.line);
50
+ if (active[active.length - 1] != line) active.push(line);
51
+ }
52
+ if (sameArray(cm.state.activeLines, active)) return;
34
53
  cm.operation(function() {
35
- clearActiveLine(cm);
36
- cm.addLineClass(line, "wrap", WRAP_CLASS);
37
- cm.addLineClass(line, "background", BACK_CLASS);
38
- cm.state.activeLine = line;
54
+ clearActiveLines(cm);
55
+ for (var i = 0; i < active.length; i++) {
56
+ cm.addLineClass(active[i], "wrap", WRAP_CLASS);
57
+ cm.addLineClass(active[i], "background", BACK_CLASS);
58
+ }
59
+ cm.state.activeLines = active;
39
60
  });
40
61
  }
41
62
 
42
63
  function selectionChange(cm, sel) {
43
- updateActiveLine(cm, sel.head.line);
64
+ updateActiveLines(cm, sel.ranges);
44
65
  }
45
- })();
66
+ });