codemirror-rails 3.02 → 3.12
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.
- checksums.yaml +7 -0
- data/Gemfile +1 -1
- data/LICENSE +1 -1
- data/codemirror-rails.gemspec +1 -0
- data/doc/CodeMirror-LICENSE +5 -1
- data/lib/codemirror/rails/version.rb +2 -2
- data/vendor/assets/javascripts/codemirror/{utils → addons/dialog}/dialog.js +4 -0
- data/vendor/assets/javascripts/codemirror/addons/display/placeholder.js +54 -0
- data/vendor/assets/javascripts/codemirror/addons/edit/closebrackets.js +54 -0
- data/vendor/assets/javascripts/codemirror/{utils → addons/edit}/closetag.js +9 -8
- data/vendor/assets/javascripts/codemirror/{utils → addons/edit}/continuecomment.js +12 -4
- data/vendor/assets/javascripts/codemirror/addons/edit/continuelist.js +25 -0
- data/vendor/assets/javascripts/codemirror/{utils → addons/edit}/matchbrackets.js +30 -11
- data/vendor/assets/javascripts/codemirror/addons/fold/brace-fold.js +31 -0
- data/vendor/assets/javascripts/codemirror/addons/fold/foldcode.js +32 -0
- data/vendor/assets/javascripts/codemirror/addons/fold/indent-fold.js +11 -0
- data/vendor/assets/javascripts/codemirror/addons/fold/xml-fold.js +64 -0
- data/vendor/assets/javascripts/codemirror/addons/hint/html-hint.js +582 -0
- data/vendor/assets/javascripts/codemirror/{utils → addons/hint}/javascript-hint.js +15 -11
- data/vendor/assets/javascripts/codemirror/{utils → addons/hint}/pig-hint.js +19 -19
- data/vendor/assets/javascripts/codemirror/{utils → addons/hint}/python-hint.js +2 -2
- data/vendor/assets/javascripts/codemirror/addons/hint/show-hint.js +180 -0
- data/vendor/assets/javascripts/codemirror/{utils → addons/hint}/xml-hint.js +5 -18
- data/vendor/assets/javascripts/codemirror/addons/lint/javascript-lint.js +127 -0
- data/vendor/assets/javascripts/codemirror/addons/lint/json-lint.js +14 -0
- data/vendor/assets/javascripts/codemirror/addons/lint/lint.js +197 -0
- data/vendor/assets/javascripts/codemirror/{utils → addons/mode}/loadmode.js +0 -0
- data/vendor/assets/javascripts/codemirror/{utils → addons/mode}/multiplex.js +2 -2
- data/vendor/assets/javascripts/codemirror/{utils → addons/mode}/overlay.js +2 -2
- data/vendor/assets/javascripts/codemirror/{utils → addons/runmode}/colorize.js +0 -0
- data/vendor/assets/javascripts/codemirror/{utils → addons/runmode}/runmode-standalone.js +2 -3
- data/vendor/assets/javascripts/codemirror/{utils → addons/runmode}/runmode.js +0 -0
- data/vendor/assets/javascripts/codemirror/addons/runmode/runmode.node.js +89 -0
- data/vendor/assets/javascripts/codemirror/addons/search/match-highlighter.js +60 -0
- data/vendor/assets/javascripts/codemirror/{utils → addons/search}/search.js +5 -5
- data/vendor/assets/javascripts/codemirror/{utils → addons/search}/searchcursor.js +37 -30
- data/vendor/assets/javascripts/codemirror/addons/selection/active-line.js +39 -0
- data/vendor/assets/javascripts/codemirror/addons/selection/mark-selection.js +34 -0
- data/vendor/assets/javascripts/codemirror/keymaps/vim.js +721 -188
- data/vendor/assets/javascripts/codemirror/modes/asterisk.js +6 -6
- data/vendor/assets/javascripts/codemirror/modes/clike.js +14 -14
- data/vendor/assets/javascripts/codemirror/modes/clojure.js +23 -7
- data/vendor/assets/javascripts/codemirror/modes/coffeescript.js +2 -2
- data/vendor/assets/javascripts/codemirror/modes/css.js +337 -235
- data/vendor/assets/javascripts/codemirror/modes/ecl.js +12 -12
- data/vendor/assets/javascripts/codemirror/modes/erlang.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/gas.js +326 -0
- data/vendor/assets/javascripts/codemirror/modes/gfm.js +1 -0
- data/vendor/assets/javascripts/codemirror/modes/haskell.js +26 -26
- data/vendor/assets/javascripts/codemirror/modes/haxe.js +17 -17
- data/vendor/assets/javascripts/codemirror/modes/htmlembedded.js +6 -6
- data/vendor/assets/javascripts/codemirror/modes/htmlmixed.js +43 -23
- data/vendor/assets/javascripts/codemirror/modes/javascript.js +78 -33
- data/vendor/assets/javascripts/codemirror/modes/jinja2.js +2 -2
- data/vendor/assets/javascripts/codemirror/modes/less.js +38 -38
- data/vendor/assets/javascripts/codemirror/modes/livescript.js +267 -0
- data/vendor/assets/javascripts/codemirror/modes/lua.js +7 -7
- data/vendor/assets/javascripts/codemirror/modes/markdown.js +108 -57
- data/vendor/assets/javascripts/codemirror/modes/mirc.js +177 -0
- data/vendor/assets/javascripts/codemirror/modes/ntriples.js +22 -22
- data/vendor/assets/javascripts/codemirror/modes/ocaml.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/perl.js +791 -791
- data/vendor/assets/javascripts/codemirror/modes/php.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/pig.js +163 -163
- data/vendor/assets/javascripts/codemirror/modes/python.js +31 -31
- data/vendor/assets/javascripts/codemirror/modes/q.js +124 -0
- data/vendor/assets/javascripts/codemirror/modes/rst.js +486 -250
- data/vendor/assets/javascripts/codemirror/modes/sass.js +3 -3
- data/vendor/assets/javascripts/codemirror/modes/scss_test.js +80 -0
- data/vendor/assets/javascripts/codemirror/modes/shell.js +2 -2
- data/vendor/assets/javascripts/codemirror/modes/sieve.js +10 -10
- data/vendor/assets/javascripts/codemirror/modes/smalltalk.js +129 -129
- data/vendor/assets/javascripts/codemirror/modes/smarty.js +3 -3
- data/vendor/assets/javascripts/codemirror/modes/sparql.js +1 -1
- data/vendor/assets/javascripts/codemirror/modes/sql.js +23 -23
- data/vendor/assets/javascripts/codemirror/modes/stex.js +192 -121
- data/vendor/assets/javascripts/codemirror/modes/tcl.js +131 -0
- data/vendor/assets/javascripts/codemirror/modes/test.js +64 -0
- data/vendor/assets/javascripts/codemirror/modes/tiddlywiki.js +345 -345
- data/vendor/assets/javascripts/codemirror/modes/tiki.js +297 -298
- data/vendor/assets/javascripts/codemirror/modes/turtle.js +145 -0
- data/vendor/assets/javascripts/codemirror/modes/vb.js +31 -32
- data/vendor/assets/javascripts/codemirror/modes/vbscript.js +4 -4
- data/vendor/assets/javascripts/codemirror/modes/xml.js +10 -6
- data/vendor/assets/javascripts/codemirror/modes/xquery.js +55 -55
- data/vendor/assets/javascripts/codemirror/modes/yaml.js +90 -90
- data/vendor/assets/javascripts/codemirror/modes/z80.js +82 -110
- data/vendor/assets/javascripts/codemirror.js +1914 -1115
- data/vendor/assets/stylesheets/codemirror/{utils → addons/dialog}/dialog.css +0 -0
- data/vendor/assets/stylesheets/codemirror/addons/hint/show-hint.css +38 -0
- data/vendor/assets/stylesheets/codemirror/addons/lint/lint.css +96 -0
- data/vendor/assets/stylesheets/codemirror/modes/tiki.css +2 -2
- data/vendor/assets/stylesheets/codemirror/themes/ambiance-mobile.css +0 -1
- data/vendor/assets/stylesheets/codemirror/themes/ambiance.css +0 -1
- data/vendor/assets/stylesheets/codemirror/themes/eclipse.css +2 -2
- data/vendor/assets/stylesheets/codemirror/themes/erlang-dark.css +5 -5
- data/vendor/assets/stylesheets/codemirror/themes/midnight.css +52 -0
- data/vendor/assets/stylesheets/codemirror/themes/xq-light.css +43 -0
- data/vendor/assets/stylesheets/codemirror.css +16 -10
- metadata +60 -52
- data/vendor/assets/javascripts/codemirror/modes/mysql.js +0 -203
- data/vendor/assets/javascripts/codemirror/modes/plsql.js +0 -216
- data/vendor/assets/javascripts/codemirror/utils/collapserange.js +0 -68
- data/vendor/assets/javascripts/codemirror/utils/continuelist.js +0 -28
- data/vendor/assets/javascripts/codemirror/utils/foldcode.js +0 -183
- data/vendor/assets/javascripts/codemirror/utils/formatting.js +0 -114
- data/vendor/assets/javascripts/codemirror/utils/match-highlighter.js +0 -46
- data/vendor/assets/javascripts/codemirror/utils/simple-hint.js +0 -102
- data/vendor/assets/stylesheets/codemirror/utils/simple-hint.css +0 -16
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
CodeMirror.defineMode("turtle", function(config) {
|
|
2
|
+
var indentUnit = config.indentUnit;
|
|
3
|
+
var curPunc;
|
|
4
|
+
|
|
5
|
+
function wordRegexp(words) {
|
|
6
|
+
return new RegExp("^(?:" + words.join("|") + ")$", "i");
|
|
7
|
+
}
|
|
8
|
+
var ops = wordRegexp([]);
|
|
9
|
+
var keywords = wordRegexp(["@prefix", "@base", "a"]);
|
|
10
|
+
var operatorChars = /[*+\-<>=&|]/;
|
|
11
|
+
|
|
12
|
+
function tokenBase(stream, state) {
|
|
13
|
+
var ch = stream.next();
|
|
14
|
+
curPunc = null;
|
|
15
|
+
if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) {
|
|
16
|
+
stream.match(/^[^\s\u00a0>]*>?/);
|
|
17
|
+
return "atom";
|
|
18
|
+
}
|
|
19
|
+
else if (ch == "\"" || ch == "'") {
|
|
20
|
+
state.tokenize = tokenLiteral(ch);
|
|
21
|
+
return state.tokenize(stream, state);
|
|
22
|
+
}
|
|
23
|
+
else if (/[{}\(\),\.;\[\]]/.test(ch)) {
|
|
24
|
+
curPunc = ch;
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
else if (ch == "#") {
|
|
28
|
+
stream.skipToEnd();
|
|
29
|
+
return "comment";
|
|
30
|
+
}
|
|
31
|
+
else if (operatorChars.test(ch)) {
|
|
32
|
+
stream.eatWhile(operatorChars);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
else if (ch == ":") {
|
|
36
|
+
return "operator";
|
|
37
|
+
} else {
|
|
38
|
+
stream.eatWhile(/[_\w\d]/);
|
|
39
|
+
if(stream.peek() == ":") {
|
|
40
|
+
return "variable-3";
|
|
41
|
+
} else {
|
|
42
|
+
var word = stream.current();
|
|
43
|
+
|
|
44
|
+
if(keywords.test(word)) {
|
|
45
|
+
return "meta";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if(ch >= "A" && ch <= "Z") {
|
|
49
|
+
return "comment";
|
|
50
|
+
} else {
|
|
51
|
+
return "keyword";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
var word = stream.current();
|
|
55
|
+
if (ops.test(word))
|
|
56
|
+
return null;
|
|
57
|
+
else if (keywords.test(word))
|
|
58
|
+
return "meta";
|
|
59
|
+
else
|
|
60
|
+
return "variable";
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function tokenLiteral(quote) {
|
|
65
|
+
return function(stream, state) {
|
|
66
|
+
var escaped = false, ch;
|
|
67
|
+
while ((ch = stream.next()) != null) {
|
|
68
|
+
if (ch == quote && !escaped) {
|
|
69
|
+
state.tokenize = tokenBase;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
escaped = !escaped && ch == "\\";
|
|
73
|
+
}
|
|
74
|
+
return "string";
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function pushContext(state, type, col) {
|
|
79
|
+
state.context = {prev: state.context, indent: state.indent, col: col, type: type};
|
|
80
|
+
}
|
|
81
|
+
function popContext(state) {
|
|
82
|
+
state.indent = state.context.indent;
|
|
83
|
+
state.context = state.context.prev;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return {
|
|
87
|
+
startState: function() {
|
|
88
|
+
return {tokenize: tokenBase,
|
|
89
|
+
context: null,
|
|
90
|
+
indent: 0,
|
|
91
|
+
col: 0};
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
token: function(stream, state) {
|
|
95
|
+
if (stream.sol()) {
|
|
96
|
+
if (state.context && state.context.align == null) state.context.align = false;
|
|
97
|
+
state.indent = stream.indentation();
|
|
98
|
+
}
|
|
99
|
+
if (stream.eatSpace()) return null;
|
|
100
|
+
var style = state.tokenize(stream, state);
|
|
101
|
+
|
|
102
|
+
if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") {
|
|
103
|
+
state.context.align = true;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (curPunc == "(") pushContext(state, ")", stream.column());
|
|
107
|
+
else if (curPunc == "[") pushContext(state, "]", stream.column());
|
|
108
|
+
else if (curPunc == "{") pushContext(state, "}", stream.column());
|
|
109
|
+
else if (/[\]\}\)]/.test(curPunc)) {
|
|
110
|
+
while (state.context && state.context.type == "pattern") popContext(state);
|
|
111
|
+
if (state.context && curPunc == state.context.type) popContext(state);
|
|
112
|
+
}
|
|
113
|
+
else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state);
|
|
114
|
+
else if (/atom|string|variable/.test(style) && state.context) {
|
|
115
|
+
if (/[\}\]]/.test(state.context.type))
|
|
116
|
+
pushContext(state, "pattern", stream.column());
|
|
117
|
+
else if (state.context.type == "pattern" && !state.context.align) {
|
|
118
|
+
state.context.align = true;
|
|
119
|
+
state.context.col = stream.column();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return style;
|
|
124
|
+
},
|
|
125
|
+
|
|
126
|
+
indent: function(state, textAfter) {
|
|
127
|
+
var firstChar = textAfter && textAfter.charAt(0);
|
|
128
|
+
var context = state.context;
|
|
129
|
+
if (/[\]\}]/.test(firstChar))
|
|
130
|
+
while (context && context.type == "pattern") context = context.prev;
|
|
131
|
+
|
|
132
|
+
var closing = context && firstChar == context.type;
|
|
133
|
+
if (!context)
|
|
134
|
+
return 0;
|
|
135
|
+
else if (context.type == "pattern")
|
|
136
|
+
return context.col;
|
|
137
|
+
else if (context.align)
|
|
138
|
+
return context.col + (closing ? 0 : 1);
|
|
139
|
+
else
|
|
140
|
+
return context.indent + (closing ? 0 : indentUnit);
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
CodeMirror.defineMIME("text/turtle", "turtle");
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
2
2
|
var ERRORCLASS = 'error';
|
|
3
|
-
|
|
3
|
+
|
|
4
4
|
function wordRegexp(words) {
|
|
5
5
|
return new RegExp("^((" + words.join(")|(") + "))\\b", "i");
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
var singleOperators = new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]");
|
|
9
9
|
var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]');
|
|
10
10
|
var doubleOperators = new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))");
|
|
@@ -15,9 +15,9 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
15
15
|
var openingKeywords = ['class','module', 'sub','enum','select','while','if','function', 'get','set','property', 'try'];
|
|
16
16
|
var middleKeywords = ['else','elseif','case', 'catch'];
|
|
17
17
|
var endKeywords = ['next','loop'];
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'in']);
|
|
20
|
-
var commonkeywords = ['as', 'dim', 'break', 'continue','optional', 'then', 'until',
|
|
20
|
+
var commonkeywords = ['as', 'dim', 'break', 'continue','optional', 'then', 'until',
|
|
21
21
|
'goto', 'byval','byref','new','handles','property', 'return',
|
|
22
22
|
'const','private', 'protected', 'friend', 'public', 'shared', 'static', 'true','false'];
|
|
23
23
|
var commontypes = ['integer','string','double','decimal','boolean','short','char', 'float','single'];
|
|
@@ -34,13 +34,13 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
34
34
|
|
|
35
35
|
var indentInfo = null;
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
function indent(_stream, state) {
|
|
41
41
|
state.currentIndent++;
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
|
|
44
44
|
function dedent(_stream, state) {
|
|
45
45
|
state.currentIndent--;
|
|
46
46
|
}
|
|
@@ -49,16 +49,16 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
49
49
|
if (stream.eatSpace()) {
|
|
50
50
|
return null;
|
|
51
51
|
}
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
var ch = stream.peek();
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
// Handle Comments
|
|
56
56
|
if (ch === "'") {
|
|
57
57
|
stream.skipToEnd();
|
|
58
58
|
return 'comment';
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
|
|
61
|
+
|
|
62
62
|
// Handle Number Literals
|
|
63
63
|
if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) {
|
|
64
64
|
var floatLiteral = false;
|
|
@@ -66,7 +66,7 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
66
66
|
if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; }
|
|
67
67
|
else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; }
|
|
68
68
|
else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; }
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
if (floatLiteral) {
|
|
71
71
|
// Float literals may be "imaginary"
|
|
72
72
|
stream.eat(/J/i);
|
|
@@ -93,13 +93,13 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
93
93
|
return 'number';
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
|
|
96
|
+
|
|
97
97
|
// Handle Strings
|
|
98
98
|
if (stream.match(stringPrefixes)) {
|
|
99
99
|
state.tokenize = tokenStringFactory(stream.current());
|
|
100
100
|
return state.tokenize(stream, state);
|
|
101
101
|
}
|
|
102
|
-
|
|
102
|
+
|
|
103
103
|
// Handle operators and Delimiters
|
|
104
104
|
if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) {
|
|
105
105
|
return null;
|
|
@@ -137,29 +137,29 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
137
137
|
dedent(stream,state);
|
|
138
138
|
return 'keyword';
|
|
139
139
|
}
|
|
140
|
-
|
|
140
|
+
|
|
141
141
|
if (stream.match(types)) {
|
|
142
142
|
return 'keyword';
|
|
143
143
|
}
|
|
144
|
-
|
|
144
|
+
|
|
145
145
|
if (stream.match(keywords)) {
|
|
146
146
|
return 'keyword';
|
|
147
147
|
}
|
|
148
|
-
|
|
148
|
+
|
|
149
149
|
if (stream.match(identifiers)) {
|
|
150
150
|
return 'variable';
|
|
151
151
|
}
|
|
152
|
-
|
|
152
|
+
|
|
153
153
|
// Handle non-detected items
|
|
154
154
|
stream.next();
|
|
155
155
|
return ERRORCLASS;
|
|
156
156
|
}
|
|
157
|
-
|
|
157
|
+
|
|
158
158
|
function tokenStringFactory(delimiter) {
|
|
159
159
|
var singleline = delimiter.length == 1;
|
|
160
160
|
var OUTCLASS = 'string';
|
|
161
|
-
|
|
162
|
-
return function
|
|
161
|
+
|
|
162
|
+
return function(stream, state) {
|
|
163
163
|
while (!stream.eol()) {
|
|
164
164
|
stream.eatWhile(/[^'"]/);
|
|
165
165
|
if (stream.match(delimiter)) {
|
|
@@ -179,7 +179,7 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
179
179
|
return OUTCLASS;
|
|
180
180
|
};
|
|
181
181
|
}
|
|
182
|
-
|
|
182
|
+
|
|
183
183
|
|
|
184
184
|
function tokenLexer(stream, state) {
|
|
185
185
|
var style = state.tokenize(stream, state);
|
|
@@ -195,8 +195,8 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
195
195
|
return ERRORCLASS;
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
|
-
|
|
199
|
-
|
|
198
|
+
|
|
199
|
+
|
|
200
200
|
var delimiter_index = '[({'.indexOf(current);
|
|
201
201
|
if (delimiter_index !== -1) {
|
|
202
202
|
indent(stream, state );
|
|
@@ -212,7 +212,7 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
212
212
|
return ERRORCLASS;
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
|
-
|
|
215
|
+
|
|
216
216
|
return style;
|
|
217
217
|
}
|
|
218
218
|
|
|
@@ -229,7 +229,7 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
229
229
|
|
|
230
230
|
};
|
|
231
231
|
},
|
|
232
|
-
|
|
232
|
+
|
|
233
233
|
token: function(stream, state) {
|
|
234
234
|
if (stream.sol()) {
|
|
235
235
|
state.currentIndent += state.nextLineIndent;
|
|
@@ -237,24 +237,23 @@ CodeMirror.defineMode("vb", function(conf, parserConf) {
|
|
|
237
237
|
state.doInCurrentLine = 0;
|
|
238
238
|
}
|
|
239
239
|
var style = tokenLexer(stream, state);
|
|
240
|
-
|
|
240
|
+
|
|
241
241
|
state.lastToken = {style:style, content: stream.current()};
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
245
|
return style;
|
|
246
246
|
},
|
|
247
|
-
|
|
247
|
+
|
|
248
248
|
indent: function(state, textAfter) {
|
|
249
249
|
var trueText = textAfter.replace(/^\s+|\s+$/g, '') ;
|
|
250
250
|
if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);
|
|
251
251
|
if(state.currentIndent < 0) return 0;
|
|
252
252
|
return state.currentIndent * conf.indentUnit;
|
|
253
253
|
}
|
|
254
|
-
|
|
254
|
+
|
|
255
255
|
};
|
|
256
256
|
return external;
|
|
257
257
|
});
|
|
258
258
|
|
|
259
259
|
CodeMirror.defineMIME("text/x-vb", "vb");
|
|
260
|
-
|
|
@@ -6,12 +6,12 @@ CodeMirror.defineMode("vbscript", function() {
|
|
|
6
6
|
if (stream.eatSpace()) return null;
|
|
7
7
|
var ch = stream.next();
|
|
8
8
|
if (ch == "'") {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
stream.skipToEnd();
|
|
10
|
+
return "comment";
|
|
11
11
|
}
|
|
12
12
|
if (ch == '"') {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
stream.skipTo('"');
|
|
14
|
+
return "string";
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
if (/\w/.test(ch)) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
CodeMirror.defineMode("xml", function(config, parserConfig) {
|
|
2
2
|
var indentUnit = config.indentUnit;
|
|
3
|
+
var multilineTagIndentFactor = parserConfig.multilineTagIndentFactor || 1;
|
|
4
|
+
|
|
3
5
|
var Kludges = parserConfig.htmlMode ? {
|
|
4
6
|
autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,
|
|
5
7
|
'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,
|
|
@@ -84,7 +86,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
|
|
|
84
86
|
var ok;
|
|
85
87
|
if (stream.eat("#")) {
|
|
86
88
|
if (stream.eat("x")) {
|
|
87
|
-
ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";");
|
|
89
|
+
ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";");
|
|
88
90
|
} else {
|
|
89
91
|
ok = stream.eatWhile(/[\d]/) && stream.eat(";");
|
|
90
92
|
}
|
|
@@ -165,7 +167,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
|
|
|
165
167
|
};
|
|
166
168
|
}
|
|
167
169
|
|
|
168
|
-
var curState, setStyle;
|
|
170
|
+
var curState, curStream, setStyle;
|
|
169
171
|
function pass() {
|
|
170
172
|
for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]);
|
|
171
173
|
}
|
|
@@ -191,6 +193,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
|
|
|
191
193
|
function element(type) {
|
|
192
194
|
if (type == "openTag") {
|
|
193
195
|
curState.tagName = tagName;
|
|
196
|
+
curState.tagStart = curStream.column();
|
|
194
197
|
return cont(attributes, endtag(curState.startOfLine));
|
|
195
198
|
} else if (type == "closeTag") {
|
|
196
199
|
var err = false;
|
|
@@ -212,7 +215,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
|
|
|
212
215
|
function endtag(startOfLine) {
|
|
213
216
|
return function(type) {
|
|
214
217
|
var tagName = curState.tagName;
|
|
215
|
-
curState.tagName = null;
|
|
218
|
+
curState.tagName = curState.tagStart = null;
|
|
216
219
|
if (type == "selfcloseTag" ||
|
|
217
220
|
(type == "endTag" && Kludges.autoSelfClosers.hasOwnProperty(tagName.toLowerCase()))) {
|
|
218
221
|
maybePopContext(tagName.toLowerCase());
|
|
@@ -274,11 +277,11 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
|
|
|
274
277
|
|
|
275
278
|
return {
|
|
276
279
|
startState: function() {
|
|
277
|
-
return {tokenize: inText, cc: [], indented: 0, startOfLine: true, tagName: null, context: null};
|
|
280
|
+
return {tokenize: inText, cc: [], indented: 0, startOfLine: true, tagName: null, tagStart: null, context: null};
|
|
278
281
|
},
|
|
279
282
|
|
|
280
283
|
token: function(stream, state) {
|
|
281
|
-
if (stream.sol()) {
|
|
284
|
+
if (!state.tagName && stream.sol()) {
|
|
282
285
|
state.startOfLine = true;
|
|
283
286
|
state.indented = stream.indentation();
|
|
284
287
|
}
|
|
@@ -288,7 +291,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
|
|
|
288
291
|
var style = state.tokenize(stream, state);
|
|
289
292
|
state.type = type;
|
|
290
293
|
if ((style || type) && style != "comment") {
|
|
291
|
-
curState = state;
|
|
294
|
+
curState = state; curStream = stream;
|
|
292
295
|
while (true) {
|
|
293
296
|
var comb = state.cc.pop() || element;
|
|
294
297
|
if (comb(type || style)) break;
|
|
@@ -303,6 +306,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
|
|
|
303
306
|
if ((state.tokenize != inTag && state.tokenize != inText) ||
|
|
304
307
|
context && context.noIndent)
|
|
305
308
|
return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0;
|
|
309
|
+
if (state.tagName) return state.tagStart + indentUnit * multilineTagIndentFactor;
|
|
306
310
|
if (alignCDATA && /<!\[CDATA\[/.test(textAfter)) return 0;
|
|
307
311
|
if (context && /^<\//.test(textAfter))
|
|
308
312
|
context = context.prev;
|