codemirror-rails 5.0 → 5.1

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/codemirror/rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/codemirror.js +104 -64
  4. data/vendor/assets/javascripts/codemirror/addons/dialog/dialog.js +3 -1
  5. data/vendor/assets/javascripts/codemirror/addons/edit/closebrackets.js +144 -121
  6. data/vendor/assets/javascripts/codemirror/addons/fold/foldgutter.js +4 -2
  7. data/vendor/assets/javascripts/codemirror/addons/hint/css-hint.js +4 -0
  8. data/vendor/assets/javascripts/codemirror/addons/hint/sql-hint.js +13 -8
  9. data/vendor/assets/javascripts/codemirror/addons/lint/lint.js +2 -0
  10. data/vendor/assets/javascripts/codemirror/addons/merge/merge.js +40 -0
  11. data/vendor/assets/javascripts/codemirror/addons/mode/multiplex_test.js +33 -0
  12. data/vendor/assets/javascripts/codemirror/addons/scroll/simplescrollbars.js +8 -2
  13. data/vendor/assets/javascripts/codemirror/addons/tern/tern.js +1 -1
  14. data/vendor/assets/javascripts/codemirror/keymaps/sublime.js +13 -0
  15. data/vendor/assets/javascripts/codemirror/keymaps/vim.js +43 -54
  16. data/vendor/assets/javascripts/codemirror/modes/asciiarmor.js +73 -0
  17. data/vendor/assets/javascripts/codemirror/modes/clike.js +2 -1
  18. data/vendor/assets/javascripts/codemirror/modes/clojure.js +1 -0
  19. data/vendor/assets/javascripts/codemirror/modes/cmake.js +97 -0
  20. data/vendor/assets/javascripts/codemirror/modes/commonlisp.js +1 -0
  21. data/vendor/assets/javascripts/codemirror/modes/css.js +1 -0
  22. data/vendor/assets/javascripts/codemirror/modes/groovy.js +1 -0
  23. data/vendor/assets/javascripts/codemirror/modes/htmlembedded.js +18 -76
  24. data/vendor/assets/javascripts/codemirror/modes/javascript.js +5 -0
  25. data/vendor/assets/javascripts/codemirror/modes/kotlin.js +1 -0
  26. data/vendor/assets/javascripts/codemirror/modes/less_test.js +51 -0
  27. data/vendor/assets/javascripts/codemirror/modes/mllike.js +1 -1
  28. data/vendor/assets/javascripts/codemirror/modes/properties.js +1 -1
  29. data/vendor/assets/javascripts/codemirror/modes/python.js +1 -0
  30. data/vendor/assets/javascripts/codemirror/modes/sass.js +1 -1
  31. data/vendor/assets/javascripts/codemirror/modes/scheme.js +1 -0
  32. data/vendor/assets/javascripts/codemirror/modes/scss_test.js +110 -0
  33. data/vendor/assets/javascripts/codemirror/modes/smarty.js +100 -107
  34. data/vendor/assets/javascripts/codemirror/modes/stylus.js +651 -332
  35. data/vendor/assets/javascripts/codemirror/modes/test.js +67 -0
  36. data/vendor/assets/javascripts/codemirror/modes/troff.js +82 -0
  37. data/vendor/assets/javascripts/codemirror/modes/vb.js +6 -5
  38. data/vendor/assets/javascripts/codemirror/modes/verilog.js +53 -53
  39. data/vendor/assets/stylesheets/codemirror.css +11 -8
  40. data/vendor/assets/stylesheets/codemirror/themes/mdn-like.css +1 -1
  41. metadata +9 -3
  42. data/vendor/assets/javascripts/codemirror/modes/smartymixed.js +0 -197
@@ -403,7 +403,8 @@ CodeMirror.defineMode("clike", function(config, parserConfig) {
403
403
  stream.eatWhile(/[\w\$_\xa1-\uffff]/);
404
404
  return "atom";
405
405
  }
406
- }
406
+ },
407
+ modeProps: {closeBrackets: {triples: '"'}}
407
408
  });
408
409
 
409
410
  def(["x-shader/x-vertex", "x-shader/x-fragment"], {
@@ -234,6 +234,7 @@ CodeMirror.defineMode("clojure", function (options) {
234
234
  return state.indentStack.indent;
235
235
  },
236
236
 
237
+ closeBrackets: {pairs: "()[]{}\"\""},
237
238
  lineComment: ";;"
238
239
  };
239
240
  });
