ace-rails-ap 2.0.0 → 2.0.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.
- checksums.yaml +7 -0
- data/README.md +1 -1
- data/lib/ace/rails/version.rb +1 -1
- data/vendor/assets/javascripts/ace/ace.js +6911 -5290
- data/vendor/assets/javascripts/ace/ext-chromevox.js +537 -0
- data/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js +301 -0
- data/vendor/assets/javascripts/ace/ext-emmet.js +1109 -0
- data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +207 -0
- data/vendor/assets/javascripts/ace/ext-language_tools.js +1665 -0
- data/vendor/assets/javascripts/ace/ext-modelist.js +168 -0
- data/vendor/assets/javascripts/ace/ext-old_ie.js +500 -0
- data/vendor/assets/javascripts/ace/ext-options.js +252 -0
- data/vendor/assets/javascripts/ace/ext-searchbox.js +421 -0
- data/vendor/assets/javascripts/ace/ext-settings_menu.js +632 -0
- data/vendor/assets/javascripts/ace/ext-spellcheck.js +68 -0
- data/vendor/assets/javascripts/ace/ext-split.js +271 -0
- data/vendor/assets/javascripts/ace/ext-static_highlight.js +178 -0
- data/vendor/assets/javascripts/ace/ext-statusbar.js +47 -0
- data/vendor/assets/javascripts/ace/ext-textarea.js +478 -0
- data/vendor/assets/javascripts/ace/ext-themelist.js +86 -0
- data/vendor/assets/javascripts/ace/ext-whitespace.js +206 -0
- data/vendor/assets/javascripts/ace/keybinding-emacs.js +822 -131
- data/vendor/assets/javascripts/ace/keybinding-vim.js +382 -258
- data/vendor/assets/javascripts/ace/mode-abap.js +261 -0
- data/vendor/assets/javascripts/ace/mode-actionscript.js +257 -0
- data/vendor/assets/javascripts/ace/mode-ada.js +118 -0
- data/vendor/assets/javascripts/ace/mode-asciidoc.js +373 -0
- data/vendor/assets/javascripts/ace/mode-assembly_x86.js +217 -0
- data/vendor/assets/javascripts/ace/mode-autohotkey.js +225 -0
- data/vendor/assets/javascripts/ace/mode-batchfile.js +213 -0
- data/vendor/assets/javascripts/ace/mode-c9search.js +144 -124
- data/vendor/assets/javascripts/ace/mode-c_cpp.js +296 -254
- data/vendor/assets/javascripts/ace/mode-clojure.js +113 -177
- data/vendor/assets/javascripts/ace/mode-cobol.js +125 -0
- data/vendor/assets/javascripts/ace/mode-coffee.js +152 -235
- data/vendor/assets/javascripts/ace/mode-coldfusion.js +823 -835
- data/vendor/assets/javascripts/ace/mode-csharp.js +325 -187
- data/vendor/assets/javascripts/ace/mode-css.js +583 -297
- data/vendor/assets/javascripts/ace/mode-curly.js +2423 -0
- data/vendor/assets/javascripts/ace/mode-d.js +492 -0
- data/vendor/assets/javascripts/ace/mode-dart.js +993 -0
- data/vendor/assets/javascripts/ace/mode-diff.js +124 -204
- data/vendor/assets/javascripts/ace/mode-django.js +2448 -0
- data/vendor/assets/javascripts/ace/mode-dot.js +361 -0
- data/vendor/assets/javascripts/ace/mode-ejs.js +2817 -0
- data/vendor/assets/javascripts/ace/mode-erlang.js +987 -0
- data/vendor/assets/javascripts/ace/mode-forth.js +280 -0
- data/vendor/assets/javascripts/ace/mode-ftl.js +1061 -0
- data/vendor/assets/javascripts/ace/mode-glsl.js +313 -275
- data/vendor/assets/javascripts/ace/mode-golang.js +268 -275
- data/vendor/assets/javascripts/ace/mode-groovy.js +347 -492
- data/vendor/assets/javascripts/ace/mode-haml.js +498 -0
- data/vendor/assets/javascripts/ace/mode-handlebars.js +2433 -0
- data/vendor/assets/javascripts/ace/mode-haskell.js +362 -0
- data/vendor/assets/javascripts/ace/mode-haxe.js +226 -202
- data/vendor/assets/javascripts/ace/mode-html.js +1099 -802
- data/vendor/assets/javascripts/ace/mode-html_completions.js +309 -0
- data/vendor/assets/javascripts/ace/mode-html_ruby.js +2822 -0
- data/vendor/assets/javascripts/ace/mode-ini.js +185 -0
- data/vendor/assets/javascripts/ace/mode-jack.js +653 -0
- data/vendor/assets/javascripts/ace/mode-jade.js +2081 -0
- data/vendor/assets/javascripts/ace/mode-java.js +339 -488
- data/vendor/assets/javascripts/ace/mode-javascript.js +342 -478
- data/vendor/assets/javascripts/ace/mode-json.js +215 -178
- data/vendor/assets/javascripts/ace/mode-jsoniq.js +2761 -0
- data/vendor/assets/javascripts/ace/mode-jsp.js +1553 -0
- data/vendor/assets/javascripts/ace/mode-jsx.js +325 -289
- data/vendor/assets/javascripts/ace/mode-julia.js +286 -0
- data/vendor/assets/javascripts/ace/mode-latex.js +141 -46
- data/vendor/assets/javascripts/ace/mode-less.js +493 -151
- data/vendor/assets/javascripts/ace/mode-liquid.js +594 -656
- data/vendor/assets/javascripts/ace/mode-lisp.js +137 -0
- data/vendor/assets/javascripts/ace/mode-livescript.js +288 -0
- data/vendor/assets/javascripts/ace/mode-logiql.js +669 -0
- data/vendor/assets/javascripts/ace/mode-lsl.js +890 -0
- data/vendor/assets/javascripts/ace/mode-lua.js +274 -368
- data/vendor/assets/javascripts/ace/mode-luapage.js +1331 -1107
- data/vendor/assets/javascripts/ace/mode-lucene.js +64 -0
- data/vendor/assets/javascripts/ace/mode-makefile.js +332 -0
- data/vendor/assets/javascripts/ace/mode-markdown.js +1303 -948
- data/vendor/assets/javascripts/ace/mode-matlab.js +230 -0
- data/vendor/assets/javascripts/ace/mode-mushcode.js +705 -0
- data/vendor/assets/javascripts/ace/mode-mushcode_high_rules.js +569 -0
- data/vendor/assets/javascripts/ace/mode-mysql.js +185 -0
- data/vendor/assets/javascripts/ace/mode-nix.js +935 -0
- data/vendor/assets/javascripts/ace/mode-objectivec.js +699 -0
- data/vendor/assets/javascripts/ace/mode-ocaml.js +44 -63
- data/vendor/assets/javascripts/ace/mode-pascal.js +233 -0
- data/vendor/assets/javascripts/ace/mode-perl.js +116 -189
- data/vendor/assets/javascripts/ace/mode-pgsql.js +886 -500
- data/vendor/assets/javascripts/ace/mode-php.js +1158 -380
- data/vendor/assets/javascripts/ace/mode-plain_text.js +56 -0
- data/vendor/assets/javascripts/ace/mode-powershell.js +222 -167
- data/vendor/assets/javascripts/ace/mode-prolog.js +354 -0
- data/vendor/assets/javascripts/ace/mode-properties.js +100 -0
- data/vendor/assets/javascripts/ace/mode-protobuf.js +885 -0
- data/vendor/assets/javascripts/ace/mode-python.js +99 -201
- data/vendor/assets/javascripts/ace/mode-r.js +337 -0
- data/vendor/assets/javascripts/ace/mode-rdoc.js +210 -0
- data/vendor/assets/javascripts/ace/mode-rhtml.js +2663 -0
- data/vendor/assets/javascripts/ace/mode-ruby.js +262 -136
- data/vendor/assets/javascripts/ace/mode-rust.js +245 -0
- data/vendor/assets/javascripts/ace/mode-sass.js +443 -0
- data/vendor/assets/javascripts/ace/mode-scad.js +225 -240
- data/vendor/assets/javascripts/ace/mode-scala.js +340 -494
- data/vendor/assets/javascripts/ace/mode-scheme.js +143 -0
- data/vendor/assets/javascripts/ace/mode-scss.js +499 -157
- data/vendor/assets/javascripts/ace/mode-sh.js +180 -110
- data/vendor/assets/javascripts/ace/mode-sjs.js +1154 -0
- data/vendor/assets/javascripts/ace/mode-snippets.js +198 -0
- data/vendor/assets/javascripts/ace/mode-soy_template.js +2707 -0
- data/vendor/assets/javascripts/ace/mode-space.js +160 -0
- data/vendor/assets/javascripts/ace/mode-sql.js +48 -69
- data/vendor/assets/javascripts/ace/mode-stylus.js +447 -0
- data/vendor/assets/javascripts/ace/mode-svg.js +552 -605
- data/vendor/assets/javascripts/ace/mode-tcl.js +139 -98
- data/vendor/assets/javascripts/ace/mode-tex.js +187 -0
- data/vendor/assets/javascripts/ace/mode-textile.js +29 -40
- data/vendor/assets/javascripts/ace/mode-tmsnippet.js +200 -0
- data/vendor/assets/javascripts/ace/mode-toml.js +177 -0
- data/vendor/assets/javascripts/ace/mode-twig.js +2228 -0
- data/vendor/assets/javascripts/ace/mode-typescript.js +1018 -0
- data/vendor/assets/javascripts/ace/mode-vbscript.js +250 -0
- data/vendor/assets/javascripts/ace/mode-velocity.js +1621 -0
- data/vendor/assets/javascripts/ace/mode-verilog.js +127 -0
- data/vendor/assets/javascripts/ace/mode-vhdl.js +139 -0
- data/vendor/assets/javascripts/ace/mode-xml.js +350 -242
- data/vendor/assets/javascripts/ace/mode-xquery.js +2490 -300
- data/vendor/assets/javascripts/ace/mode-yaml.js +146 -45
- data/vendor/assets/javascripts/ace/theme-ambiance.js +202 -0
- data/vendor/assets/javascripts/ace/theme-chaos.js +179 -0
- data/vendor/assets/javascripts/ace/theme-chrome.js +97 -153
- data/vendor/assets/javascripts/ace/theme-clouds.js +78 -119
- data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +79 -120
- data/vendor/assets/javascripts/ace/theme-cobalt.js +89 -140
- data/vendor/assets/javascripts/ace/theme-crimson_editor.js +93 -145
- data/vendor/assets/javascripts/ace/theme-dawn.js +84 -143
- data/vendor/assets/javascripts/ace/theme-dreamweaver.js +99 -162
- data/vendor/assets/javascripts/ace/theme-eclipse.js +78 -111
- data/vendor/assets/javascripts/ace/theme-github.js +70 -121
- data/vendor/assets/javascripts/ace/theme-idle_fingers.js +75 -134
- data/vendor/assets/javascripts/ace/theme-kr.js +135 -0
- data/vendor/assets/javascripts/ace/theme-merbivore.js +80 -143
- data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +81 -149
- data/vendor/assets/javascripts/ace/theme-mono_industrial.js +87 -146
- data/vendor/assets/javascripts/ace/theme-monokai.js +88 -146
- data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +82 -142
- data/vendor/assets/javascripts/ace/theme-solarized_dark.js +83 -144
- data/vendor/assets/javascripts/ace/theme-solarized_light.js +76 -133
- data/vendor/assets/javascripts/ace/theme-terminal.js +145 -0
- data/vendor/assets/javascripts/ace/theme-textmate.js +101 -158
- data/vendor/assets/javascripts/ace/theme-tomorrow.js +89 -163
- data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +89 -163
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +89 -165
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +101 -162
- data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +90 -160
- data/vendor/assets/javascripts/ace/theme-twilight.js +87 -158
- data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +75 -140
- data/vendor/assets/javascripts/ace/theme-xcode.js +120 -0
- data/vendor/assets/javascripts/ace/worker-coffee.js +3049 -2665
- data/vendor/assets/javascripts/ace/worker-css.js +1779 -4376
- data/vendor/assets/javascripts/ace/worker-javascript.js +8701 -9008
- data/vendor/assets/javascripts/ace/worker-json.js +709 -1340
- data/vendor/assets/javascripts/ace/worker-lua.js +3525 -0
- data/vendor/assets/javascripts/ace/worker-php.js +6893 -0
- data/vendor/assets/javascripts/ace/worker-xquery.js +19924 -64507
- metadata +100 -17
@@ -1,101 +1,86 @@
|
|
1
1
|
define('ace/mode/golang', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text', 'ace/tokenizer', 'ace/mode/golang_highlight_rules', 'ace/mode/matching_brace_outdent', 'ace/mode/behaviour/cstyle', 'ace/mode/folding/cstyle'], function(require, exports, module) {
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
(function() {
|
19
|
-
|
20
|
-
this.toggleCommentLines = function(state, doc, startRow, endRow) {
|
21
|
-
var outdent = true;
|
22
|
-
var outentedRows = [];
|
23
|
-
var re = /^(\s*)\/\//;
|
24
|
-
|
25
|
-
for (var i=startRow; i<= endRow; i++) {
|
26
|
-
if (!re.test(doc.getLine(i))) {
|
27
|
-
outdent = false;
|
28
|
-
break;
|
29
|
-
}
|
30
|
-
}
|
3
|
+
var oop = require("../lib/oop");
|
4
|
+
var TextMode = require("./text").Mode;
|
5
|
+
var Tokenizer = require("../tokenizer").Tokenizer;
|
6
|
+
var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules;
|
7
|
+
var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent;
|
8
|
+
var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour;
|
9
|
+
var CStyleFoldMode = require("./folding/cstyle").FoldMode;
|
10
|
+
|
11
|
+
var Mode = function() {
|
12
|
+
this.HighlightRules = GolangHighlightRules;
|
13
|
+
this.$outdent = new MatchingBraceOutdent();
|
14
|
+
this.foldingRules = new CStyleFoldMode();
|
15
|
+
};
|
16
|
+
oop.inherits(Mode, TextMode);
|
31
17
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
var line = doc.getLine(i);
|
37
|
-
var m = line.match(re);
|
38
|
-
deleteRange.start.row = i;
|
39
|
-
deleteRange.end.row = i;
|
40
|
-
deleteRange.end.column = m[0].length;
|
41
|
-
doc.replace(deleteRange, m[1]);
|
42
|
-
}
|
43
|
-
}
|
44
|
-
else {
|
45
|
-
doc.indentRows(startRow, endRow, "//");
|
46
|
-
}
|
47
|
-
};
|
18
|
+
(function() {
|
19
|
+
|
20
|
+
this.lineCommentStart = "//";
|
21
|
+
this.blockComment = {start: "/*", end: "*/"};
|
48
22
|
|
49
|
-
|
50
|
-
|
23
|
+
this.getNextLineIndent = function(state, line, tab) {
|
24
|
+
var indent = this.$getIndent(line);
|
51
25
|
|
52
|
-
|
53
|
-
|
54
|
-
|
26
|
+
var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
|
27
|
+
var tokens = tokenizedLine.tokens;
|
28
|
+
var endState = tokenizedLine.state;
|
55
29
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
}
|
30
|
+
if (tokens.length && tokens[tokens.length-1].type == "comment") {
|
31
|
+
return indent;
|
32
|
+
}
|
33
|
+
|
34
|
+
if (state == "start") {
|
35
|
+
var match = line.match(/^.*[\{\(\[]\s*$/);
|
36
|
+
if (match) {
|
37
|
+
indent += tab;
|
65
38
|
}
|
39
|
+
}
|
66
40
|
|
67
|
-
|
68
|
-
|
41
|
+
return indent;
|
42
|
+
};//end getNextLineIndent
|
69
43
|
|
70
|
-
|
71
|
-
|
72
|
-
|
44
|
+
this.checkOutdent = function(state, line, input) {
|
45
|
+
return this.$outdent.checkOutdent(line, input);
|
46
|
+
};
|
73
47
|
|
74
|
-
|
75
|
-
|
76
|
-
|
48
|
+
this.autoOutdent = function(state, doc, row) {
|
49
|
+
this.$outdent.autoOutdent(doc, row);
|
50
|
+
};
|
77
51
|
|
78
|
-
|
52
|
+
this.$id = "ace/mode/golang";
|
53
|
+
}).call(Mode.prototype);
|
79
54
|
|
80
|
-
|
55
|
+
exports.Mode = Mode;
|
81
56
|
});
|
82
|
-
define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/
|
57
|
+
define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/doc_comment_highlight_rules', 'ace/mode/text_highlight_rules'], function(require, exports, module) {
|
83
58
|
var oop = require("../lib/oop");
|
84
|
-
var lang = require("../lib/lang");
|
85
59
|
var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules;
|
86
60
|
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
87
61
|
|
88
62
|
var GolangHighlightRules = function() {
|
89
|
-
var keywords =
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
63
|
+
var keywords = (
|
64
|
+
"else|break|case|return|goto|if|const|select|" +
|
65
|
+
"continue|struct|default|switch|for|range|" +
|
66
|
+
"func|import|package|chan|defer|fallthrough|go|interface|map|range|" +
|
67
|
+
"select|type|var"
|
94
68
|
);
|
95
|
-
|
96
|
-
|
97
|
-
|
69
|
+
var builtinTypes = (
|
70
|
+
"string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" +
|
71
|
+
"float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"
|
98
72
|
);
|
73
|
+
var builtinFunctions = (
|
74
|
+
"make|close|new|panic|recover"
|
75
|
+
);
|
76
|
+
var builtinConstants = ("nil|true|false|iota");
|
77
|
+
|
78
|
+
var keywordMapper = this.createKeywordMapper({
|
79
|
+
"keyword": keywords,
|
80
|
+
"constant.language": builtinConstants,
|
81
|
+
"support.function": builtinFunctions,
|
82
|
+
"support.type": builtinTypes
|
83
|
+
}, "identifier");
|
99
84
|
|
100
85
|
this.$rules = {
|
101
86
|
"start" : [
|
@@ -106,25 +91,22 @@ define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace
|
|
106
91
|
DocCommentHighlightRules.getStartRule("doc-start"),
|
107
92
|
{
|
108
93
|
token : "comment", // multi line comment
|
109
|
-
merge : true,
|
110
94
|
regex : "\\/\\*",
|
111
95
|
next : "comment"
|
112
96
|
}, {
|
113
97
|
token : "string", // single line
|
114
98
|
regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
|
115
|
-
}, {
|
116
|
-
token : "string", // multi line string start
|
117
|
-
merge : true,
|
118
|
-
regex : '["].*\\\\$',
|
119
|
-
next : "qqstring"
|
120
99
|
}, {
|
121
100
|
token : "string", // single line
|
122
|
-
regex :
|
101
|
+
regex : '[`](?:[^`]*)[`]'
|
123
102
|
}, {
|
124
103
|
token : "string", // multi line string start
|
125
104
|
merge : true,
|
126
|
-
regex :
|
127
|
-
next : "
|
105
|
+
regex : '[`](?:[^`]*)$',
|
106
|
+
next : "bqstring"
|
107
|
+
}, {
|
108
|
+
token : "constant.numeric", // rune
|
109
|
+
regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))[']"
|
128
110
|
}, {
|
129
111
|
token : "constant.numeric", // hex
|
130
112
|
regex : "0[xX][0-9a-fA-F]+\\b"
|
@@ -132,26 +114,11 @@ define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace
|
|
132
114
|
token : "constant.numeric", // float
|
133
115
|
regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
|
134
116
|
}, {
|
135
|
-
token :
|
136
|
-
regex : "<[a-zA-Z0-9.]+>"
|
137
|
-
}, {
|
138
|
-
token : "keyword", // pre-compiler directivs
|
139
|
-
regex : "(?:#include|#pragma|#line|#define|#undef|#ifdef|#else|#elif|#endif|#ifndef)"
|
140
|
-
}, {
|
141
|
-
token : function(value) {
|
142
|
-
if (value == "this")
|
143
|
-
return "variable.language";
|
144
|
-
else if (keywords.hasOwnProperty(value))
|
145
|
-
return "keyword";
|
146
|
-
else if (buildinConstants.hasOwnProperty(value))
|
147
|
-
return "constant.language";
|
148
|
-
else
|
149
|
-
return "identifier";
|
150
|
-
},
|
117
|
+
token : keywordMapper,
|
151
118
|
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
|
152
119
|
}, {
|
153
120
|
token : "keyword.operator",
|
154
|
-
regex : "
|
121
|
+
regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="
|
155
122
|
}, {
|
156
123
|
token : "punctuation.operator",
|
157
124
|
regex : "\\?|\\:|\\,|\\;|\\."
|
@@ -161,6 +128,9 @@ define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace
|
|
161
128
|
}, {
|
162
129
|
token : "paren.rparen",
|
163
130
|
regex : "[\\])}]"
|
131
|
+
}, {
|
132
|
+
token: "invalid",
|
133
|
+
regex: "\\s+$"
|
164
134
|
}, {
|
165
135
|
token : "text",
|
166
136
|
regex : "\\s+"
|
@@ -173,37 +143,24 @@ define('ace/mode/golang_highlight_rules', ['require', 'exports', 'module' , 'ace
|
|
173
143
|
next : "start"
|
174
144
|
}, {
|
175
145
|
token : "comment", // comment spanning whole line
|
176
|
-
merge : true,
|
177
146
|
regex : ".+"
|
178
147
|
}
|
179
148
|
],
|
180
|
-
"
|
181
|
-
{
|
182
|
-
token : "string",
|
183
|
-
regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
|
184
|
-
next : "start"
|
185
|
-
}, {
|
186
|
-
token : "string",
|
187
|
-
merge : true,
|
188
|
-
regex : '.+'
|
189
|
-
}
|
190
|
-
],
|
191
|
-
"qstring" : [
|
149
|
+
"bqstring" : [
|
192
150
|
{
|
193
151
|
token : "string",
|
194
|
-
regex :
|
152
|
+
regex : '(?:[^`]*)`',
|
195
153
|
next : "start"
|
196
154
|
}, {
|
197
155
|
token : "string",
|
198
|
-
merge : true,
|
199
156
|
regex : '.+'
|
200
157
|
}
|
201
158
|
]
|
202
159
|
};
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
}
|
160
|
+
|
161
|
+
this.embedRules(DocCommentHighlightRules, "doc-",
|
162
|
+
[ DocCommentHighlightRules.getEndRule("start") ]);
|
163
|
+
};
|
207
164
|
oop.inherits(GolangHighlightRules, TextHighlightRules);
|
208
165
|
|
209
166
|
exports.GolangHighlightRules = GolangHighlightRules;
|
@@ -222,21 +179,10 @@ var DocCommentHighlightRules = function() {
|
|
222
179
|
token : "comment.doc.tag",
|
223
180
|
regex : "@[\\w\\d_]+" // TODO: fix email addresses
|
224
181
|
}, {
|
225
|
-
token : "comment.doc",
|
226
|
-
|
227
|
-
regex : "\\s+"
|
228
|
-
}, {
|
229
|
-
token : "comment.doc",
|
230
|
-
merge : true,
|
231
|
-
regex : "TODO"
|
232
|
-
}, {
|
233
|
-
token : "comment.doc",
|
234
|
-
merge : true,
|
235
|
-
regex : "[^@\\*]+"
|
182
|
+
token : "comment.doc.tag",
|
183
|
+
regex : "\\bTODO\\b"
|
236
184
|
}, {
|
237
|
-
|
238
|
-
merge : true,
|
239
|
-
regex : "."
|
185
|
+
defaultToken : "comment.doc"
|
240
186
|
}]
|
241
187
|
};
|
242
188
|
};
|
@@ -246,7 +192,6 @@ oop.inherits(DocCommentHighlightRules, TextHighlightRules);
|
|
246
192
|
DocCommentHighlightRules.getStartRule = function(start) {
|
247
193
|
return {
|
248
194
|
token : "comment.doc", // doc comment
|
249
|
-
merge : true,
|
250
195
|
regex : "\\/\\*(?=\\*)",
|
251
196
|
next : start
|
252
197
|
};
|
@@ -255,7 +200,6 @@ DocCommentHighlightRules.getStartRule = function(start) {
|
|
255
200
|
DocCommentHighlightRules.getEndRule = function (start) {
|
256
201
|
return {
|
257
202
|
token : "comment.doc", // closing comment
|
258
|
-
merge : true,
|
259
203
|
regex : "\\*\\/",
|
260
204
|
next : start
|
261
205
|
};
|
@@ -298,12 +242,7 @@ var MatchingBraceOutdent = function() {};
|
|
298
242
|
};
|
299
243
|
|
300
244
|
this.$getIndent = function(line) {
|
301
|
-
|
302
|
-
if (match) {
|
303
|
-
return match[1];
|
304
|
-
}
|
305
|
-
|
306
|
-
return "";
|
245
|
+
return line.match(/^\s*/)[0];
|
307
246
|
};
|
308
247
|
|
309
248
|
}).call(MatchingBraceOutdent.prototype);
|
@@ -311,59 +250,155 @@ var MatchingBraceOutdent = function() {};
|
|
311
250
|
exports.MatchingBraceOutdent = MatchingBraceOutdent;
|
312
251
|
});
|
313
252
|
|
314
|
-
define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour'], function(require, exports, module) {
|
253
|
+
define('ace/mode/behaviour/cstyle', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/behaviour', 'ace/token_iterator', 'ace/lib/lang'], function(require, exports, module) {
|
315
254
|
|
316
255
|
|
317
256
|
var oop = require("../../lib/oop");
|
318
257
|
var Behaviour = require("../behaviour").Behaviour;
|
258
|
+
var TokenIterator = require("../../token_iterator").TokenIterator;
|
259
|
+
var lang = require("../../lib/lang");
|
260
|
+
|
261
|
+
var SAFE_INSERT_IN_TOKENS =
|
262
|
+
["text", "paren.rparen", "punctuation.operator"];
|
263
|
+
var SAFE_INSERT_BEFORE_TOKENS =
|
264
|
+
["text", "paren.rparen", "punctuation.operator", "comment"];
|
265
|
+
|
266
|
+
|
267
|
+
var autoInsertedBrackets = 0;
|
268
|
+
var autoInsertedRow = -1;
|
269
|
+
var autoInsertedLineEnd = "";
|
270
|
+
var maybeInsertedBrackets = 0;
|
271
|
+
var maybeInsertedRow = -1;
|
272
|
+
var maybeInsertedLineStart = "";
|
273
|
+
var maybeInsertedLineEnd = "";
|
319
274
|
|
320
275
|
var CstyleBehaviour = function () {
|
276
|
+
|
277
|
+
CstyleBehaviour.isSaneInsertion = function(editor, session) {
|
278
|
+
var cursor = editor.getCursorPosition();
|
279
|
+
var iterator = new TokenIterator(session, cursor.row, cursor.column);
|
280
|
+
if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) {
|
281
|
+
var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);
|
282
|
+
if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS))
|
283
|
+
return false;
|
284
|
+
}
|
285
|
+
iterator.stepForward();
|
286
|
+
return iterator.getCurrentTokenRow() !== cursor.row ||
|
287
|
+
this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS);
|
288
|
+
};
|
289
|
+
|
290
|
+
CstyleBehaviour.$matchTokenType = function(token, types) {
|
291
|
+
return types.indexOf(token.type || token) > -1;
|
292
|
+
};
|
293
|
+
|
294
|
+
CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {
|
295
|
+
var cursor = editor.getCursorPosition();
|
296
|
+
var line = session.doc.getLine(cursor.row);
|
297
|
+
if (!this.isAutoInsertedClosing(cursor, line, autoInsertedLineEnd[0]))
|
298
|
+
autoInsertedBrackets = 0;
|
299
|
+
autoInsertedRow = cursor.row;
|
300
|
+
autoInsertedLineEnd = bracket + line.substr(cursor.column);
|
301
|
+
autoInsertedBrackets++;
|
302
|
+
};
|
303
|
+
|
304
|
+
CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {
|
305
|
+
var cursor = editor.getCursorPosition();
|
306
|
+
var line = session.doc.getLine(cursor.row);
|
307
|
+
if (!this.isMaybeInsertedClosing(cursor, line))
|
308
|
+
maybeInsertedBrackets = 0;
|
309
|
+
maybeInsertedRow = cursor.row;
|
310
|
+
maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;
|
311
|
+
maybeInsertedLineEnd = line.substr(cursor.column);
|
312
|
+
maybeInsertedBrackets++;
|
313
|
+
};
|
314
|
+
|
315
|
+
CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {
|
316
|
+
return autoInsertedBrackets > 0 &&
|
317
|
+
cursor.row === autoInsertedRow &&
|
318
|
+
bracket === autoInsertedLineEnd[0] &&
|
319
|
+
line.substr(cursor.column) === autoInsertedLineEnd;
|
320
|
+
};
|
321
|
+
|
322
|
+
CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {
|
323
|
+
return maybeInsertedBrackets > 0 &&
|
324
|
+
cursor.row === maybeInsertedRow &&
|
325
|
+
line.substr(cursor.column) === maybeInsertedLineEnd &&
|
326
|
+
line.substr(0, cursor.column) == maybeInsertedLineStart;
|
327
|
+
};
|
328
|
+
|
329
|
+
CstyleBehaviour.popAutoInsertedClosing = function() {
|
330
|
+
autoInsertedLineEnd = autoInsertedLineEnd.substr(1);
|
331
|
+
autoInsertedBrackets--;
|
332
|
+
};
|
333
|
+
|
334
|
+
CstyleBehaviour.clearMaybeInsertedClosing = function() {
|
335
|
+
maybeInsertedBrackets = 0;
|
336
|
+
maybeInsertedRow = -1;
|
337
|
+
};
|
321
338
|
|
322
339
|
this.add("braces", "insertion", function (state, action, editor, session, text) {
|
340
|
+
var cursor = editor.getCursorPosition();
|
341
|
+
var line = session.doc.getLine(cursor.row);
|
323
342
|
if (text == '{') {
|
324
343
|
var selection = editor.getSelectionRange();
|
325
344
|
var selected = session.doc.getTextRange(selection);
|
326
|
-
if (selected !== "") {
|
345
|
+
if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) {
|
327
346
|
return {
|
328
347
|
text: '{' + selected + '}',
|
329
348
|
selection: false
|
330
349
|
};
|
331
|
-
} else {
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
350
|
+
} else if (CstyleBehaviour.isSaneInsertion(editor, session)) {
|
351
|
+
if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) {
|
352
|
+
CstyleBehaviour.recordAutoInsert(editor, session, "}");
|
353
|
+
return {
|
354
|
+
text: '{}',
|
355
|
+
selection: [1, 1]
|
356
|
+
};
|
357
|
+
} else {
|
358
|
+
CstyleBehaviour.recordMaybeInsert(editor, session, "{");
|
359
|
+
return {
|
360
|
+
text: '{',
|
361
|
+
selection: [1, 1]
|
362
|
+
};
|
363
|
+
}
|
336
364
|
}
|
337
365
|
} else if (text == '}') {
|
338
|
-
var cursor = editor.getCursorPosition();
|
339
|
-
var line = session.doc.getLine(cursor.row);
|
340
366
|
var rightChar = line.substring(cursor.column, cursor.column + 1);
|
341
367
|
if (rightChar == '}') {
|
342
368
|
var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});
|
343
|
-
if (matching !== null) {
|
369
|
+
if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {
|
370
|
+
CstyleBehaviour.popAutoInsertedClosing();
|
344
371
|
return {
|
345
372
|
text: '',
|
346
373
|
selection: [1, 1]
|
347
374
|
};
|
348
375
|
}
|
349
376
|
}
|
350
|
-
} else if (text == "\n") {
|
351
|
-
var
|
352
|
-
|
377
|
+
} else if (text == "\n" || text == "\r\n") {
|
378
|
+
var closing = "";
|
379
|
+
if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {
|
380
|
+
closing = lang.stringRepeat("}", maybeInsertedBrackets);
|
381
|
+
CstyleBehaviour.clearMaybeInsertedClosing();
|
382
|
+
}
|
353
383
|
var rightChar = line.substring(cursor.column, cursor.column + 1);
|
354
|
-
if (rightChar
|
355
|
-
var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column
|
384
|
+
if (rightChar === '}') {
|
385
|
+
var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');
|
356
386
|
if (!openBracePos)
|
357
387
|
return null;
|
358
|
-
|
359
|
-
|
360
|
-
var next_indent = this.$getIndent(
|
361
|
-
|
362
|
-
return
|
363
|
-
text: '\n' + indent + '\n' + next_indent,
|
364
|
-
selection: [1, indent.length, 1, indent.length]
|
365
|
-
};
|
388
|
+
var next_indent = this.$getIndent(session.getLine(openBracePos.row));
|
389
|
+
} else if (closing) {
|
390
|
+
var next_indent = this.$getIndent(line);
|
391
|
+
} else {
|
392
|
+
return;
|
366
393
|
}
|
394
|
+
var indent = next_indent + session.getTabString();
|
395
|
+
|
396
|
+
return {
|
397
|
+
text: '\n' + indent + '\n' + next_indent + closing,
|
398
|
+
selection: [1, indent.length, 1, indent.length]
|
399
|
+
};
|
400
|
+
} else {
|
401
|
+
CstyleBehaviour.clearMaybeInsertedClosing();
|
367
402
|
}
|
368
403
|
});
|
369
404
|
|
@@ -375,6 +410,8 @@ var CstyleBehaviour = function () {
|
|
375
410
|
if (rightChar == '}') {
|
376
411
|
range.end.column++;
|
377
412
|
return range;
|
413
|
+
} else {
|
414
|
+
maybeInsertedBrackets--;
|
378
415
|
}
|
379
416
|
}
|
380
417
|
});
|
@@ -383,12 +420,13 @@ var CstyleBehaviour = function () {
|
|
383
420
|
if (text == '(') {
|
384
421
|
var selection = editor.getSelectionRange();
|
385
422
|
var selected = session.doc.getTextRange(selection);
|
386
|
-
if (selected !== "") {
|
423
|
+
if (selected !== "" && editor.getWrapBehavioursEnabled()) {
|
387
424
|
return {
|
388
425
|
text: '(' + selected + ')',
|
389
426
|
selection: false
|
390
427
|
};
|
391
|
-
} else {
|
428
|
+
} else if (CstyleBehaviour.isSaneInsertion(editor, session)) {
|
429
|
+
CstyleBehaviour.recordAutoInsert(editor, session, ")");
|
392
430
|
return {
|
393
431
|
text: '()',
|
394
432
|
selection: [1, 1]
|
@@ -400,7 +438,8 @@ var CstyleBehaviour = function () {
|
|
400
438
|
var rightChar = line.substring(cursor.column, cursor.column + 1);
|
401
439
|
if (rightChar == ')') {
|
402
440
|
var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});
|
403
|
-
if (matching !== null) {
|
441
|
+
if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {
|
442
|
+
CstyleBehaviour.popAutoInsertedClosing();
|
404
443
|
return {
|
405
444
|
text: '',
|
406
445
|
selection: [1, 1]
|
@@ -426,12 +465,13 @@ var CstyleBehaviour = function () {
|
|
426
465
|
if (text == '[') {
|
427
466
|
var selection = editor.getSelectionRange();
|
428
467
|
var selected = session.doc.getTextRange(selection);
|
429
|
-
if (selected !== "") {
|
468
|
+
if (selected !== "" && editor.getWrapBehavioursEnabled()) {
|
430
469
|
return {
|
431
470
|
text: '[' + selected + ']',
|
432
471
|
selection: false
|
433
472
|
};
|
434
|
-
} else {
|
473
|
+
} else if (CstyleBehaviour.isSaneInsertion(editor, session)) {
|
474
|
+
CstyleBehaviour.recordAutoInsert(editor, session, "]");
|
435
475
|
return {
|
436
476
|
text: '[]',
|
437
477
|
selection: [1, 1]
|
@@ -443,7 +483,8 @@ var CstyleBehaviour = function () {
|
|
443
483
|
var rightChar = line.substring(cursor.column, cursor.column + 1);
|
444
484
|
if (rightChar == ']') {
|
445
485
|
var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});
|
446
|
-
if (matching !== null) {
|
486
|
+
if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {
|
487
|
+
CstyleBehaviour.popAutoInsertedClosing();
|
447
488
|
return {
|
448
489
|
text: '',
|
449
490
|
selection: [1, 1]
|
@@ -470,7 +511,7 @@ var CstyleBehaviour = function () {
|
|
470
511
|
var quote = text;
|
471
512
|
var selection = editor.getSelectionRange();
|
472
513
|
var selected = session.doc.getTextRange(selection);
|
473
|
-
if (selected !== "") {
|
514
|
+
if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) {
|
474
515
|
return {
|
475
516
|
text: quote + selected + quote,
|
476
517
|
selection: false
|
@@ -479,13 +520,9 @@ var CstyleBehaviour = function () {
|
|
479
520
|
var cursor = editor.getCursorPosition();
|
480
521
|
var line = session.doc.getLine(cursor.row);
|
481
522
|
var leftChar = line.substring(cursor.column-1, cursor.column);
|
482
|
-
|
483
|
-
// We're escaped.
|
484
523
|
if (leftChar == '\\') {
|
485
524
|
return null;
|
486
525
|
}
|
487
|
-
|
488
|
-
// Find what token we're inside.
|
489
526
|
var tokens = session.getTokens(selection.start.row);
|
490
527
|
var col = 0, token;
|
491
528
|
var quotepos = -1; // Track whether we're inside an open quote.
|
@@ -502,15 +539,14 @@ var CstyleBehaviour = function () {
|
|
502
539
|
}
|
503
540
|
col += tokens[x].value.length;
|
504
541
|
}
|
505
|
-
|
506
|
-
// Try and be smart about when we auto insert.
|
507
542
|
if (!token || (quotepos < 0 && token.type !== "comment" && (token.type !== "string" || ((selection.start.column !== token.value.length+col-1) && token.value.lastIndexOf(quote) === token.value.length-1)))) {
|
543
|
+
if (!CstyleBehaviour.isSaneInsertion(editor, session))
|
544
|
+
return;
|
508
545
|
return {
|
509
546
|
text: quote + quote,
|
510
547
|
selection: [1,1]
|
511
548
|
};
|
512
549
|
} else if (token && token.type === "string") {
|
513
|
-
// Ignore input and move right one if we're typing over the closing quote.
|
514
550
|
var rightChar = line.substring(cursor.column, cursor.column + 1);
|
515
551
|
if (rightChar == quote) {
|
516
552
|
return {
|
@@ -528,7 +564,7 @@ var CstyleBehaviour = function () {
|
|
528
564
|
if (!range.isMultiLine() && (selected == '"' || selected == "'")) {
|
529
565
|
var line = session.doc.getLine(range.start.row);
|
530
566
|
var rightChar = line.substring(range.start.column + 1, range.start.column + 2);
|
531
|
-
if (rightChar ==
|
567
|
+
if (rightChar == selected) {
|
532
568
|
range.end.column++;
|
533
569
|
return range;
|
534
570
|
}
|
@@ -549,15 +585,24 @@ var oop = require("../../lib/oop");
|
|
549
585
|
var Range = require("../../range").Range;
|
550
586
|
var BaseFoldMode = require("./fold_mode").FoldMode;
|
551
587
|
|
552
|
-
var FoldMode = exports.FoldMode = function() {
|
588
|
+
var FoldMode = exports.FoldMode = function(commentRegex) {
|
589
|
+
if (commentRegex) {
|
590
|
+
this.foldingStartMarker = new RegExp(
|
591
|
+
this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
|
592
|
+
);
|
593
|
+
this.foldingStopMarker = new RegExp(
|
594
|
+
this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
|
595
|
+
);
|
596
|
+
}
|
597
|
+
};
|
553
598
|
oop.inherits(FoldMode, BaseFoldMode);
|
554
599
|
|
555
600
|
(function() {
|
556
601
|
|
557
602
|
this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
|
558
603
|
this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
|
559
|
-
|
560
|
-
this.getFoldWidgetRange = function(session, foldStyle, row) {
|
604
|
+
|
605
|
+
this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
|
561
606
|
var line = session.getLine(row);
|
562
607
|
var match = line.match(this.foldingStartMarker);
|
563
608
|
if (match) {
|
@@ -565,115 +610,63 @@ oop.inherits(FoldMode, BaseFoldMode);
|
|
565
610
|
|
566
611
|
if (match[1])
|
567
612
|
return this.openingBracketBlock(session, match[1], row, i);
|
568
|
-
|
569
|
-
var range = session.getCommentFoldRange(row, i + match[0].length);
|
570
|
-
|
613
|
+
|
614
|
+
var range = session.getCommentFoldRange(row, i + match[0].length, 1);
|
615
|
+
|
616
|
+
if (range && !range.isMultiLine()) {
|
617
|
+
if (forceMultiline) {
|
618
|
+
range = this.getSectionRange(session, row);
|
619
|
+
} else if (foldStyle != "all")
|
620
|
+
range = null;
|
621
|
+
}
|
622
|
+
|
571
623
|
return range;
|
572
624
|
}
|
573
625
|
|
574
|
-
if (foldStyle
|
626
|
+
if (foldStyle === "markbegin")
|
575
627
|
return;
|
576
|
-
|
628
|
+
|
577
629
|
var match = line.match(this.foldingStopMarker);
|
578
630
|
if (match) {
|
579
631
|
var i = match.index + match[0].length;
|
580
632
|
|
581
|
-
if (match[
|
582
|
-
|
583
|
-
range.end.column -= 2;
|
584
|
-
return range;
|
585
|
-
}
|
586
|
-
|
587
|
-
var end = {row: row, column: i};
|
588
|
-
var start = session.$findOpeningBracket(match[1], end);
|
589
|
-
|
590
|
-
if (!start)
|
591
|
-
return;
|
592
|
-
|
593
|
-
start.column++;
|
594
|
-
end.column--;
|
633
|
+
if (match[1])
|
634
|
+
return this.closingBracketBlock(session, match[1], row, i);
|
595
635
|
|
596
|
-
return
|
636
|
+
return session.getCommentFoldRange(row, i, -1);
|
597
637
|
}
|
598
638
|
};
|
599
639
|
|
600
|
-
|
601
|
-
|
602
|
-
});
|
603
|
-
|
604
|
-
define('ace/mode/folding/fold_mode', ['require', 'exports', 'module' , 'ace/range'], function(require, exports, module) {
|
605
|
-
|
606
|
-
|
607
|
-
var Range = require("../../range").Range;
|
608
|
-
|
609
|
-
var FoldMode = exports.FoldMode = function() {};
|
610
|
-
|
611
|
-
(function() {
|
612
|
-
|
613
|
-
this.foldingStartMarker = null;
|
614
|
-
this.foldingStopMarker = null;
|
615
|
-
|
616
|
-
// must return "" if there's no fold, to enable caching
|
617
|
-
this.getFoldWidget = function(session, foldStyle, row) {
|
618
|
-
var line = session.getLine(row);
|
619
|
-
if (this.foldingStartMarker.test(line))
|
620
|
-
return "start";
|
621
|
-
if (foldStyle == "markbeginend"
|
622
|
-
&& this.foldingStopMarker
|
623
|
-
&& this.foldingStopMarker.test(line))
|
624
|
-
return "end";
|
625
|
-
return "";
|
626
|
-
};
|
627
|
-
|
628
|
-
this.getFoldWidgetRange = function(session, foldStyle, row) {
|
629
|
-
return null;
|
630
|
-
};
|
631
|
-
|
632
|
-
this.indentationBlock = function(session, row, column) {
|
633
|
-
var re = /\S/;
|
640
|
+
this.getSectionRange = function(session, row) {
|
634
641
|
var line = session.getLine(row);
|
635
|
-
var
|
636
|
-
if (startLevel == -1)
|
637
|
-
return;
|
638
|
-
|
639
|
-
var startColumn = column || line.length;
|
640
|
-
var maxRow = session.getLength();
|
642
|
+
var startIndent = line.search(/\S/);
|
641
643
|
var startRow = row;
|
644
|
+
var startColumn = line.length;
|
645
|
+
row = row + 1;
|
642
646
|
var endRow = row;
|
643
|
-
|
647
|
+
var maxRow = session.getLength();
|
644
648
|
while (++row < maxRow) {
|
645
|
-
|
646
|
-
|
647
|
-
if (
|
649
|
+
line = session.getLine(row);
|
650
|
+
var indent = line.search(/\S/);
|
651
|
+
if (indent === -1)
|
648
652
|
continue;
|
649
|
-
|
650
|
-
if (level <= startLevel)
|
653
|
+
if (startIndent > indent)
|
651
654
|
break;
|
652
|
-
|
655
|
+
var subRange = this.getFoldWidgetRange(session, "all", row);
|
656
|
+
|
657
|
+
if (subRange) {
|
658
|
+
if (subRange.start.row <= startRow) {
|
659
|
+
break;
|
660
|
+
} else if (subRange.isMultiLine()) {
|
661
|
+
row = subRange.end.row;
|
662
|
+
} else if (startIndent == indent) {
|
663
|
+
break;
|
664
|
+
}
|
665
|
+
}
|
653
666
|
endRow = row;
|
654
667
|
}
|
655
|
-
|
656
|
-
|
657
|
-
var endColumn = session.getLine(endRow).length;
|
658
|
-
return new Range(startRow, startColumn, endRow, endColumn);
|
659
|
-
}
|
660
|
-
};
|
661
|
-
|
662
|
-
this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
|
663
|
-
var start = {row: row, column: column + 1};
|
664
|
-
var end = session.$findClosingBracket(bracket, start, typeRe);
|
665
|
-
if (!end)
|
666
|
-
return;
|
667
|
-
|
668
|
-
var fw = session.foldWidgets[end.row];
|
669
|
-
if (fw == null)
|
670
|
-
fw = this.getFoldWidget(session, end.row);
|
671
|
-
|
672
|
-
if (fw == "start" && end.row > start.row) {
|
673
|
-
end.row --;
|
674
|
-
end.column = session.getLine(end.row).length;
|
675
|
-
}
|
676
|
-
return Range.fromPoints(start, end);
|
668
|
+
|
669
|
+
return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
|
677
670
|
};
|
678
671
|
|
679
672
|
}).call(FoldMode.prototype);
|