codemirror-rails 2.36 → 3.00
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/codemirror/rails/version.rb +2 -2
- data/vendor/assets/javascripts/codemirror.js +3727 -2345
- data/vendor/assets/javascripts/codemirror/keymaps/vim.js +2226 -825
- data/vendor/assets/javascripts/codemirror/modes/clike.js +23 -8
- data/vendor/assets/javascripts/codemirror/modes/clojure.js +4 -4
- data/vendor/assets/javascripts/codemirror/modes/coffeescript.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/commonlisp.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/css.js +20 -3
- data/vendor/assets/javascripts/codemirror/modes/diff.js +2 -2
- data/vendor/assets/javascripts/codemirror/modes/ecl.js +192 -203
- data/vendor/assets/javascripts/codemirror/modes/erlang.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/gfm.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/go.js +1 -6
- data/vendor/assets/javascripts/codemirror/modes/groovy.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/haskell.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/haxe.js +13 -13
- data/vendor/assets/javascripts/codemirror/modes/htmlembedded.js +3 -3
- data/vendor/assets/javascripts/codemirror/modes/htmlmixed.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/http.js +98 -0
- data/vendor/assets/javascripts/codemirror/modes/javascript.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/jinja2.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/markdown.js +7 -14
- data/vendor/assets/javascripts/codemirror/modes/mysql.js +2 -2
- data/vendor/assets/javascripts/codemirror/modes/ntriples.js +0 -2
- data/vendor/assets/javascripts/codemirror/modes/ocaml.js +1 -2
- data/vendor/assets/javascripts/codemirror/modes/pascal.js +2 -2
- data/vendor/assets/javascripts/codemirror/modes/perl.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/php.js +5 -4
- data/vendor/assets/javascripts/codemirror/modes/pig.js +3 -4
- data/vendor/assets/javascripts/codemirror/modes/plsql.js +3 -4
- data/vendor/assets/javascripts/codemirror/modes/python.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/r.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/rpm-changes.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/rpm-spec.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/rst.js +1 -13
- data/vendor/assets/javascripts/codemirror/modes/ruby.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/rust.js +3 -3
- data/vendor/assets/javascripts/codemirror/modes/scheme.js +4 -4
- data/vendor/assets/javascripts/codemirror/modes/shell.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/sieve.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/smalltalk.js +2 -2
- data/vendor/assets/javascripts/codemirror/modes/smarty.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/sparql.js +2 -2
- data/vendor/assets/javascripts/codemirror/modes/stex.js +6 -13
- data/vendor/assets/javascripts/codemirror/modes/tiddlywiki.js +6 -37
- data/vendor/assets/javascripts/codemirror/modes/tiki.js +3 -3
- data/vendor/assets/javascripts/codemirror/modes/vb.js +3 -3
- data/vendor/assets/javascripts/codemirror/modes/velocity.js +2 -4
- data/vendor/assets/javascripts/codemirror/modes/verilog.js +182 -194
- data/vendor/assets/javascripts/codemirror/modes/xml.js +9 -5
- data/vendor/assets/javascripts/codemirror/modes/xquery.js +3 -4
- data/vendor/assets/javascripts/codemirror/utils/closetag.js +85 -164
- data/vendor/assets/javascripts/codemirror/utils/colorize.js +29 -0
- data/vendor/assets/javascripts/codemirror/utils/continuecomment.js +1 -1
- data/vendor/assets/javascripts/codemirror/utils/continuelist.js +28 -0
- data/vendor/assets/javascripts/codemirror/utils/dialog.js +21 -16
- data/vendor/assets/javascripts/codemirror/utils/foldcode.js +59 -73
- data/vendor/assets/javascripts/codemirror/utils/formatting.js +43 -131
- data/vendor/assets/javascripts/codemirror/utils/javascript-hint.js +22 -19
- data/vendor/assets/javascripts/codemirror/utils/match-highlighter.js +5 -3
- data/vendor/assets/javascripts/codemirror/utils/matchbrackets.js +63 -0
- data/vendor/assets/javascripts/codemirror/utils/multiplex.js +18 -0
- data/vendor/assets/javascripts/codemirror/utils/pig-hint.js +3 -9
- data/vendor/assets/javascripts/codemirror/utils/runmode.js +19 -20
- data/vendor/assets/javascripts/codemirror/utils/search.js +6 -5
- data/vendor/assets/javascripts/codemirror/utils/searchcursor.js +1 -1
- data/vendor/assets/javascripts/codemirror/utils/simple-hint.js +10 -10
- data/vendor/assets/javascripts/codemirror/utils/xml-hint.js +2 -2
- data/vendor/assets/stylesheets/codemirror.css +169 -104
- data/vendor/assets/stylesheets/codemirror/themes/ambiance-mobile.css +1 -1
- data/vendor/assets/stylesheets/codemirror/themes/ambiance.css +7 -12
- data/vendor/assets/stylesheets/codemirror/themes/blackboard.css +3 -3
- data/vendor/assets/stylesheets/codemirror/themes/cobalt.css +3 -3
- data/vendor/assets/stylesheets/codemirror/themes/erlang-dark.css +3 -3
- data/vendor/assets/stylesheets/codemirror/themes/lesser-dark.css +4 -4
- data/vendor/assets/stylesheets/codemirror/themes/monokai.css +3 -3
- data/vendor/assets/stylesheets/codemirror/themes/night.css +3 -3
- data/vendor/assets/stylesheets/codemirror/themes/rubyblue.css +3 -3
- data/vendor/assets/stylesheets/codemirror/themes/solarized.css +207 -0
- data/vendor/assets/stylesheets/codemirror/themes/twilight.css +4 -4
- data/vendor/assets/stylesheets/codemirror/themes/vibrant-ink.css +3 -3
- data/vendor/assets/stylesheets/codemirror/themes/xq-dark.css +3 -3
- data/vendor/assets/stylesheets/codemirror/utils/dialog.css +12 -7
- metadata +16 -11
@@ -1,4 +1,4 @@
|
|
1
|
-
CodeMirror.defineMode("changes", function(
|
1
|
+
CodeMirror.defineMode("changes", function() {
|
2
2
|
var headerSeperator = /^-+$/;
|
3
3
|
var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /;
|
4
4
|
var simpleEmail = /^[\w+.-]+@[\w.-]+/;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// Quick and dirty spec file highlighting
|
2
2
|
|
3
|
-
CodeMirror.defineMode("spec", function(
|
3
|
+
CodeMirror.defineMode("spec", function() {
|
4
4
|
var arch = /^(i386|i586|i686|x86_64|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/;
|
5
5
|
|
6
6
|
var preamble = /^(Name|Version|Release|License|Summary|Url|Group|Source|BuildArch|BuildRequires|BuildRoot|AutoReqProv|Provides|Requires(\(\w+\))?|Obsoletes|Conflicts|Recommends|Source\d*|Patch\d*|ExclusiveArch|NoSource|Supplements):/;
|
@@ -18,17 +18,7 @@ CodeMirror.defineMode('rst', function(config, options) {
|
|
18
18
|
}
|
19
19
|
|
20
20
|
function hasMode(mode) {
|
21
|
-
|
22
|
-
var modes = CodeMirror.listModes();
|
23
|
-
|
24
|
-
for (var i in modes) {
|
25
|
-
if (modes[i] == mode) {
|
26
|
-
return true;
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
30
|
-
|
31
|
-
return false;
|
21
|
+
return mode && CodeMirror.modes.hasOwnProperty(mode);
|
32
22
|
}
|
33
23
|
|
34
24
|
function getMode(mode) {
|
@@ -53,8 +43,6 @@ CodeMirror.defineMode('rst', function(config, options) {
|
|
53
43
|
var reVerbatimMarker = /^::\s*$/;
|
54
44
|
var rePreInline = /^[-\s"([{</:]/;
|
55
45
|
var rePostInline = /^[-\s`'")\]}>/:.,;!?\\_]/;
|
56
|
-
var reEnumeratedList = /^\s*((\d+|[A-Za-z#])[.)]|\((\d+|[A-Z-a-z#])\))\s/;
|
57
|
-
var reBulletedList = /^\s*[-\+\*]\s/;
|
58
46
|
var reExamples = /^\s+(>>>|In \[\d+\]:)\s/;
|
59
47
|
|
60
48
|
function normal(stream, state) {
|
@@ -209,7 +209,7 @@ CodeMirror.defineMode("rust", function() {
|
|
209
209
|
if (type == "(" || type == "[") return matchBrackets(type, expression);
|
210
210
|
return pass();
|
211
211
|
}
|
212
|
-
function maybeprop(
|
212
|
+
function maybeprop() {
|
213
213
|
if (content.match(/^\w+$/)) {cx.marked = "variable"; return cont(maybeop);}
|
214
214
|
return pass(expression);
|
215
215
|
}
|
@@ -304,7 +304,7 @@ CodeMirror.defineMode("rust", function() {
|
|
304
304
|
if (type == "{") return cont(pushlex("}"), block, poplex);
|
305
305
|
return pass();
|
306
306
|
}
|
307
|
-
function typarams(
|
307
|
+
function typarams() {
|
308
308
|
if (content == ">") return cont();
|
309
309
|
if (content == ",") return cont(typarams);
|
310
310
|
if (content == ":") return cont(rtype, typarams);
|
@@ -324,7 +324,7 @@ CodeMirror.defineMode("rust", function() {
|
|
324
324
|
if (type == "{") return cont(pushlex("{"), record_of(rtype), poplex);
|
325
325
|
return matchBrackets(type, rtype);
|
326
326
|
}
|
327
|
-
function rtypemaybeparam(
|
327
|
+
function rtypemaybeparam() {
|
328
328
|
if (content == "<") return cont(typarams);
|
329
329
|
return pass();
|
330
330
|
}
|
@@ -1,10 +1,10 @@
|
|
1
1
|
/**
|
2
2
|
* Author: Koh Zi Han, based on implementation by Koh Zi Chun
|
3
3
|
*/
|
4
|
-
CodeMirror.defineMode("scheme", function (
|
4
|
+
CodeMirror.defineMode("scheme", function () {
|
5
5
|
var BUILTIN = "builtin", COMMENT = "comment", STRING = "string",
|
6
|
-
ATOM = "atom", NUMBER = "number", BRACKET = "bracket"
|
7
|
-
var INDENT_WORD_SKIP = 2
|
6
|
+
ATOM = "atom", NUMBER = "number", BRACKET = "bracket";
|
7
|
+
var INDENT_WORD_SKIP = 2;
|
8
8
|
|
9
9
|
function makeKeywords(str) {
|
10
10
|
var obj = {}, words = str.split(" ");
|
@@ -220,7 +220,7 @@ CodeMirror.defineMode("scheme", function (config, mode) {
|
|
220
220
|
return (typeof state.sExprComment == "number") ? COMMENT : returnType;
|
221
221
|
},
|
222
222
|
|
223
|
-
indent: function (state
|
223
|
+
indent: function (state) {
|
224
224
|
if (state.indentStack == null) return state.indentation;
|
225
225
|
return state.indentStack.indent;
|
226
226
|
}
|
@@ -145,7 +145,7 @@ CodeMirror.defineMode("sieve", function(config) {
|
|
145
145
|
return (state.tokenize || tokenBase)(stream, state);;
|
146
146
|
},
|
147
147
|
|
148
|
-
indent: function(state,
|
148
|
+
indent: function(state, _textAfter) {
|
149
149
|
return state.baseIndent + state._indent * indentUnit;
|
150
150
|
},
|
151
151
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
CodeMirror.defineMode('smalltalk', function(config
|
1
|
+
CodeMirror.defineMode('smalltalk', function(config) {
|
2
2
|
|
3
3
|
var specialChars = /[+\-/\\*~<>=@%|&?!.:;^]/;
|
4
4
|
var keywords = /true|false|nil|self|super|thisContext/;
|
@@ -86,7 +86,7 @@ CodeMirror.defineMode('smalltalk', function(config, modeConfig) {
|
|
86
86
|
return new Token('string', stream.eat('\'') ? context.parent : context, false);
|
87
87
|
};
|
88
88
|
|
89
|
-
var nextTemporaries = function(stream, context
|
89
|
+
var nextTemporaries = function(stream, context) {
|
90
90
|
var token = new Token(null, context, false);
|
91
91
|
var aChar = stream.next();
|
92
92
|
|
@@ -49,7 +49,7 @@ CodeMirror.defineMode("sparql", function(config) {
|
|
49
49
|
stream.eatWhile(/[\w\d_\-]/);
|
50
50
|
return "atom";
|
51
51
|
}
|
52
|
-
var word = stream.current()
|
52
|
+
var word = stream.current();
|
53
53
|
if (ops.test(word))
|
54
54
|
return null;
|
55
55
|
else if (keywords.test(word))
|
@@ -82,7 +82,7 @@ CodeMirror.defineMode("sparql", function(config) {
|
|
82
82
|
}
|
83
83
|
|
84
84
|
return {
|
85
|
-
startState: function(
|
85
|
+
startState: function() {
|
86
86
|
return {tokenize: tokenBase,
|
87
87
|
context: null,
|
88
88
|
indent: 0,
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* Licence: MIT
|
4
4
|
*/
|
5
5
|
|
6
|
-
CodeMirror.defineMode("stex", function(
|
6
|
+
CodeMirror.defineMode("stex", function()
|
7
7
|
{
|
8
8
|
function pushCommand(state, command) {
|
9
9
|
state.cmdState.push(command);
|
@@ -42,18 +42,17 @@ CodeMirror.defineMode("stex", function(cmCfg, modeCfg)
|
|
42
42
|
this.styles = styles;
|
43
43
|
this.brackets = brackets;
|
44
44
|
|
45
|
-
this.styleIdentifier = function(
|
45
|
+
this.styleIdentifier = function() {
|
46
46
|
if (this.bracketNo<=this.styles.length)
|
47
47
|
return this.styles[this.bracketNo-1];
|
48
48
|
else
|
49
49
|
return null;
|
50
50
|
};
|
51
|
-
this.openBracket = function(
|
51
|
+
this.openBracket = function() {
|
52
52
|
this.bracketNo++;
|
53
53
|
return "bracket";
|
54
54
|
};
|
55
|
-
this.closeBracket = function(
|
56
|
-
};
|
55
|
+
this.closeBracket = function() {};
|
57
56
|
};
|
58
57
|
}
|
59
58
|
|
@@ -69,12 +68,7 @@ CodeMirror.defineMode("stex", function(cmCfg, modeCfg)
|
|
69
68
|
this.name="DEFAULT";
|
70
69
|
this.style="tag";
|
71
70
|
|
72
|
-
this.styleIdentifier = function(
|
73
|
-
};
|
74
|
-
this.openBracket = function(content) {
|
75
|
-
};
|
76
|
-
this.closeBracket = function(content) {
|
77
|
-
};
|
71
|
+
this.styleIdentifier = this.openBracket = this.closeBracket = function() {};
|
78
72
|
};
|
79
73
|
|
80
74
|
function setState(state, f) {
|
@@ -149,7 +143,7 @@ CodeMirror.defineMode("stex", function(cmCfg, modeCfg)
|
|
149
143
|
var ch = source.peek();
|
150
144
|
if (ch == '{' || ch == '[') {
|
151
145
|
var lastPlug = peekCommand(state);
|
152
|
-
|
146
|
+
lastPlug.openBracket(ch);
|
153
147
|
source.eat(ch);
|
154
148
|
setState(state, normal);
|
155
149
|
return "bracket";
|
@@ -172,7 +166,6 @@ CodeMirror.defineMode("stex", function(cmCfg, modeCfg)
|
|
172
166
|
|
173
167
|
token: function(stream, state) {
|
174
168
|
var t = state.f(stream, state);
|
175
|
-
var w = stream.current();
|
176
169
|
return t;
|
177
170
|
}
|
178
171
|
};
|
@@ -14,19 +14,9 @@
|
|
14
14
|
CoreVersion parameter is needed for TiddlyWiki only!
|
15
15
|
***/
|
16
16
|
//{{{
|
17
|
-
CodeMirror.defineMode("tiddlywiki", function (
|
18
|
-
var indentUnit = config.indentUnit;
|
19
|
-
|
17
|
+
CodeMirror.defineMode("tiddlywiki", function () {
|
20
18
|
// Tokenizer
|
21
|
-
var textwords =
|
22
|
-
function kw(type) {
|
23
|
-
return {
|
24
|
-
type: type,
|
25
|
-
style: "text"
|
26
|
-
};
|
27
|
-
}
|
28
|
-
return {};
|
29
|
-
}();
|
19
|
+
var textwords = {};
|
30
20
|
|
31
21
|
var keywords = function () {
|
32
22
|
function kw(type) {
|
@@ -60,7 +50,6 @@ CodeMirror.defineMode("tiddlywiki", function (config, parserConfig) {
|
|
60
50
|
reCodeBlockStart = /^\{\{\{$/, // {{{ TW text div block start
|
61
51
|
reCodeBlockStop = /^\}\}\}$/, // }}} TW text stop
|
62
52
|
|
63
|
-
reCodeStart = /\{\{\{/, // {{{ code span start
|
64
53
|
reUntilCodeStop = /.*?\}\}\}/;
|
65
54
|
|
66
55
|
function chain(stream, state, f) {
|
@@ -68,17 +57,6 @@ CodeMirror.defineMode("tiddlywiki", function (config, parserConfig) {
|
|
68
57
|
return f(stream, state);
|
69
58
|
}
|
70
59
|
|
71
|
-
// used for strings
|
72
|
-
function nextUntilUnescaped(stream, end) {
|
73
|
-
var escaped = false,
|
74
|
-
next;
|
75
|
-
while ((next = stream.next()) != null) {
|
76
|
-
if (next == end && !escaped) return false;
|
77
|
-
escaped = !escaped && next == "\\";
|
78
|
-
}
|
79
|
-
return escaped;
|
80
|
-
}
|
81
|
-
|
82
60
|
// Used as scratch variables to communicate multiple values without
|
83
61
|
// consing up tons of objects.
|
84
62
|
var type, content;
|
@@ -90,8 +68,7 @@ CodeMirror.defineMode("tiddlywiki", function (config, parserConfig) {
|
|
90
68
|
}
|
91
69
|
|
92
70
|
function jsTokenBase(stream, state) {
|
93
|
-
var sol = stream.sol(),
|
94
|
-
ch, tch;
|
71
|
+
var sol = stream.sol(), ch;
|
95
72
|
|
96
73
|
state.block = false; // indicates the start of a code block.
|
97
74
|
|
@@ -226,13 +203,6 @@ CodeMirror.defineMode("tiddlywiki", function (config, parserConfig) {
|
|
226
203
|
|
227
204
|
} // jsTokenBase()
|
228
205
|
|
229
|
-
function twTokenString(quote) {
|
230
|
-
return function (stream, state) {
|
231
|
-
if (!nextUntilUnescaped(stream, quote)) state.tokenize = jsTokenBase;
|
232
|
-
return ret("string", "string");
|
233
|
-
};
|
234
|
-
}
|
235
|
-
|
236
206
|
// tw invisible comment
|
237
207
|
function twTokenComment(stream, state) {
|
238
208
|
var maybeEnd = false,
|
@@ -314,8 +284,7 @@ CodeMirror.defineMode("tiddlywiki", function (config, parserConfig) {
|
|
314
284
|
// tw strike through text looks ugly
|
315
285
|
// change CSS if needed
|
316
286
|
function twTokenStrike(stream, state) {
|
317
|
-
var maybeEnd = false,
|
318
|
-
ch, nr;
|
287
|
+
var maybeEnd = false, ch;
|
319
288
|
|
320
289
|
while (ch = stream.next()) {
|
321
290
|
if (ch == "-" && maybeEnd) {
|
@@ -329,7 +298,7 @@ CodeMirror.defineMode("tiddlywiki", function (config, parserConfig) {
|
|
329
298
|
|
330
299
|
// macro
|
331
300
|
function twTokenMacro(stream, state) {
|
332
|
-
var ch,
|
301
|
+
var ch, word, known;
|
333
302
|
|
334
303
|
if (stream.current() == '<<') {
|
335
304
|
return ret('brace', 'macro');
|
@@ -362,7 +331,7 @@ CodeMirror.defineMode("tiddlywiki", function (config, parserConfig) {
|
|
362
331
|
|
363
332
|
// Interface
|
364
333
|
return {
|
365
|
-
startState: function (
|
334
|
+
startState: function () {
|
366
335
|
return {
|
367
336
|
tokenize: jsTokenBase,
|
368
337
|
indented: 0,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
CodeMirror.defineMode('tiki', function(config
|
1
|
+
CodeMirror.defineMode('tiki', function(config) {
|
2
2
|
function inBlock(style, terminator, returnTokenizer) {
|
3
3
|
return function(stream, state) {
|
4
4
|
while (!stream.eol()) {
|
@@ -15,7 +15,7 @@ CodeMirror.defineMode('tiki', function(config, parserConfig) {
|
|
15
15
|
};
|
16
16
|
}
|
17
17
|
|
18
|
-
function inLine(style
|
18
|
+
function inLine(style) {
|
19
19
|
return function(stream, state) {
|
20
20
|
while(!stream.eol()) {
|
21
21
|
stream.next();
|
@@ -37,7 +37,7 @@ CodeMirror.defineMode('tiki', function(config, parserConfig) {
|
|
37
37
|
//non start of line
|
38
38
|
switch (ch) { //switch is generally much faster than if, so it is used here
|
39
39
|
case "{": //plugin
|
40
|
-
|
40
|
+
stream.eat("/");
|
41
41
|
stream.eatSpace();
|
42
42
|
var tagName = "";
|
43
43
|
var c;
|
@@ -37,11 +37,11 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
37
37
|
|
38
38
|
|
39
39
|
|
40
|
-
function indent(
|
40
|
+
function indent(_stream, state) {
|
41
41
|
state.currentIndent++;
|
42
42
|
}
|
43
43
|
|
44
|
-
function dedent(
|
44
|
+
function dedent(_stream, state) {
|
45
45
|
state.currentIndent--;
|
46
46
|
}
|
47
47
|
// tokenizers
|
@@ -218,7 +218,7 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
218
218
|
|
219
219
|
var external = {
|
220
220
|
electricChars:"dDpPtTfFeE ",
|
221
|
-
startState: function(
|
221
|
+
startState: function() {
|
222
222
|
return {
|
223
223
|
tokenize: tokenBase,
|
224
224
|
lastToken: null,
|
@@ -1,18 +1,16 @@
|
|
1
|
-
CodeMirror.defineMode("velocity", function(
|
1
|
+
CodeMirror.defineMode("velocity", function() {
|
2
2
|
function parseWords(str) {
|
3
3
|
var obj = {}, words = str.split(" ");
|
4
4
|
for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
|
5
5
|
return obj;
|
6
6
|
}
|
7
7
|
|
8
|
-
var indentUnit = config.indentUnit;
|
9
8
|
var keywords = parseWords("#end #else #break #stop #[[ #]] " +
|
10
9
|
"#{end} #{else} #{break} #{stop}");
|
11
10
|
var functions = parseWords("#if #elseif #foreach #set #include #parse #macro #define #evaluate " +
|
12
11
|
"#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}");
|
13
12
|
var specials = parseWords("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent $velocityCount");
|
14
13
|
var isOperatorChar = /[+\-*&%=<>!?:\/|]/;
|
15
|
-
var multiLineStrings =true;
|
16
14
|
|
17
15
|
function chain(stream, state, f) {
|
18
16
|
state.tokenize = f;
|
@@ -128,7 +126,7 @@ CodeMirror.defineMode("velocity", function(config) {
|
|
128
126
|
// Interface
|
129
127
|
|
130
128
|
return {
|
131
|
-
startState: function(
|
129
|
+
startState: function() {
|
132
130
|
return {
|
133
131
|
tokenize: tokenBase,
|
134
132
|
beforeParams: false,
|
@@ -1,194 +1,182 @@
|
|
1
|
-
CodeMirror.defineMode("verilog", function(config, parserConfig) {
|
2
|
-
var indentUnit = config.indentUnit,
|
3
|
-
keywords = parserConfig.keywords || {},
|
4
|
-
blockKeywords = parserConfig.blockKeywords || {},
|
5
|
-
atoms = parserConfig.atoms || {},
|
6
|
-
hooks = parserConfig.hooks || {},
|
7
|
-
multiLineStrings = parserConfig.multiLineStrings;
|
8
|
-
var isOperatorChar = /[&|~><!\)\(*#%@+\/=?\:;}{,\.\^\-\[\]]/;
|
9
|
-
|
10
|
-
var curPunc;
|
11
|
-
|
12
|
-
function tokenBase(stream, state) {
|
13
|
-
var ch = stream.next();
|
14
|
-
if (hooks[ch]) {
|
15
|
-
var result = hooks[ch](stream, state);
|
16
|
-
if (result !== false) return result;
|
17
|
-
}
|
18
|
-
if (ch == '"') {
|
19
|
-
state.tokenize = tokenString(ch);
|
20
|
-
return state.tokenize(stream, state);
|
21
|
-
}
|
22
|
-
if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
|
23
|
-
curPunc = ch;
|
24
|
-
return null;
|
25
|
-
}
|
26
|
-
if (/[\d']/.test(ch)) {
|
27
|
-
stream.eatWhile(/[\w\.']/);
|
28
|
-
return "number";
|
29
|
-
}
|
30
|
-
if (ch == "/") {
|
31
|
-
if (stream.eat("*")) {
|
32
|
-
state.tokenize = tokenComment;
|
33
|
-
return tokenComment(stream, state);
|
34
|
-
}
|
35
|
-
if (stream.eat("/")) {
|
36
|
-
stream.skipToEnd();
|
37
|
-
return "comment";
|
38
|
-
}
|
39
|
-
}
|
40
|
-
if (isOperatorChar.test(ch)) {
|
41
|
-
stream.eatWhile(isOperatorChar);
|
42
|
-
return "operator";
|
43
|
-
}
|
44
|
-
stream.eatWhile(/[\w\$_]/);
|
45
|
-
var cur = stream.current();
|
46
|
-
if (keywords.propertyIsEnumerable(cur)) {
|
47
|
-
if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
|
48
|
-
return "keyword";
|
49
|
-
}
|
50
|
-
if (atoms.propertyIsEnumerable(cur)) return "atom";
|
51
|
-
return "variable";
|
52
|
-
}
|
53
|
-
|
54
|
-
function tokenString(quote) {
|
55
|
-
return function(stream, state) {
|
56
|
-
var escaped = false, next, end = false;
|
57
|
-
while ((next = stream.next()) != null) {
|
58
|
-
if (next == quote && !escaped) {end = true; break;}
|
59
|
-
escaped = !escaped && next == "\\";
|
60
|
-
}
|
61
|
-
if (end || !(escaped || multiLineStrings))
|
62
|
-
state.tokenize = tokenBase;
|
63
|
-
return "string";
|
64
|
-
};
|
65
|
-
}
|
66
|
-
|
67
|
-
function tokenComment(stream, state) {
|
68
|
-
var maybeEnd = false, ch;
|
69
|
-
while (ch = stream.next()) {
|
70
|
-
if (ch == "/" && maybeEnd) {
|
71
|
-
state.tokenize = tokenBase;
|
72
|
-
break;
|
73
|
-
}
|
74
|
-
maybeEnd = (ch == "*");
|
75
|
-
}
|
76
|
-
return "comment";
|
77
|
-
}
|
78
|
-
|
79
|
-
function Context(indented, column, type, align, prev) {
|
80
|
-
this.indented = indented;
|
81
|
-
this.column = column;
|
82
|
-
this.type = type;
|
83
|
-
this.align = align;
|
84
|
-
this.prev = prev;
|
85
|
-
}
|
86
|
-
function pushContext(state, col, type) {
|
87
|
-
return state.context = new Context(state.indented, col, type, null, state.context);
|
88
|
-
}
|
89
|
-
function popContext(state) {
|
90
|
-
var t = state.context.type;
|
91
|
-
if (t == ")" || t == "]" || t == "}")
|
92
|
-
state.indented = state.context.indented;
|
93
|
-
return state.context = state.context.prev;
|
94
|
-
}
|
95
|
-
|
96
|
-
// Interface
|
97
|
-
|
98
|
-
return {
|
99
|
-
startState: function(basecolumn) {
|
100
|
-
return {
|
101
|
-
tokenize: null,
|
102
|
-
context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
|
103
|
-
indented: 0,
|
104
|
-
startOfLine: true
|
105
|
-
};
|
106
|
-
},
|
107
|
-
|
108
|
-
token: function(stream, state) {
|
109
|
-
var ctx = state.context;
|
110
|
-
if (stream.sol()) {
|
111
|
-
if (ctx.align == null) ctx.align = false;
|
112
|
-
state.indented = stream.indentation();
|
113
|
-
state.startOfLine = true;
|
114
|
-
}
|
115
|
-
if (stream.eatSpace()) return null;
|
116
|
-
curPunc = null;
|
117
|
-
var style = (state.tokenize || tokenBase)(stream, state);
|
118
|
-
if (style == "comment" || style == "meta") return style;
|
119
|
-
if (ctx.align == null) ctx.align = true;
|
120
|
-
|
121
|
-
if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state);
|
122
|
-
else if (curPunc == "{") pushContext(state, stream.column(), "}");
|
123
|
-
else if (curPunc == "[") pushContext(state, stream.column(), "]");
|
124
|
-
else if (curPunc == "(") pushContext(state, stream.column(), ")");
|
125
|
-
else if (curPunc == "}") {
|
126
|
-
while (ctx.type == "statement") ctx = popContext(state);
|
127
|
-
if (ctx.type == "}") ctx = popContext(state);
|
128
|
-
while (ctx.type == "statement") ctx = popContext(state);
|
129
|
-
}
|
130
|
-
else if (curPunc == ctx.type) popContext(state);
|
131
|
-
else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement"))
|
132
|
-
pushContext(state, stream.column(), "statement");
|
133
|
-
state.startOfLine = false;
|
134
|
-
return style;
|
135
|
-
},
|
136
|
-
|
137
|
-
indent: function(state, textAfter) {
|
138
|
-
if (state.tokenize != tokenBase && state.tokenize != null) return 0;
|
139
|
-
var firstChar = textAfter && textAfter.charAt(0), ctx = state.context, closing = firstChar == ctx.type;
|
140
|
-
if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit);
|
141
|
-
else if (ctx.align) return ctx.column + (closing ? 0 : 1);
|
142
|
-
else return ctx.indented + (closing ? 0 : indentUnit);
|
143
|
-
},
|
144
|
-
|
145
|
-
electricChars: "{}"
|
146
|
-
};
|
147
|
-
});
|
148
|
-
|
149
|
-
(function() {
|
150
|
-
function words(str) {
|
151
|
-
var obj = {}, words = str.split(" ");
|
152
|
-
for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
|
153
|
-
return obj;
|
154
|
-
}
|
155
|
-
|
156
|
-
var verilogKeywords = "always and assign automatic begin buf bufif0 bufif1 case casex casez cell cmos config " +
|
157
|
-
"deassign default defparam design disable edge else end endcase endconfig endfunction endgenerate endmodule " +
|
158
|
-
"endprimitive endspecify endtable endtask event for force forever fork function generate genvar highz0 " +
|
159
|
-
"highz1 if ifnone incdir include initial inout input instance integer join large liblist library localparam " +
|
160
|
-
"macromodule medium module nand negedge nmos nor noshowcancelled not notif0 notif1 or output parameter pmos " +
|
161
|
-
"posedge primitive pull0 pull1 pulldown pullup pulsestyle_onevent pulsestyle_ondetect rcmos real realtime " +
|
162
|
-
"reg release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared showcancelled signed small specify specparam " +
|
163
|
-
"strong0 strong1 supply0 supply1 table task time tran tranif0 tranif1 tri tri0 tri1 triand trior trireg " +
|
164
|
-
"unsigned use vectored wait wand weak0 weak1 while wire wor xnor xor";
|
165
|
-
|
166
|
-
var verilogBlockKeywords = "begin bufif0 bufif1 case casex casez config else end endcase endconfig endfunction " +
|
167
|
-
"endgenerate endmodule endprimitive endspecify endtable endtask for forever function generate if ifnone " +
|
168
|
-
"macromodule module primitive repeat specify table task while";
|
169
|
-
|
170
|
-
function metaHook(stream
|
171
|
-
stream.eatWhile(/[\w\$_]/);
|
172
|
-
return "meta";
|
173
|
-
}
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
}
|
184
|
-
return "string";
|
185
|
-
}
|
186
|
-
|
187
|
-
CodeMirror.defineMIME("text/x-verilog", {
|
188
|
-
name: "verilog",
|
189
|
-
keywords: words(verilogKeywords),
|
190
|
-
blockKeywords: words(verilogBlockKeywords),
|
191
|
-
atoms: words("null"),
|
192
|
-
hooks: {"`": metaHook, "$": metaHook}
|
193
|
-
});
|
194
|
-
}());
|
1
|
+
CodeMirror.defineMode("verilog", function(config, parserConfig) {
|
2
|
+
var indentUnit = config.indentUnit,
|
3
|
+
keywords = parserConfig.keywords || {},
|
4
|
+
blockKeywords = parserConfig.blockKeywords || {},
|
5
|
+
atoms = parserConfig.atoms || {},
|
6
|
+
hooks = parserConfig.hooks || {},
|
7
|
+
multiLineStrings = parserConfig.multiLineStrings;
|
8
|
+
var isOperatorChar = /[&|~><!\)\(*#%@+\/=?\:;}{,\.\^\-\[\]]/;
|
9
|
+
|
10
|
+
var curPunc;
|
11
|
+
|
12
|
+
function tokenBase(stream, state) {
|
13
|
+
var ch = stream.next();
|
14
|
+
if (hooks[ch]) {
|
15
|
+
var result = hooks[ch](stream, state);
|
16
|
+
if (result !== false) return result;
|
17
|
+
}
|
18
|
+
if (ch == '"') {
|
19
|
+
state.tokenize = tokenString(ch);
|
20
|
+
return state.tokenize(stream, state);
|
21
|
+
}
|
22
|
+
if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
|
23
|
+
curPunc = ch;
|
24
|
+
return null;
|
25
|
+
}
|
26
|
+
if (/[\d']/.test(ch)) {
|
27
|
+
stream.eatWhile(/[\w\.']/);
|
28
|
+
return "number";
|
29
|
+
}
|
30
|
+
if (ch == "/") {
|
31
|
+
if (stream.eat("*")) {
|
32
|
+
state.tokenize = tokenComment;
|
33
|
+
return tokenComment(stream, state);
|
34
|
+
}
|
35
|
+
if (stream.eat("/")) {
|
36
|
+
stream.skipToEnd();
|
37
|
+
return "comment";
|
38
|
+
}
|
39
|
+
}
|
40
|
+
if (isOperatorChar.test(ch)) {
|
41
|
+
stream.eatWhile(isOperatorChar);
|
42
|
+
return "operator";
|
43
|
+
}
|
44
|
+
stream.eatWhile(/[\w\$_]/);
|
45
|
+
var cur = stream.current();
|
46
|
+
if (keywords.propertyIsEnumerable(cur)) {
|
47
|
+
if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement";
|
48
|
+
return "keyword";
|
49
|
+
}
|
50
|
+
if (atoms.propertyIsEnumerable(cur)) return "atom";
|
51
|
+
return "variable";
|
52
|
+
}
|
53
|
+
|
54
|
+
function tokenString(quote) {
|
55
|
+
return function(stream, state) {
|
56
|
+
var escaped = false, next, end = false;
|
57
|
+
while ((next = stream.next()) != null) {
|
58
|
+
if (next == quote && !escaped) {end = true; break;}
|
59
|
+
escaped = !escaped && next == "\\";
|
60
|
+
}
|
61
|
+
if (end || !(escaped || multiLineStrings))
|
62
|
+
state.tokenize = tokenBase;
|
63
|
+
return "string";
|
64
|
+
};
|
65
|
+
}
|
66
|
+
|
67
|
+
function tokenComment(stream, state) {
|
68
|
+
var maybeEnd = false, ch;
|
69
|
+
while (ch = stream.next()) {
|
70
|
+
if (ch == "/" && maybeEnd) {
|
71
|
+
state.tokenize = tokenBase;
|
72
|
+
break;
|
73
|
+
}
|
74
|
+
maybeEnd = (ch == "*");
|
75
|
+
}
|
76
|
+
return "comment";
|
77
|
+
}
|
78
|
+
|
79
|
+
function Context(indented, column, type, align, prev) {
|
80
|
+
this.indented = indented;
|
81
|
+
this.column = column;
|
82
|
+
this.type = type;
|
83
|
+
this.align = align;
|
84
|
+
this.prev = prev;
|
85
|
+
}
|
86
|
+
function pushContext(state, col, type) {
|
87
|
+
return state.context = new Context(state.indented, col, type, null, state.context);
|
88
|
+
}
|
89
|
+
function popContext(state) {
|
90
|
+
var t = state.context.type;
|
91
|
+
if (t == ")" || t == "]" || t == "}")
|
92
|
+
state.indented = state.context.indented;
|
93
|
+
return state.context = state.context.prev;
|
94
|
+
}
|
95
|
+
|
96
|
+
// Interface
|
97
|
+
|
98
|
+
return {
|
99
|
+
startState: function(basecolumn) {
|
100
|
+
return {
|
101
|
+
tokenize: null,
|
102
|
+
context: new Context((basecolumn || 0) - indentUnit, 0, "top", false),
|
103
|
+
indented: 0,
|
104
|
+
startOfLine: true
|
105
|
+
};
|
106
|
+
},
|
107
|
+
|
108
|
+
token: function(stream, state) {
|
109
|
+
var ctx = state.context;
|
110
|
+
if (stream.sol()) {
|
111
|
+
if (ctx.align == null) ctx.align = false;
|
112
|
+
state.indented = stream.indentation();
|
113
|
+
state.startOfLine = true;
|
114
|
+
}
|
115
|
+
if (stream.eatSpace()) return null;
|
116
|
+
curPunc = null;
|
117
|
+
var style = (state.tokenize || tokenBase)(stream, state);
|
118
|
+
if (style == "comment" || style == "meta") return style;
|
119
|
+
if (ctx.align == null) ctx.align = true;
|
120
|
+
|
121
|
+
if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state);
|
122
|
+
else if (curPunc == "{") pushContext(state, stream.column(), "}");
|
123
|
+
else if (curPunc == "[") pushContext(state, stream.column(), "]");
|
124
|
+
else if (curPunc == "(") pushContext(state, stream.column(), ")");
|
125
|
+
else if (curPunc == "}") {
|
126
|
+
while (ctx.type == "statement") ctx = popContext(state);
|
127
|
+
if (ctx.type == "}") ctx = popContext(state);
|
128
|
+
while (ctx.type == "statement") ctx = popContext(state);
|
129
|
+
}
|
130
|
+
else if (curPunc == ctx.type) popContext(state);
|
131
|
+
else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement"))
|
132
|
+
pushContext(state, stream.column(), "statement");
|
133
|
+
state.startOfLine = false;
|
134
|
+
return style;
|
135
|
+
},
|
136
|
+
|
137
|
+
indent: function(state, textAfter) {
|
138
|
+
if (state.tokenize != tokenBase && state.tokenize != null) return 0;
|
139
|
+
var firstChar = textAfter && textAfter.charAt(0), ctx = state.context, closing = firstChar == ctx.type;
|
140
|
+
if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit);
|
141
|
+
else if (ctx.align) return ctx.column + (closing ? 0 : 1);
|
142
|
+
else return ctx.indented + (closing ? 0 : indentUnit);
|
143
|
+
},
|
144
|
+
|
145
|
+
electricChars: "{}"
|
146
|
+
};
|
147
|
+
});
|
148
|
+
|
149
|
+
(function() {
|
150
|
+
function words(str) {
|
151
|
+
var obj = {}, words = str.split(" ");
|
152
|
+
for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
|
153
|
+
return obj;
|
154
|
+
}
|
155
|
+
|
156
|
+
var verilogKeywords = "always and assign automatic begin buf bufif0 bufif1 case casex casez cell cmos config " +
|
157
|
+
"deassign default defparam design disable edge else end endcase endconfig endfunction endgenerate endmodule " +
|
158
|
+
"endprimitive endspecify endtable endtask event for force forever fork function generate genvar highz0 " +
|
159
|
+
"highz1 if ifnone incdir include initial inout input instance integer join large liblist library localparam " +
|
160
|
+
"macromodule medium module nand negedge nmos nor noshowcancelled not notif0 notif1 or output parameter pmos " +
|
161
|
+
"posedge primitive pull0 pull1 pulldown pullup pulsestyle_onevent pulsestyle_ondetect rcmos real realtime " +
|
162
|
+
"reg release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared showcancelled signed small specify specparam " +
|
163
|
+
"strong0 strong1 supply0 supply1 table task time tran tranif0 tranif1 tri tri0 tri1 triand trior trireg " +
|
164
|
+
"unsigned use vectored wait wand weak0 weak1 while wire wor xnor xor";
|
165
|
+
|
166
|
+
var verilogBlockKeywords = "begin bufif0 bufif1 case casex casez config else end endcase endconfig endfunction " +
|
167
|
+
"endgenerate endmodule endprimitive endspecify endtable endtask for forever function generate if ifnone " +
|
168
|
+
"macromodule module primitive repeat specify table task while";
|
169
|
+
|
170
|
+
function metaHook(stream) {
|
171
|
+
stream.eatWhile(/[\w\$_]/);
|
172
|
+
return "meta";
|
173
|
+
}
|
174
|
+
|
175
|
+
CodeMirror.defineMIME("text/x-verilog", {
|
176
|
+
name: "verilog",
|
177
|
+
keywords: words(verilogKeywords),
|
178
|
+
blockKeywords: words(verilogBlockKeywords),
|
179
|
+
atoms: words("null"),
|
180
|
+
hooks: {"`": metaHook, "$": metaHook}
|
181
|
+
});
|
182
|
+
}());
|