@@ -0,0 +1,97 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: http://codemirror.net/LICENSE
3
+
4
+ (function(mod) {
5
+ if (typeof exports == "object" && typeof module == "object")
6
+ mod(require("../../lib/codemirror"));
7
+ else if (typeof define == "function" && define.amd)
8
+ define(["../../lib/codemirror"], mod);
9
+ else
10
+ mod(CodeMirror);
11
+ })(function(CodeMirror) {
12
+ "use strict";
13
+
14
+ CodeMirror.defineMode("cmake", function () {
15
+ var variable_regex = /({)?[a-zA-Z0-9_]+(})?/;
16
+
17
+ function tokenString(stream, state) {
18
+ var current, prev, found_var = false;
19
+ while (!stream.eol() && (current = stream.next()) != state.pending) {
20
+ if (current === '$' && prev != '\\' && state.pending == '"') {
21
+ found_var = true;
22
+ break;
23
+ }
24
+ prev = current;
25
+ }
26
+ if (found_var) {
27
+ stream.backUp(1);
28
+ }
29
+ if (current == state.pending) {
30
+ state.continueString = false;
31
+ } else {
32
+ state.continueString = true;
33
+ }
34
+ return "string";
35
+ }
36
+
37
+ function tokenize(stream, state) {
38
+ var ch = stream.next();
39
+
40
+ // Have we found a variable?
41
+ if (ch === '$') {
42
+ if (stream.match(variable_regex)) {
43
+ return 'variable-2';
44
+ }
45
+ return 'variable';
46
+ }
47
+ // Should we still be looking for the end of a string?
48
+ if (state.continueString) {
49
+ // If so, go through the loop again
50
+ stream.backUp(1);
51
+ return tokenString(stream, state);
52
+ }
53
+ // Do we just have a function on our hands?
54
+ // In 'cmake_minimum_required (VERSION 2.8.8)', 'cmake_minimum_required' is matched
55
+ if (stream.match(/(\s+)?\w+\(/) || stream.match(/(\s+)?\w+\ \(/)) {
56
+ stream.backUp(1);
57
+ return 'def';
58
+ }
59
+ if (ch == "#") {
60
+ stream.skipToEnd();
61
+ return "comment";
62
+ }
63
+ // Have we found a string?
64
+ if (ch == "'" || ch == '"') {
65
+ // Store the type (single or double)
66
+ state.pending = ch;
67
+ // Perform the looping function to find the end
68
+ return tokenString(stream, state);
69
+ }
70
+ if (ch == '(' || ch == ')') {
71
+ return 'bracket';
72
+ }
73
+ if (ch.match(/[0-9]/)) {
74
+ return 'number';
75
+ }
76
+ stream.eatWhile(/[\w-]/);
77
+ return null;
78
+ }
79
+ return {
80
+ startState: function () {
81
+ var state = {};
82
+ state.inDefinition = false;
83
+ state.inInclude = false;
84
+ state.continueString = false;
85
+ state.pending = false;
86
+ return state;
87
+ },
88
+ token: function (stream, state) {
89
+ if (stream.eatSpace()) return null;
90
+ return tokenize(stream, state);
91
+ }
92
+ };
93
+ });
94
+
95
+ CodeMirror.defineMIME("text/x-cmake", "cmake");
96
+
97
+ });
@@ -111,6 +111,7 @@ CodeMirror.defineMode("commonlisp", function (config) {
111
111
  return typeof i == "number" ? i : state.ctx.start + 1;
112
112
  },
113
113
 
114
+ closeBrackets: {pairs: "()[]{}\"\""},
114
115
  lineComment: ";;",
115
116
  blockCommentStart: "#|",
116
117
  blockCommentEnd: "|#"
@@ -239,6 +239,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
239
239
  if (type == "{" || type == "}") return popAndPass(type, stream, state);
240
240
  if (type == ")") return popContext(state);
241
241
  if (type == "(") return pushContext(state, stream, "parens");
242
+ if (type == "interpolation") return pushContext(state, stream, "interpolation");
242
243
  if (type == "word") wordAsValue(stream);
243
244
  return "parens";
244
245
  };
@@ -217,6 +217,7 @@ CodeMirror.defineMode("groovy", function(config) {
217
217
  },
218
218
 
219
219
  electricChars: "{}",
220
+ closeBrackets: {triples: "'\""},
220
221
  fold: "brace"
221
222
  };
222
223
  });
