codemirror-rails 5.4 → 5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/lib/codemirror/rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/codemirror.js +88 -35
  4. data/vendor/assets/javascripts/codemirror/addons/hint/show-hint.js +10 -7
  5. data/vendor/assets/javascripts/codemirror/addons/search/search.js +52 -17
  6. data/vendor/assets/javascripts/codemirror/addons/tern/tern.js +1 -1
  7. data/vendor/assets/javascripts/codemirror/keymaps/emacs.js +1 -1
  8. data/vendor/assets/javascripts/codemirror/keymaps/sublime.js +4 -2
  9. data/vendor/assets/javascripts/codemirror/keymaps/vim.js +1 -1
  10. data/vendor/assets/javascripts/codemirror/modes/brainfuck.js +85 -0
  11. data/vendor/assets/javascripts/codemirror/modes/clike.js +13 -0
  12. data/vendor/assets/javascripts/codemirror/modes/css.js +2 -0
  13. data/vendor/assets/javascripts/codemirror/modes/erlang.js +0 -4
  14. data/vendor/assets/javascripts/codemirror/modes/gfm.js +3 -2
  15. data/vendor/assets/javascripts/codemirror/modes/markdown.js +7 -7
  16. data/vendor/assets/javascripts/codemirror/modes/ruby.js +1 -1
  17. data/vendor/assets/javascripts/codemirror/modes/rust.js +1 -1
  18. data/vendor/assets/javascripts/codemirror/modes/vhdl.js +189 -0
  19. data/vendor/assets/javascripts/codemirror/modes/xml.js +1 -0
  20. data/vendor/assets/stylesheets/codemirror.css +19 -12
  21. data/vendor/assets/stylesheets/codemirror/addons/tern/tern.css +1 -0
  22. data/vendor/assets/stylesheets/codemirror/themes/3024-day.css +3 -2
  23. data/vendor/assets/stylesheets/codemirror/themes/3024-night.css +2 -2
  24. data/vendor/assets/stylesheets/codemirror/themes/ambiance.css +2 -2
  25. data/vendor/assets/stylesheets/codemirror/themes/base16-dark.css +2 -2
  26. data/vendor/assets/stylesheets/codemirror/themes/base16-light.css +2 -2
  27. data/vendor/assets/stylesheets/codemirror/themes/blackboard.css +2 -2
  28. data/vendor/assets/stylesheets/codemirror/themes/cobalt.css +2 -2
  29. data/vendor/assets/stylesheets/codemirror/themes/dracula.css +87 -0
  30. data/vendor/assets/stylesheets/codemirror/themes/erlang-dark.css +2 -2
  31. data/vendor/assets/stylesheets/codemirror/themes/icecoder.css +42 -0
  32. data/vendor/assets/stylesheets/codemirror/themes/lesser-dark.css +2 -2
  33. data/vendor/assets/stylesheets/codemirror/themes/material.css +105 -0
  34. data/vendor/assets/stylesheets/codemirror/themes/mbo.css +2 -2
  35. data/vendor/assets/stylesheets/codemirror/themes/mdn-like.css +2 -2
  36. data/vendor/assets/stylesheets/codemirror/themes/midnight.css +2 -2
  37. data/vendor/assets/stylesheets/codemirror/themes/monokai.css +2 -2
  38. data/vendor/assets/stylesheets/codemirror/themes/night.css +2 -2
  39. data/vendor/assets/stylesheets/codemirror/themes/paraiso-dark.css +2 -2
  40. data/vendor/assets/stylesheets/codemirror/themes/paraiso-light.css +2 -2
  41. data/vendor/assets/stylesheets/codemirror/themes/pastel-on-dark.css +2 -2
  42. data/vendor/assets/stylesheets/codemirror/themes/rubyblue.css +2 -2
  43. data/vendor/assets/stylesheets/codemirror/themes/seti.css +88 -0
  44. data/vendor/assets/stylesheets/codemirror/themes/solarized.css +3 -3
  45. data/vendor/assets/stylesheets/codemirror/themes/the-matrix.css +2 -2
  46. data/vendor/assets/stylesheets/codemirror/themes/tomorrow-night-eighties.css +2 -2
  47. data/vendor/assets/stylesheets/codemirror/themes/twilight.css +2 -2
  48. data/vendor/assets/stylesheets/codemirror/themes/vibrant-ink.css +2 -2
  49. data/vendor/assets/stylesheets/codemirror/themes/xq-dark.css +2 -2
  50. data/vendor/assets/stylesheets/codemirror/themes/yeti.css +86 -0
  51. metadata +8 -1
