codemirror-rails 3.13 → 3.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/lib/codemirror/rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/codemirror.js +328 -250
  4. data/vendor/assets/javascripts/codemirror/addons/comment/comment.js +7 -6
  5. data/vendor/assets/javascripts/codemirror/addons/edit/closebrackets.js +33 -7
  6. data/vendor/assets/javascripts/codemirror/addons/edit/matchbrackets.js +14 -10
  7. data/vendor/assets/javascripts/codemirror/addons/edit/trailingspace.js +15 -0
  8. data/vendor/assets/javascripts/codemirror/addons/fold/brace-fold.js +70 -17
  9. data/vendor/assets/javascripts/codemirror/addons/fold/foldcode.js +56 -20
  10. data/vendor/assets/javascripts/codemirror/addons/fold/xml-fold.js +135 -39
  11. data/vendor/assets/javascripts/codemirror/addons/hint/html-hint.js +324 -571
  12. data/vendor/assets/javascripts/codemirror/addons/hint/show-hint.js +199 -109
  13. data/vendor/assets/javascripts/codemirror/addons/hint/xml-hint.js +60 -113
  14. data/vendor/assets/javascripts/codemirror/addons/lint/coffeescript-lint.js +24 -0
  15. data/vendor/assets/javascripts/codemirror/addons/merge/merge.js +431 -0
  16. data/vendor/assets/javascripts/codemirror/addons/mode/multiplex.js +7 -1
  17. data/vendor/assets/javascripts/codemirror/addons/search/match-highlighter.js +46 -20
  18. data/vendor/assets/javascripts/codemirror/addons/search/search.js +1 -1
  19. data/vendor/assets/javascripts/codemirror/keymaps/emacs.js +370 -13
  20. data/vendor/assets/javascripts/codemirror/keymaps/extra.js +43 -0
  21. data/vendor/assets/javascripts/codemirror/keymaps/vim.js +535 -214
  22. data/vendor/assets/javascripts/codemirror/modes/clike.js +56 -0
  23. data/vendor/assets/javascripts/codemirror/modes/javascript.js +19 -14
  24. data/vendor/assets/javascripts/codemirror/modes/markdown.js +2 -2
  25. data/vendor/assets/javascripts/codemirror/modes/ruby.js +67 -16
  26. data/vendor/assets/javascripts/codemirror/modes/smarty.js +167 -110
  27. data/vendor/assets/javascripts/codemirror/modes/sql.js +97 -15
  28. data/vendor/assets/javascripts/codemirror/modes/xml.js +14 -18
  29. data/vendor/assets/stylesheets/codemirror.css +0 -1
  30. data/vendor/assets/stylesheets/codemirror/addons/merge/merge.css +82 -0
  31. metadata +7 -2
@@ -19,43 +19,64 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
19
19
  if (result !== false) return result;
20
20
  }
21
21
 
22
- if ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/))
23
- || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/)) {
22
+ if (support.hexNumber == true &&
23
+ ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/))
24
+ || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/))) {
24
25
  // hex
26
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html
25
27
  return "number";
26
- } else if (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/))
27
- || (ch == "0" && stream.match(/^b[01]+/))) {
28
+ } else if (support.binaryNumber == true &&
29
+ (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/))
30
+ || (ch == "0" && stream.match(/^b[01]+/)))) {
28
31
  // bitstring
32
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html
29
33
  return "number";
30
34
  } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) {
31
35
  // numbers
32
- stream.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/);
36
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html
37
+ stream.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/);
38
+ support.decimallessFloat == true && stream.eat('.');
33
39
  return "number";