@@ -3,84 +3,26 @@
3
3
 
4
4
  (function(mod) {
5
5
  if (typeof exports == "object" && typeof module == "object") // CommonJS
6
- mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"));
6
+ mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"),
7
+ require("../../addon/mode/multiplex"));
7
8
  else if (typeof define == "function" && define.amd) // AMD
8
- define(["../../lib/codemirror", "../htmlmixed/htmlmixed"], mod);
9
+ define(["../../lib/codemirror", "../htmlmixed/htmlmixed",
10
+ "../../addon/mode/multiplex"], mod);
9
11
  else // Plain browser env
10
12
  mod(CodeMirror);
11
13
  })(function(CodeMirror) {
12
- "use strict";
13
-
14
- CodeMirror.defineMode("htmlembedded", function(config, parserConfig) {
15
-
16
- //config settings
17
- var scriptStartRegex = parserConfig.scriptStartRegex || /^<%/i,
18
- scriptEndRegex = parserConfig.scriptEndRegex || /^%>/i;
19
-
20
- //inner modes
21
- var scriptingMode, htmlMixedMode;
22
-
23
- //tokenizer when in html mode
24
- function htmlDispatch(stream, state) {
25
- if (stream.match(scriptStartRegex, false)) {
26
- state.token=scriptingDispatch;
27
- return scriptingMode.token(stream, state.scriptState);
28
- }
29
- else
30
- return htmlMixedMode.token(stream, state.htmlState);
31
- }
32
-
33
- //tokenizer when in scripting mode
34
- function scriptingDispatch(stream, state) {
35
- if (stream.match(scriptEndRegex, false)) {
36
- state.token=htmlDispatch;
37
- return htmlMixedMode.token(stream, state.htmlState);
38
- }
39
- else
40
- return scriptingMode.token(stream, state.scriptState);
41
- }
42
-
43
-
44
- return {
45
- startState: function() {
46
- scriptingMode = scriptingMode || CodeMirror.getMode(config, parserConfig.scriptingModeSpec);
47
- htmlMixedMode = htmlMixedMode || CodeMirror.getMode(config, "htmlmixed");
48
- return {
49
- token : parserConfig.startOpen ? scriptingDispatch : htmlDispatch,
50
- htmlState : CodeMirror.startState(htmlMixedMode),
51
- scriptState : CodeMirror.startState(scriptingMode)
52
- };
53
- },
54
-
55
- token: function(stream, state) {
56
- return state.token(stream, state);
57
- },
58
-
59
- indent: function(state, textAfter) {
60
- if (state.token == htmlDispatch)
61
- return htmlMixedMode.indent(state.htmlState, textAfter);
62
- else if (scriptingMode.indent)
63
- return scriptingMode.indent(state.scriptState, textAfter);
64
- },
65
-
66
- copyState: function(state) {
67
- return {
68
- token : state.token,
69
- htmlState : CodeMirror.copyState(htmlMixedMode, state.htmlState),
70
- scriptState : CodeMirror.copyState(scriptingMode, state.scriptState)
71
- };
72
- },
73
-
74
- innerMode: function(state) {
75
- if (state.token == scriptingDispatch) return {state: state.scriptState, mode: scriptingMode};
76
- else return {state: state.htmlState, mode: htmlMixedMode};
77
- }
78
- };
79
- }, "htmlmixed");
80
-
81
- CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingModeSpec:"javascript"});
82
- CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingModeSpec:"text/x-csharp"});
83
- CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingModeSpec:"text/x-java"});
84
- CodeMirror.defineMIME("application/x-erb", { name: "htmlembedded", scriptingModeSpec:"ruby"});
85
-
14
+ "use strict";
15
+
16
+ CodeMirror.defineMode("htmlembedded", function(config, parserConfig) {
17
+ return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), {
18
+ open: parserConfig.open || parserConfig.scriptStartRegex || "<%",
19
+ close: parserConfig.close || parserConfig.scriptEndRegex || "%>",
20
+ mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec)
21
+ });
22
+ }, "htmlmixed");
23
+
24
+ CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingModeSpec:"javascript"});
25
+ CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingModeSpec:"text/x-csharp"});
26
+ CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingModeSpec:"text/x-java"});
27
+ CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingModeSpec:"ruby"});
86
28
  });