@@ -216,7 +216,7 @@
216
216
  var completion = data.completions[i], className = typeToIcon(completion.type);
217
217
  if (data.guess) className += " " + cls + "guess";
218
218
  completions.push({text: completion.name + after,
219
- displayText: completion.name,
219
+ displayText: completion.displayName || completion.name,
220
220
  className: className,
221
221
  data: completion});
222
222
  }
@@ -377,7 +377,7 @@
377
377
 
378
378
  getInput(cm, "Goto line", function(str) {
379
379
  var num;
380
- if (str && !isNaN(num = Number(str)) && num == num|0 && num > 0)
380
+ if (str && !isNaN(num = Number(str)) && num == (num|0) && num > 0)
381
381
  cm.setCursor(num - 1);
382
382
  });
383
383
  },
@@ -55,7 +55,9 @@
55
55
  cmds[map["Alt-Left"] = "goSubwordLeft"] = function(cm) { moveSubword(cm, -1); };
56
56
  cmds[map["Alt-Right"] = "goSubwordRight"] = function(cm) { moveSubword(cm, 1); };
57
57
 
58
- cmds[map[ctrl + "Up"] = "scrollLineUp"] = function(cm) {
58
+ var scrollLineCombo = mac ? "Ctrl-Alt-" : "Ctrl-";
59
+
60
+ cmds[map[scrollLineCombo + "Up"] = "scrollLineUp"] = function(cm) {
59
61
  var info = cm.getScrollInfo();
60
62
  if (!cm.somethingSelected()) {
61
63
  var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, "local");
@@ -64,7 +66,7 @@
64
66
  }
65
67
  cm.scrollTo(null, info.top - cm.defaultTextHeight());
66
68
  };