34
40
  } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) {
35
41
  // placeholders
36
42
  return "variable-3";
37
- } else if (ch == '"' || ch == "'") {
43
+ } else if (ch == "'" || (ch == '"' && support.doubleQuote)) {
38
44
  // strings
45
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html
39
46
  state.tokenize = tokenLiteral(ch);
40
47
  return state.tokenize(stream, state);
48
+ } else if ((((support.nCharCast == true && (ch == "n" || ch == "N"))
49
+ || (support.charsetCast == true && ch == "_" && stream.match(/[a-z][a-z0-9]*/i)))
50
+ && (stream.peek() == "'" || stream.peek() == '"'))) {
51
+ // charset casting: _utf8'str', N'str', n'str'
52
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html
53
+ return "keyword";
41
54
  } else if (/^[\(\),\;\[\]]/.test(ch)) {
42
55
  // no highlightning
43
56
  return null;
44
- } else if (ch == "#" || (ch == "-" && stream.eat("-") && stream.eat(" "))) {
57
+ } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) {
58
+ // 1-line comment
59
+ stream.skipToEnd();
60
+ return "comment";
61
+ } else if ((support.commentHash && ch == "#")
62
+ || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) {
45
63
  // 1-line comments
64
+ // ref: https://kb.askmonty.org/en/comment-syntax/
46
65
  stream.skipToEnd();
47
66
  return "comment";
48
67
  } else if (ch == "/" && stream.eat("*")) {
49
68
  // multi-line comments
69
+ // ref: https://kb.askmonty.org/en/comment-syntax/
50
70
  state.tokenize = tokenComment;
51
71
  return state.tokenize(stream, state);
52
72
  } else if (ch == ".") {
53
73
  // .1 for 0.1
54
- if (support.zerolessFloat == true && stream.match(/^(?:\d+(?:e\d*)?|\d*e\d+)/i)) {
74
+ if (support.zerolessFloat == true && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) {
55
75
  return "number";
56
76
  }
57
77
  // .table_name (ODBC)
58
- if (stream.match(/^[a-zA-Z_]+/) && support.ODBCdotTable == true) {
78
+ // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html
79
+ if (support.ODBCdotTable == true && stream.match(/^[a-zA-Z_]+/)) {
59
80
  return "variable-2";
60
81
  }
61
82
  } else if (operatorChars.test(ch)) {
@@ -65,11 +86,13 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
65
86
  } else if (ch == '{' &&
66
87
  (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) {
67
88
  // dates (weird ODBC syntax)
89
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html
68
90
  return "number";
69
91
  } else {
70
92
  stream.eatWhile(/^[_\w\d]/);
71
93
  var word = stream.current().toLowerCase();
72
94
  // dates (standard SQL syntax)
95
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html
73
96
  if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/)))
74
97
  return "number";
75
98
  if (atoms.hasOwnProperty(word)) return "atom";
@@ -166,6 +189,8 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
166
189
 
167
190
  // `identifier`
168
191
  function hookIdentifier(stream) {
192
+ // MySQL/MariaDB identifiers
193
+ // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html
169
194
  var ch;
170
195
  while ((ch = stream.next()) != null) {
171
196
  if (ch == "`" && !stream.eat("`")) return "variable-2";
@@ -176,7 +201,9 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
176
201
  // variable token
177
202
  function hookVar(stream) {
178
203
  // variables
179
- // @@ and prefix
204
+ // @@prefix.varName @varName
205
+ // varName can be quoted with ` or ' or "
206
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html
180
207
  if (stream.eat("@")) {
181
208
  stream.match(/^session\./);
182
209
  stream.match(/^local\./);
@@ -200,18 +227,27 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
200
227
 
201
228
  // short client keyword token
202
229
  function hookClient(stream) {
230
+ // \N means NULL
231
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html
232
+ if (stream.eat("N")) {
233
+ return "atom";
234
+ }
203
235
  // \g, etc
204
- return stream.match(/^[a-zA-Z]\b/) ? "variable-2" : null;
236
+ // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html
237
+ return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null;
205
238
  }
206
239
 
240
+ // these keywords are used by all SQL dialects (however, a mode can still overwrite it)
207
241
  var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from having in insert into is join like not on or order select set table union update values where ";
208
242
 
243
+ // turn a space-separated list into an array
209
244
  function set(str) {
210
245
  var obj = {}, words = str.split(" ");
211
246
  for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
212
247
  return obj;
213
248
  }
214
249
 
250
+ // A generic SQL Mode. It's not a standard, it just try to support what is generally supported
215
251
  CodeMirror.defineMIME("text/x-sql", {
216
252
  name: "sql",
217
253
  keywords: set(sqlKeywords + "begin"),
@@ -219,7 +255,7 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
219
255
  atoms: set("false true null unknown"),
220
256
  operatorChars: /^[*+\-%<>!=]/,
221
257
  dateSQL: set("date time timestamp"),
222
- support: set("ODBCdotTable")
258
+ support: set("ODBCdotTable doubleQuote binaryNumber hexNumber")
223
259
  });
224
260
 
225
261
  CodeMirror.defineMIME("text/x-mysql", {
@@ -230,7 +266,7 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
230
266
  atoms: set("false true null unknown"),
231
267
  operatorChars: /^[*+\-%<>!=&|^]/,
232
268
  dateSQL: set("date time timestamp"),
233
- support: set("ODBCdotTable zerolessFloat"),
269
+ support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),
234
270
  hooks: {
235
271
  "@": hookVar,
236
272
  "`": hookIdentifier,
@@ -246,7 +282,7 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
246
282
  atoms: set("false true null unknown"),
247
283
  operatorChars: /^[*+\-%<>!=&|^]/,
248
284
  dateSQL: set("date time timestamp"),
249
- support: set("ODBCdotTable zerolessFloat"),
285
+ support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),
250
286
  hooks: {
251
287
  "@": hookVar,
252
288
  "`": hookIdentifier,
@@ -254,6 +290,20 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
254
290
  }
255
291
  });
256
292
 
293
+ // the query language used by Apache Cassandra is called CQL, but this mime type
294
+ // is called Cassandra to avoid confusion with Contextual Query Language
295
+ CodeMirror.defineMIME("text/x-cassandra", {
296
+ name: "sql",
297
+ client: { },
298
+ keywords: set("use select from using consistency where limit first reversed first and in insert into values using consistency ttl update set delete truncate begin batch apply create keyspace with columnfamily primary key index on drop alter type add any one quorum all local_quorum each_quorum"),
299
+ builtin: set("ascii bigint blob boolean counter decimal double float int text timestamp uuid varchar varint"),
300
+ atoms: set("false true"),
301
+ operatorChars: /^[<>=]/,
302
+ dateSQL: { },
303
+ support: set("commentSlashSlash decimallessFloat"),
304
+ hooks: { }
305
+ });
306
+
257
307
  // this is based on Peter Raganitsch's 'plsql' mode
258
308
  CodeMirror.defineMIME("text/x-plsql", {
259
309
  name: "sql",
@@ -262,6 +312,38 @@ CodeMirror.defineMode("sql", function(config, parserConfig) {
262
312
  functions: set("abs acos add_months ascii asin atan atan2 average bfilename ceil chartorowid chr concat convert cos cosh count decode deref dual dump dup_val_on_index empty error exp false floor found glb greatest hextoraw initcap instr instrb isopen last_day least lenght lenghtb ln lower lpad ltrim lub make_ref max min mod months_between new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null nvl others power rawtohex reftohex round rowcount rowidtochar rpad rtrim sign sin sinh soundex sqlcode sqlerrm sqrt stddev substr substrb sum sysdate tan tanh to_char to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid upper user userenv variance vsize"),
263
313
  builtin: set("bfile blob character clob dec float int integer mlslabel natural naturaln nchar nclob number numeric nvarchar2 real rowtype signtype smallint string varchar varchar2"),
264
314
  operatorChars: /^[*+\-%<>!=~]/,
265
- dateSQL: set("date time timestamp")
315
+ dateSQL: set("date time timestamp"),
316
+ support: set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")
266
317
  });
267
318
  }());
319
+
320
+ /*
321
+ How Properties of Mime Types are used by SQL Mode
322
+ =================================================
323
+
324
+ keywords:
325
+ A list of keywords you want to be highlighted.
326
+ functions:
327
+ A list of function names you want to be highlighted.
328
+ builtin:
329
+ A list of builtin types you want to be highlighted (if you want types to be of class "builtin" instead of "keyword").
330
+ operatorChars:
331
+ All characters that must be handled as operators.
332
+ client:
333
+ Commands parsed and executed by the client (not the server).
334
+ support:
335
+ A list of supported syntaxes which are not common, but are supported by more than 1 DBMS.
336
+ * ODBCdotTable: .tableName
337
+ * zerolessFloat: .1
338
+ * doubleQuote
339
+ * nCharCast: N'string'
340
+ * charsetCast: _utf8'string'
341
+ * commentHash: use # char for comments
342
+ * commentSlashSlash: use // for comments
343
+ * commentSpaceRequired: require a space after -- for comments
344
+ atoms:
345
+ Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others:
346
+ UNKNOWN, INFINITY, UNDERFLOW, NaN...
347
+ dateSQL:
348
+ Used for date/time SQL standard syntax, because not all DBMS's support same temporal types.
349
+ */
@@ -58,20 +58,19 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
58
58
  if (stream.eat("[")) {
59
59
  if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>"));
60
60
  else return null;
61
- }
62
- else if (stream.match("--")) return chain(inBlock("comment", "-->"));
63
- else if (stream.match("DOCTYPE", true, true)) {
61
+ } else if (stream.match("--")) {
62
+ return chain(inBlock("comment", "-->"));
63
+ } else if (stream.match("DOCTYPE", true, true)) {
64
64
  stream.eatWhile(/[\w\._\-]/);
65
65
  return chain(doctype(1));
66
+ } else {
67
+ return null;
66
68
  }
67
- else return null;
68
- }
69
- else if (stream.eat("?")) {
69
+ } else if (stream.eat("?")) {
70
70
  stream.eatWhile(/[\w\._\-]/);
71
71
  state.tokenize = inBlock("meta", "?>");
72
72
  return "meta";
73
- }
74
- else {
73
+ } else {
75
74
  var isClose = stream.eat("/");
76
75
  tagName = "";
77
76
  var c;
@@ -81,8 +80,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
81
80
  state.tokenize = inTag;
82
81
  return "tag";
83
82
  }
84
- }
85
- else if (ch == "&") {
83
+ } else if (ch == "&") {
86
84
  var ok;
87
85
  if (stream.eat("#")) {
88
86
  if (stream.eat("x")) {
@@ -94,8 +92,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
94
92
  ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";");
95
93
  }
96
94
  return ok ? "atom" : "error";
97
- }
98
- else {
95
+ } else {
99
96
  stream.eatWhile(/[^&<]/);
100
97
  return null;
101
98
  }
@@ -107,16 +104,15 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
107
104
  state.tokenize = inText;
108
105
  type = ch == ">" ? "endTag" : "selfcloseTag";
109
106
  return "tag";
110
- }
111
- else if (ch == "=") {
107
+ } else if (ch == "=") {
112
108
  type = "equals";
113
109
  return null;
114
- }
115
- else if (/[\'\"]/.test(ch)) {
110
+ } else if (ch == "<") {
111
+ return "error";
112
+ } else if (/[\'\"]/.test(ch)) {
116
113
  state.tokenize = inAttribute(ch);
117
114
  return state.tokenize(stream, state);
118
- }
119
- else {
115
+ } else {
120
116
  stream.eatWhile(/[^\s\u00a0=<>\"\']/);
121
117
  return "word";
122
118
  }
@@ -205,7 +205,6 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
205
205
  }
206
206
 
207
207
  .CodeMirror-widget {
208
- display: inline-block;
209
208
  }
210
209
 
211
210
  .CodeMirror-wrap .CodeMirror-scroll {
@@ -0,0 +1,82 @@
1
+ .CodeMirror-diff {
2
+ position: relative;
3
+ border: 1px solid #ddd;
4
+ }
5
+
6
+ .CodeMirror-diff, .CodeMirror-diff .CodeMirror {
7
+ height: 350px;
8
+ }
9
+
10
+ .CodeMirror-diff-2pane .CodeMirror-diff-pane { width: 47%; }
11
+ .CodeMirror-diff-2pane .CodeMirror-diff-gap { width: 6%; }
12
+ .CodeMirror-diff-3pane .CodeMirror-diff-pane { width: 31%; }
13
+ .CodeMirror-diff-3pane .CodeMirror-diff-gap { width: 3.5%; }
14
+
15
+ .CodeMirror-diff-pane {
16
+ float: left;
17
+ }
18
+
19
+ .CodeMirror-diff-gap {
20
+ float: left;
21
+ height: 100%;
22
+ box-sizing: border-box;
23
+ overflow: hidden;
24
+ border-left: 1px solid #ddd;
25
+ border-right: 1px solid #ddd;
26
+ position: relative;
27
+ background: #f8f8f8;
28
+ }
29
+
30
+ .CodeMirror-diff-scrolllock-wrap {
31
+ position: absolute;
32
+ bottom: 0; left: 50%;
33
+ }
34
+ .CodeMirror-diff-scrolllock {
35
+ position: relative;
36
+ left: -50%;
37
+ cursor: pointer;
38
+ color: #555;
39
+ line-height: 1;
40
+ }
41
+
42
+ .CodeMirror-diff-copybuttons-left, .CodeMirror-diff-copybuttons-right {
43
+ position: absolute;
44
+ left: 0; top: 0;
45
+ right: 0; bottom: 0;
46
+ line-height: 1;
47
+ }
48
+
49
+ .CodeMirror-diff-copy {
50
+ position: absolute;
51
+ cursor: pointer;
52
+ color: #44c;
53
+ }
54
+
55
+ .CodeMirror-diff-copybuttons-left .CodeMirror-diff-copy { left: 2px; }
56
+ .CodeMirror-diff-copybuttons-right .CodeMirror-diff-copy { right: 2px; }
57
+
58
+ .CodeMirror-diff-r-inserted, .CodeMirror-diff-l-inserted {
59
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==);
60
+ background-position: bottom left;
61
+ background-repeat: repeat-x;
62
+ }
63
+
64
+ .CodeMirror-diff-r-deleted, .CodeMirror-diff-l-deleted {
65
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==);
66
+ background-position: bottom left;
67
+ background-repeat: repeat-x;
68
+ }
69
+
70
+ .CodeMirror-diff-r-chunk { background: #ffffe0; }
71
+ .CodeMirror-diff-r-chunk-start { border-top: 1px solid #ee8; }
72
+ .CodeMirror-diff-r-chunk-end { border-bottom: 1px solid #ee8; }
73
+ .CodeMirror-diff-r-connect { fill: #ffffe0; stroke: #ee8; stroke-width: 1px; }
74
+
75
+ .CodeMirror-diff-l-chunk { background: #eef; }
76
+ .CodeMirror-diff-l-chunk-start { border-top: 1px solid #88e; }
77
+ .CodeMirror-diff-l-chunk-end { border-bottom: 1px solid #88e; }
78
+ .CodeMirror-diff-l-connect { fill: #eef; stroke: #88e; stroke-width: 1px; }
79
+
80
+ .CodeMirror-diff-l-chunk.CodeMirror-diff-r-chunk { background: #dfd; }
81
+ .CodeMirror-diff-l-chunk-start.CodeMirror-diff-r-chunk-start { border-top: 1px solid #4e4; }
82
+ .CodeMirror-diff-l-chunk-end.CodeMirror-diff-r-chunk-end { border-bottom: 1px solid #4e4; }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codemirror-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: '3.13'
4
+ version: '3.14'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Fixler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-27 00:00:00.000000000 Z
11
+ date: 2013-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -155,6 +155,7 @@ files:
155
155
  - vendor/assets/javascripts/codemirror/addons/edit/continuecomment.js
156
156
  - vendor/assets/javascripts/codemirror/addons/edit/continuelist.js
157
157
  - vendor/assets/javascripts/codemirror/addons/edit/matchbrackets.js
158
+ - vendor/assets/javascripts/codemirror/addons/edit/trailingspace.js
158
159
  - vendor/assets/javascripts/codemirror/addons/fold/brace-fold.js
159
160
  - vendor/assets/javascripts/codemirror/addons/fold/foldcode.js
160
161
  - vendor/assets/javascripts/codemirror/addons/fold/indent-fold.js
@@ -165,9 +166,11 @@ files:
165
166
  - vendor/assets/javascripts/codemirror/addons/hint/python-hint.js
166
167
  - vendor/assets/javascripts/codemirror/addons/hint/show-hint.js
167
168
  - vendor/assets/javascripts/codemirror/addons/hint/xml-hint.js
169
+ - vendor/assets/javascripts/codemirror/addons/lint/coffeescript-lint.js
168
170
  - vendor/assets/javascripts/codemirror/addons/lint/javascript-lint.js
169
171
  - vendor/assets/javascripts/codemirror/addons/lint/json-lint.js
170
172
  - vendor/assets/javascripts/codemirror/addons/lint/lint.js
173
+ - vendor/assets/javascripts/codemirror/addons/merge/merge.js
171
174
  - vendor/assets/javascripts/codemirror/addons/mode/loadmode.js
172
175
  - vendor/assets/javascripts/codemirror/addons/mode/multiplex.js
173
176
  - vendor/assets/javascripts/codemirror/addons/mode/overlay.js
@@ -181,6 +184,7 @@ files:
181
184
  - vendor/assets/javascripts/codemirror/addons/selection/active-line.js
182
185
  - vendor/assets/javascripts/codemirror/addons/selection/mark-selection.js
183
186
  - vendor/assets/javascripts/codemirror/keymaps/emacs.js
187
+ - vendor/assets/javascripts/codemirror/keymaps/extra.js
184
188
  - vendor/assets/javascripts/codemirror/keymaps/vim.js
185
189
  - vendor/assets/javascripts/codemirror/modes/apl.js
186
190
  - vendor/assets/javascripts/codemirror/modes/asterisk.js
@@ -252,6 +256,7 @@ files:
252
256
  - vendor/assets/stylesheets/codemirror/addons/dialog/dialog.css
253
257
  - vendor/assets/stylesheets/codemirror/addons/hint/show-hint.css
254
258
  - vendor/assets/stylesheets/codemirror/addons/lint/lint.css
259
+ - vendor/assets/stylesheets/codemirror/addons/merge/merge.css
255
260
  - vendor/assets/stylesheets/codemirror/modes/rpm-spec.css
256
261
  - vendor/assets/stylesheets/codemirror/modes/tiddlywiki.css
257
262
  - vendor/assets/stylesheets/codemirror/modes/tiki.css