@@ -549,6 +549,10 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
549
549
  }
550
550
  function classBody(type, value) {
551
551
  if (type == "variable" || cx.style == "keyword") {
552
+ if (value == "static") {
553
+ cx.marked = "keyword";
554
+ return cont(classBody);
555
+ }
552
556
  cx.marked = "property";
553
557
  if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody);
554
558
  return cont(functiondef, classBody);
@@ -669,6 +673,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
669
673
  blockCommentEnd: jsonMode ? null : "*/",
670
674
  lineComment: jsonMode ? null : "//",
671
675
  fold: "brace",
676
+ closeBrackets: "()[]{}''\"\"``",
672
677
 
673
678
  helperType: jsonMode ? "json" : "javascript",
674
679
  jsonldMode: jsonldMode,
@@ -271,6 +271,7 @@ CodeMirror.defineMode("kotlin", function (config, parserConfig) {
271
271
  else return ctx.indented + (closing ? 0 : config.indentUnit);
272
272
  },
273
273
 
274
+ closeBrackets: {triples: "'\""},
274
275
  electricChars: "{}"
275
276
  };
276
277
  });
@@ -0,0 +1,51 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: http://codemirror.net/LICENSE
3
+
4
+ (function() {
5
+ "use strict";
6
+
7
+ var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less");
8
+ function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); }
9
+
10
+ MT("variable",
11
+ "[variable-2 @base]: [atom #f04615];",
12
+ "[qualifier .class] {",
13
+ " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]",
14
+ " [property color]: [variable saturate]([variable-2 @base], [number 5%]);",
15
+ "}");
16
+
17
+ MT("amp",
18
+ "[qualifier .child], [qualifier .sibling] {",
19
+ " [qualifier .parent] [atom &] {",
20
+ " [property color]: [keyword black];",
21
+ " }",
22
+ " [atom &] + [atom &] {",
23
+ " [property color]: [keyword red];",
24
+ " }",
25
+ "}");
26
+
27
+ MT("mixin",
28
+ "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {",
29
+ " [property color]: [variable darken]([variable-2 @color], [number 10%]);",
30
+ "}",
31
+ "[qualifier .mixin] ([variable light]; [variable-2 @color]) {",
32
+ " [property color]: [variable lighten]([variable-2 @color], [number 10%]);",
33
+ "}",
34
+ "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {",
35
+ " [property display]: [atom block];",
36
+ "}",
37
+ "[variable-2 @switch]: [variable light];",
38
+ "[qualifier .class] {",
39
+ " [qualifier .mixin]([variable-2 @switch]; [atom #888]);",
40
+ "}");
41
+
42
+ MT("nest",
43
+ "[qualifier .one] {",
44
+ " [def @media] ([property width]: [number 400px]) {",
45
+ " [property font-size]: [number 1.2em];",
46
+ " [def @media] [attribute print] [keyword and] [property color] {",
47
+ " [property color]: [keyword blue];",
48
+ " }",
49
+ " }",
50
+ "}");
51
+ })();
@@ -85,7 +85,7 @@ CodeMirror.defineMode('mllike', function(_config, parserConfig) {
85
85
  }
86
86
  stream.eatWhile(/\w/);
87
87
  var cur = stream.current();
88
- return words[cur] || 'variable';
88
+ return words.hasOwnProperty(cur) ? words[cur] : 'variable';
89
89
  }
90
90
 