67
- cmds[map[ctrl + "Down"] = "scrollLineDown"] = function(cm) {
69
+ cmds[map[scrollLineCombo + "Down"] = "scrollLineDown"] = function(cm) {
68
70
  var info = cm.getScrollInfo();
69
71
  if (!cm.somethingSelected()) {
70
72
  var visibleTopLine = cm.lineAtHeight(info.top, "local")+1;
@@ -4308,7 +4308,7 @@
4308
4308
  if (decimal + hex + octal > 1) { return 'Invalid arguments'; }
4309
4309
  number = decimal && 'decimal' || hex && 'hex' || octal && 'octal';
4310
4310
  }
4311
- if (args.eatSpace() && args.match(/\/.*\//)) { 'patterns not supported'; }
4311
+ if (args.match(/\/.*\//)) { return 'patterns not supported'; }
4312
4312
  }
4313
4313
  }
4314
4314
  var err = parseArgs();
@@ -0,0 +1,85 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: http://codemirror.net/LICENSE
3
+
4
+ // Brainfuck mode created by Michael Kaminsky https://github.com/mkaminsky11
5
+
6
+ (function(mod) {
7
+ if (typeof exports == "object" && typeof module == "object")
8
+ mod(require("../../lib/codemirror"))
9
+ else if (typeof define == "function" && define.amd)
10
+ define(["../../lib/codemirror"], mod)
11
+ else
12
+ mod(CodeMirror)
13
+ })(function(CodeMirror) {
14
+ "use strict"
15
+ var reserve = "><+-.,[]".split("");
16
+ /*
17
+ comments can be either:
18
+ placed behind lines
19
+
20
+ +++ this is a comment
21
+
22
+ where reserved characters cannot be used
23
+ or in a loop
24
+ [
25
+ this is ok to use [ ] and stuff
26
+ ]
27
+ or preceded by #
28
+ */
29
+ CodeMirror.defineMode("brainfuck", function() {
30
+ return {
31
+ startState: function() {
32
+ return {
33
+ commentLine: false,
34
+ left: 0,
35
+ right: 0,
36
+ commentLoop: false
37
+ }
38
+ },
39
+ token: function(stream, state) {
40
+ if (stream.eatSpace()) return null
41
+ if(stream.sol()){
42
+ state.commentLine = false;
43
+ }
44
+ var ch = stream.next().toString();
45
+ if(reserve.indexOf(ch) !== -1){
46
+ if(state.commentLine === true){
47
+ if(stream.eol()){
48
+ state.commentLine = false;
49
+ }
50
+ return "comment";
51
+ }
52
+ if(ch === "]" || ch === "["){
53
+ if(ch === "["){
54
+ state.left++;
55
+ }
56
+ else{
57
+ state.right++;
58
+ }
59
+ return "bracket";
60
+ }
61
+ else if(ch === "+" || ch === "-"){
62
+ return "keyword";
63
+ }
64
+ else if(ch === "<" || ch === ">"){
65
+ return "atom";
66
+ }
67
+ else if(ch === "." || ch === ","){
68
+ return "def";
69
+ }
70
+ }
71
+ else{
72
+ state.commentLine = true;
73
+ if(stream.eol()){
74
+ state.commentLine = false;
75
+ }
76
+ return "comment";
77
+ }
78
+ if(stream.eol()){
79
+ state.commentLine = false;
80
+ }
81
+ }
82
+ };
83
+ });
84
+ CodeMirror.defineMIME("text/x-brainfuck","brainfuck")
85
+ });
@@ -588,4 +588,17 @@ CodeMirror.defineMode("clike", function(config, parserConfig) {
588
588
  modeProps: {fold: "brace"}
589
589
  });
590
590
 
591
+ def("text/x-squirrel", {
592
+ name: "clike",
593
+ keywords: words("base break clone continue const default delete enum extends function in class" +
594
+ " foreach local resume return this throw typeof yield constructor instanceof static"),
595
+ types: words(cTypes),
596
+ blockKeywords: words("case catch class else for foreach if switch try while"),
597
+ defKeywords: words("function local class"),
598
+ typeFirstDefinitions: true,
599
+ atoms: words("true false null"),
600
+ hooks: {"#": cppHook},
601
+ modeProps: {fold: ["brace", "include"]}
602
+ });
603
+
591
604
  });
@@ -273,6 +273,8 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
273
273
  override = "string-2";
274
274
  else if (valueKeywords.hasOwnProperty(word))
275
275
  override = "atom";
276
+ else if (colorKeywords.hasOwnProperty(word))
277
+ override = "keyword";
276
278
  else
277
279
  override = "error";
278
280
  }
@@ -220,8 +220,6 @@ CodeMirror.defineMode("erlang", function(cmCfg) {
220
220
  }else{
221
221
  return rval(state,stream,"function");
222
222
  }
223
- }else if (is_member(w,operatorAtomWords)) {
224
- return rval(state,stream,"operator");
225
223
  }else if (lookahead(stream) == ":") {
226
224
  if (w == "erlang") {
227
225
  return rval(state,stream,"builtin");
@@ -230,8 +228,6 @@ CodeMirror.defineMode("erlang", function(cmCfg) {
230
228
  }
231
229
  }else if (is_member(w,["true","false"])) {
232
230
  return rval(state,stream,"boolean");
233
- }else if (is_member(w,["true","false"])) {
234
- return rval(state,stream,"boolean");
235
231
  }else{
236
232
  return rval(state,stream,"atom");
237
233
  }
@@ -116,8 +116,9 @@ CodeMirror.defineMode("gfm", function(config, modeConfig) {
116
116
  markdownConfig[attr] = modeConfig[attr];
117
117
  }
118
118
  markdownConfig.name = "markdown";
119
- CodeMirror.defineMIME("gfmBase", markdownConfig);
120
- return CodeMirror.overlayMode(CodeMirror.getMode(config, "gfmBase"), gfmOverlay);
119
+ return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay);
120
+
121
121
  }, "markdown");
122
122
 
123
+ CodeMirror.defineMIME("text/x-gfm", "gfm");
123
124
  });
@@ -202,7 +202,8 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
202
202
 