91
91
  function tokenString(stream, state) {
@@ -51,7 +51,7 @@ CodeMirror.defineMode("properties", function() {
51
51
  state.position = "quote";
52
52
  return null;
53
53
  } else if (ch === "\\" && state.position === "quote") {
54
- if (stream.next() !== "u") { // u = Unicode sequence \u1234
54
+ if (stream.eol()) { // end of line?
55
55
  // Multiline value
56
56
  state.nextMultiline = true;
57
57
  }
@@ -339,6 +339,7 @@
339
339
  return scope.offset;
340
340
  },
341
341
 
342
+ closeBrackets: {triples: "'\""},
342
343
  lineComment: "#",
343
344
  fold: "indent"
344
345
  };
@@ -232,7 +232,7 @@ CodeMirror.defineMode("sass", function(config) {
232
232
 
233
233
  if (stream.eatWhile(/[\w-]/)){
234
234
  if(stream.match(/ *: *[\w-\+\$#!\("']/,false)){
235
- return "propery";
235
+ return "property";
236
236
  }
237
237
  else if(stream.match(/ *:/,false)){
238
238
  indent(state);
@@ -239,6 +239,7 @@ CodeMirror.defineMode("scheme", function () {
239
239
  return state.indentStack.indent;
240
240
  },
241
241
 
242
+ closeBrackets: {pairs: "()[]{}\"\""},
242
243
  lineComment: ";;"
243
244
  };
244
245
  });
@@ -0,0 +1,110 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: http://codemirror.net/LICENSE
3
+
4
+ (function() {
5
+ var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss");
6
+ function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); }
7
+
8
+ MT('url_with_quotation',
9
+ "[tag foo] { [property background]:[atom url]([string test.jpg]) }");
10
+
11
+ MT('url_with_double_quotes',
12
+ "[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }");
13
+
14
+ MT('url_with_single_quotes',
15
+ "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }");
16
+
17
+ MT('string',
18
+ "[def @import] [string \"compass/css3\"]");
19
+
20
+ MT('important_keyword',
21
+ "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }");
22
+
23
+ MT('variable',
24
+ "[variable-2 $blue]:[atom #333]");
25
+
26
+ MT('variable_as_attribute',
27
+ "[tag foo] { [property color]:[variable-2 $blue] }");
28
+
29
+ MT('numbers',
30
+ "[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }");
31
+
32
+ MT('number_percentage',
33
+ "[tag foo] { [property width]:[number 80%] }");
34
+
35
+ MT('selector',
36
+ "[builtin #hello][qualifier .world]{}");
37
+
38
+ MT('singleline_comment',
39
+ "[comment // this is a comment]");
40
+
41
+ MT('multiline_comment',
42
+ "[comment /*foobar*/]");
43
+
44
+ MT('attribute_with_hyphen',
45
+ "[tag foo] { [property font-size]:[number 10px] }");
46
+
47
+ MT('string_after_attribute',
48
+ "[tag foo] { [property content]:[string \"::\"] }");
49
+
50
+ MT('directives',
51
+ "[def @include] [qualifier .mixin]");
52
+
53
+ MT('basic_structure',
54
+ "[tag p] { [property background]:[keyword red]; }");
55
+
56
+ MT('nested_structure',
57
+ "[tag p] { [tag a] { [property color]:[keyword red]; } }");
58
+
59
+ MT('mixin',
60
+ "[def @mixin] [tag table-base] {}");
61
+
62
+ MT('number_without_semicolon',
63
+ "[tag p] {[property width]:[number 12]}",
64
+ "[tag a] {[property color]:[keyword red];}");
65
+
66
+ MT('atom_in_nested_block',
67
+ "[tag p] { [tag a] { [property color]:[atom #000]; } }");
68
+
69
+ MT('interpolation_in_property',
70
+ "[tag foo] { #{[variable-2 $hello]}:[number 2]; }");
71
+
72
+ MT('interpolation_in_selector',
73
+ "[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }");
74
+
75
+ MT('interpolation_error',
76
+ "[tag foo]#{[error foo]} { [property color]:[atom #000]; }");
77
+
78
+ MT("divide_operator",
79
+ "[tag foo] { [property width]:[number 4] [operator /] [number 2] }");
80
+
81
+ MT('nested_structure_with_id_selector',
82
+ "[tag p] { [builtin #hello] { [property color]:[keyword red]; } }");
83
+
84
+ MT('indent_mixin',
85
+ "[def @mixin] [tag container] (",
86
+ " [variable-2 $a]: [number 10],",
87
+ " [variable-2 $b]: [number 10])",
88
+ "{}");
89
+
90
+ MT('indent_nested',
91
+ "[tag foo] {",
92
+ " [tag bar] {",
93
+ " }",
94
+ "}");
95
+
96
+ MT('indent_parentheses',
97
+ "[tag foo] {",
98
+ " [property color]: [variable darken]([variable-2 $blue],",
99
+ " [number 9%]);",
100
+ "}");
101
+
102
+ MT('indent_vardef',
103
+ "[variable-2 $name]:",
104
+ " [string 'val'];",
105
+ "[tag tag] {",
106
+ " [tag inner] {",
107
+ " [property margin]: [number 3px];",
108
+ " }",
109
+ "}");
110
+ })();