203
203
  function htmlBlock(stream, state) {
204
204
  var style = htmlMode.token(stream, state.htmlState);
205
- if ((htmlFound && state.htmlState.tagStart === null && !state.htmlState.context) ||
205
+ if ((htmlFound && state.htmlState.tagStart === null &&
206
+ (!state.htmlState.context && state.htmlState.tokenize.isInText)) ||
206
207
  (state.md_inside && stream.current().indexOf(">") > -1)) {
207
208
  state.f = inlineNormal;
208
209
  state.block = blockNormal;
@@ -446,12 +447,11 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
446
447
  return type + linkemail;
447
448
  }
448
449
 
449
- if (ch === '<' && stream.match(/^\w/, false)) {
450
- if (stream.string.indexOf(">") != -1) {
451
- var atts = stream.string.substring(1,stream.string.indexOf(">"));
452
- if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) {
453
- state.md_inside = true;
454
- }
450
+ if (ch === '<' && stream.match(/^(!--|\w)/, false)) {
451
+ var end = stream.string.indexOf(">", stream.pos);
452
+ if (end != -1) {
453
+ var atts = stream.string.substring(stream.start, end);
454
+ if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true;
455
455
  }
456
456
  stream.backUp(1);
457
457
  state.htmlState = CodeMirror.startState(htmlMode);
@@ -37,7 +37,6 @@ CodeMirror.defineMode("ruby", function(config) {
37
37
  }
38
38
 
39
39
  function tokenBase(stream, state) {
40
- curPunc = null;
41
40
  if (stream.sol() && stream.match("=begin") && stream.eol()) {
42
41
  state.tokenize.push(readBlockComment);
43
42
  return "comment";
@@ -232,6 +231,7 @@ CodeMirror.defineMode("ruby", function(config) {
232
231
  },
233
232
 
234
233
  token: function(stream, state) {
234
+ curPunc = null;
235
235
  if (stream.sol()) state.indented = stream.indentation();
236
236
  var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype;
237
237
  var thisTok = curPunc;
@@ -26,7 +26,7 @@ CodeMirror.defineMode("rust", function() {
26
26
  };
27
27
  var typeKeywords = function() {
28
28
  var keywords = {"fn": "fn", "block": "fn", "obj": "obj"};
29
- var atoms = "bool uint int i8 i16 i32 i64 u8 u16 u32 u64 float f32 f64 str char".split(" ");
29
+ var atoms = "bool i8 i16 i32 i64 u8 u16 u32 u64 f32 f64 str char isize usize".split(" ");
30
30
  for (var i = 0, e = atoms.length; i < e; ++i) keywords[atoms[i]] = "atom";
31
31
  return keywords;
32
32
  }();
@@ -0,0 +1,189 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: http://codemirror.net/LICENSE
3
+
4
+ // Originall written by Alf Nielsen, re-written by Michael Zhou
5
+ (function(mod) {
6
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
7
+ mod(require("../../lib/codemirror"));
8
+ else if (typeof define == "function" && define.amd) // AMD
9
+ define(["../../lib/codemirror"], mod);
10
+ else // Plain browser env
11
+ mod(CodeMirror);
12
+ })(function(CodeMirror) {
13
+ "use strict";
14
+
15
+ function words(str) {
16
+ var obj = {}, words = str.split(",");
17
+ for (var i = 0; i < words.length; ++i) {
18
+ var allCaps = words[i].toUpperCase();
19
+ var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1);
20
+ obj[words[i]] = true;
21
+ obj[allCaps] = true;
22
+ obj[firstCap] = true;
23
+ }
24
+ return obj;
25
+ }
26
+
27
+ function metaHook(stream) {
28
+ stream.eatWhile(/[\w\$_]/);
29
+ return "meta";
30
+ }
31
+
32
+ CodeMirror.defineMode("vhdl", function(config, parserConfig) {
33
+ var indentUnit = config.indentUnit,
34
+ atoms = parserConfig.atoms || words("null"),
35
+ hooks = parserConfig.hooks || {"`": metaHook, "$": metaHook},
36
+ multiLineStrings = parserConfig.multiLineStrings;
37
+
38
+ var keywords = words("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block," +
39
+ "body,buffer,bus,case,component,configuration,constant,disconnent,downto,else,elsif,end,end block,end case," +
40
+ "end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for," +
41
+ "function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage," +
42
+ "literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map," +
43
+ "postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal," +
44
+ "sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor");
45
+
46
+ var blockKeywords = words("architecture,entity,begin,case,port,else,elsif,end,for,function,if");
47
+
48
+ var isOperatorChar = /[&|~><!\)\(*#%@+\/=?\:;}{,\.\^\-\[\]]/;
49
+ var curPunc;
50
+
51
+ function tokenBase(stream, state) {
52
+ var ch = stream.next();
53
+ if (hooks[ch]) {
54
+ var result = hooks[ch](stream, state);
55
+ if (result !== false) return result;
56
+ }
57
+ if (ch == '"') {
58
+ state.tokenize = tokenString2(ch);
59
+ return state.tokenize(stream, state);
60
+ }
61
+ if (ch == "'") {
62
+ state.tokenize = tokenString(ch);
63
+ return state.tokenize(stream, state);
64
+ }
65
+ if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
66
+ curPunc = ch;
67
+ return null;
68
+ }
69
+ if (/[\d']/.test(ch)) {
70
+ stream.eatWhile(/[\w\.']/);
71
+ return "number";
72
+ }
73
+ if (ch == "-") {
74
+ if (stream.eat("-")) {
75
+ stream.skipToEnd();
76
+ return "comment";
77
+ }
78
+ }
79
+ if (isOperatorChar.test(ch)) {
80
+ stream.eatWhile(isOperatorChar);
81
+ return "operator";
82
+ }
83
+ stream.eatWhile(/[\w\$_]/);
84
+ var cur = stream.current();
85
+ if (keywords.propertyIsEnumerable(cur.toLowerCase())) {
86
+ if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
87
+ return "keyword";
88
+ }
89
+ if (atoms.propertyIsEnumerable(cur)) return "atom";
90
+ return "variable";
91
+ }
92
+
93
+ function tokenString(quote) {
94
+ return function(stream, state) {
95
+ var escaped = false, next, end = false;
96
+ while ((next = stream.next()) != null) {
97
+ if (next == quote && !escaped) {end = true; break;}
98
+ escaped = !escaped && next == "--";
99
+ }
100
+ if (end || !(escaped || multiLineStrings))
101
+ state.tokenize = tokenBase;
102
+ return "string";
103
+ };
104
+ }
105
+ function tokenString2(quote) {
106
+ return function(stream, state) {
107
+ var escaped = false, next, end = false;
108
+ while ((next = stream.next()) != null) {
109
+ if (next == quote && !escaped) {end = true; break;}
110
+ escaped = !escaped && next == "--";
111
+ }
112
+ if (end || !(escaped || multiLineStrings))
113
+ state.tokenize = tokenBase;
114
+ return "string-2";
115
+ };
116
+ }
117
+
118
+ function Context(indented, column, type, align, prev) {
119
+ this.indented = indented;
120
+ this.column = column;
121
+ this.type = type;
122
+ this.align = align;
123
+ this.prev = prev;
124
+ }
125
+ function pushContext(state, col, type) {
126
+ return state.context = new Context(state.indented, col, type, null, state.context);
127
+ }
128
+ function popContext(state) {
129
+ var t = state.context.type;
130
+ if (t == ")" || t == "]" || t == "}")
131
+ state.indented = state.context.indented;
132
+ return state.context = state.context.prev;
133
+ }
134
+
135
+ // Interface
136
+ return {
137
+ startState: function(basecolumn) {
138
+ return {
139
+ tokenize: null,
140
+ context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
141
+ indented: 0,
142
+ startOfLine: true
143
+ };
144
+ },
145
+
146
+ token: function(stream, state) {
147
+ var ctx = state.context;
148
+ if (stream.sol()) {
149
+ if (ctx.align == null) ctx.align = false;
150
+ state.indented = stream.indentation();
151
+ state.startOfLine = true;
152
+ }
153
+ if (stream.eatSpace()) return null;
154
+ curPunc = null;
155
+ var style = (state.tokenize || tokenBase)(stream, state);
156
+ if (style == "comment" || style == "meta") return style;
157
+ if (ctx.align == null) ctx.align = true;
158
+
159
+ if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state);
160
+ else if (curPunc == "{") pushContext(state, stream.column(), "}");
161
+ else if (curPunc == "[") pushContext(state, stream.column(), "]");
162
+ else if (curPunc == "(") pushContext(state, stream.column(), ")");
163
+ else if (curPunc == "}") {
164
+ while (ctx.type == "statement") ctx = popContext(state);
165
+ if (ctx.type == "}") ctx = popContext(state);
166
+ while (ctx.type == "statement") ctx = popContext(state);
167
+ }
168
+ else if (curPunc == ctx.type) popContext(state);
169
+ else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement"))
170
+ pushContext(state, stream.column(), "statement");
171
+ state.startOfLine = false;
172
+ return style;
173
+ },
174
+
175
+ indent: function(state, textAfter) {
176
+ if (state.tokenize != tokenBase && state.tokenize != null) return 0;
177
+ var firstChar = textAfter && textAfter.charAt(0), ctx = state.context, closing = firstChar == ctx.type;
178
+ if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit);
179
+ else if (ctx.align) return ctx.column + (closing ? 0 : 1);
180
+ else return ctx.indented + (closing ? 0 : indentUnit);
181
+ },
182
+
183
+ electricChars: "{}"
184
+ };
185
+ });
186
+
187
+ CodeMirror.defineMIME("text/x-vhdl", "vhdl");
188
+
189
+ });
@@ -109,6 +109,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
109
109
  return null;
110
110
  }
111
111
  }
112
+ inText.isInText = true;
112
113
 
113
114
  function inTag(stream, state) {
114
115
  var ch = stream.next();