ace-rails-ap 4.0.1 → 4.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ace/rails/version.rb +1 -1
  3. data/vendor/assets/javascripts/ace/ace.js +187 -175
  4. data/vendor/assets/javascripts/ace/ext-chromevox.js +5 -5
  5. data/vendor/assets/javascripts/ace/ext-emmet.js +4 -5
  6. data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +1 -1
  7. data/vendor/assets/javascripts/ace/ext-language_tools.js +23 -22
  8. data/vendor/assets/javascripts/ace/ext-modelist.js +11 -5
  9. data/vendor/assets/javascripts/ace/ext-settings_menu.js +13 -7
  10. data/vendor/assets/javascripts/ace/ext-textarea.js +0 -72
  11. data/vendor/assets/javascripts/ace/keybinding-emacs.js +3 -2
  12. data/vendor/assets/javascripts/ace/keybinding-vim.js +23 -18
  13. data/vendor/assets/javascripts/ace/mode-abap.js +3 -19
  14. data/vendor/assets/javascripts/ace/mode-c_cpp.js +21 -29
  15. data/vendor/assets/javascripts/ace/mode-cirru.js +15 -15
  16. data/vendor/assets/javascripts/ace/mode-coffee.js +3 -22
  17. data/vendor/assets/javascripts/ace/mode-coldfusion.js +40 -54
  18. data/vendor/assets/javascripts/ace/mode-csharp.js +6 -0
  19. data/vendor/assets/javascripts/ace/mode-css.js +3 -3
  20. data/vendor/assets/javascripts/ace/mode-curly.js +40 -54
  21. data/vendor/assets/javascripts/ace/mode-dart.js +21 -29
  22. data/vendor/assets/javascripts/ace/mode-django.js +40 -54
  23. data/vendor/assets/javascripts/ace/mode-eiffel.js +2 -2
  24. data/vendor/assets/javascripts/ace/mode-ejs.js +41 -55
  25. data/vendor/assets/javascripts/ace/mode-elm.js +3 -3
  26. data/vendor/assets/javascripts/ace/mode-ftl.js +36 -50
  27. data/vendor/assets/javascripts/ace/mode-gherkin.js +6 -6
  28. data/vendor/assets/javascripts/ace/mode-glsl.js +21 -29
  29. data/vendor/assets/javascripts/ace/mode-gobstones.js +1273 -0
  30. data/vendor/assets/javascripts/ace/mode-golang.js +2 -2
  31. data/vendor/assets/javascripts/ace/mode-groovy.js +33 -47
  32. data/vendor/assets/javascripts/ace/mode-haml.js +981 -27
  33. data/vendor/assets/javascripts/ace/mode-handlebars.js +40 -54
  34. data/vendor/assets/javascripts/ace/mode-html.js +40 -54
  35. data/vendor/assets/javascripts/ace/mode-html_elixir.js +40 -54
  36. data/vendor/assets/javascripts/ace/mode-html_ruby.js +41 -55
  37. data/vendor/assets/javascripts/ace/mode-jade.js +83 -189
  38. data/vendor/assets/javascripts/ace/mode-java.js +35 -49
  39. data/vendor/assets/javascripts/ace/mode-javascript.js +33 -47
  40. data/vendor/assets/javascripts/ace/mode-jsp.js +38 -52
  41. data/vendor/assets/javascripts/ace/mode-lean.js +1 -1
  42. data/vendor/assets/javascripts/ace/mode-less.js +368 -136
  43. data/vendor/assets/javascripts/ace/mode-liquid.js +36 -50
  44. data/vendor/assets/javascripts/ace/mode-livescript.js +3 -18
  45. data/vendor/assets/javascripts/ace/mode-logiql.js +11 -11
  46. data/vendor/assets/javascripts/ace/mode-lua.js +1 -4
  47. data/vendor/assets/javascripts/ace/mode-luapage.js +41 -58
  48. data/vendor/assets/javascripts/ace/mode-markdown.js +40 -54
  49. data/vendor/assets/javascripts/ace/mode-mask.js +36 -50
  50. data/vendor/assets/javascripts/ace/mode-matlab.js +1 -1
  51. data/vendor/assets/javascripts/ace/mode-mel.js +1 -1
  52. data/vendor/assets/javascripts/ace/mode-nix.js +21 -29
  53. data/vendor/assets/javascripts/ace/mode-nsis.js +304 -0
  54. data/vendor/assets/javascripts/ace/mode-objectivec.js +21 -29
  55. data/vendor/assets/javascripts/ace/mode-pascal.js +1 -1
  56. data/vendor/assets/javascripts/ace/mode-pgsql.js +33 -47
  57. data/vendor/assets/javascripts/ace/mode-php.js +42 -57
  58. data/vendor/assets/javascripts/ace/mode-powershell.js +86 -57
  59. data/vendor/assets/javascripts/ace/mode-praat.js +1 -1
  60. data/vendor/assets/javascripts/ace/mode-protobuf.js +21 -29
  61. data/vendor/assets/javascripts/ace/mode-r.js +20 -20
  62. data/vendor/assets/javascripts/ace/mode-razor.js +3136 -0
  63. data/vendor/assets/javascripts/ace/mode-rdoc.js +20 -20
  64. data/vendor/assets/javascripts/ace/mode-rhtml.js +60 -74
  65. data/vendor/assets/javascripts/ace/mode-rst.js +249 -0
  66. data/vendor/assets/javascripts/ace/mode-ruby.js +1 -1
  67. data/vendor/assets/javascripts/ace/mode-rust.js +4 -8
  68. data/vendor/assets/javascripts/ace/mode-scala.js +33 -47
  69. data/vendor/assets/javascripts/ace/mode-sjs.js +42 -56
  70. data/vendor/assets/javascripts/ace/mode-smarty.js +40 -54
  71. data/vendor/assets/javascripts/ace/mode-soy_template.js +41 -55
  72. data/vendor/assets/javascripts/ace/mode-sqlserver.js +3 -3
  73. data/vendor/assets/javascripts/ace/mode-stylus.js +1 -1
  74. data/vendor/assets/javascripts/ace/mode-svg.js +34 -48
  75. data/vendor/assets/javascripts/ace/mode-swift.js +5 -5
  76. data/vendor/assets/javascripts/ace/mode-tex.js +24 -24
  77. data/vendor/assets/javascripts/ace/mode-twig.js +40 -54
  78. data/vendor/assets/javascripts/ace/mode-typescript.js +33 -47
  79. data/vendor/assets/javascripts/ace/mode-velocity.js +40 -54
  80. data/vendor/assets/javascripts/ace/mode-vhdl.js +2 -2
  81. data/vendor/assets/javascripts/ace/mode-wollok.js +1256 -0
  82. data/vendor/assets/javascripts/ace/mode-xml.js +1 -1
  83. data/vendor/assets/javascripts/ace/worker-coffee.js +1 -1
  84. data/vendor/assets/javascripts/ace/worker-css.js +1 -1
  85. data/vendor/assets/javascripts/ace/worker-html.js +2 -2
  86. data/vendor/assets/javascripts/ace/worker-javascript.js +1 -1
  87. data/vendor/assets/javascripts/ace/worker-json.js +1 -1
  88. data/vendor/assets/javascripts/ace/worker-lua.js +1 -1
  89. data/vendor/assets/javascripts/ace/worker-php.js +2 -4
  90. data/vendor/assets/javascripts/ace/worker-xml.js +1 -1
  91. data/vendor/assets/javascripts/ace/worker-xquery.js +1 -1
  92. metadata +8 -3
@@ -0,0 +1,304 @@
1
+ define("ace/mode/nsis_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
2
+ "use strict";
3
+
4
+ var oop = require("../lib/oop");
5
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
6
+
7
+ var NSISHighlightRules = function() {
8
+
9
+ this.$rules = {
10
+ start: [{
11
+ token: "keyword.compiler.nsis",
12
+ regex: /(?:\b|^\s*)\!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\b/,
13
+ caseInsensitive: true
14
+ }, {
15
+ token: "keyword.command.nsis",
16
+ regex: /(?:\b|^\s*)(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetPluginUnload|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegStr|WriteUninstaller|XPStyle)\b/,
17
+ caseInsensitive: true
18
+ }, {
19
+ token: "keyword.control.nsis",
20
+ regex: /(?:\b|^\s*)\!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/,
21
+ caseInsensitive: true
22
+ }, {
23
+ token: "keyword.plugin.nsis",
24
+ regex: /(?:\b|^\s*)\w+\:\:\w+/,
25
+ caseInsensitive: true
26
+ }, {
27
+ token: "keyword.operator.comparison.nsis",
28
+ regex: /[!<>]?=|<>|<|>/
29
+ }, {
30
+ token: "support.function.nsis",
31
+ regex: /(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|SubSection|SubSectionEnd|PageEx|PageExEnd)\b/,
32
+ caseInsensitive: true
33
+ }, {
34
+ token: "support.library.nsis",
35
+ regex: /\${[\w]+}/
36
+ }, {
37
+ token: "constant.nsis",
38
+ regex: /(?:\b|^\s*)(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/,
39
+ caseInsensitive: true
40
+ }, {
41
+ token: "constant.library.nsis",
42
+ regex: /\${(?:AtLeastServicePack|AtLeastWin7|AtLeastWin8|AtLeastWin10|AtLeastWin95|AtLeastWin98|AtLeastWin2000|AtLeastWin2003|AtLeastWin2008|AtLeastWin2008R2|AtLeastWinME|AtLeastWinNT4|AtLeastWinVista|AtLeastWinXP|AtMostServicePack|AtMostWin7|AtMostWin8|AtMostWin10|AtMostWin95|AtMostWin98|AtMostWin2000|AtMostWin2003|AtMostWin2008|AtMostWin2008R2|AtMostWinME|AtMostWinNT4|AtMostWinVista|AtMostWinXP|IsNT|IsServer|IsServicePack|IsWin7|IsWin8|IsWin10|IsWin95|IsWin98|IsWin2000|IsWin2003|IsWin2008|IsWin2008R2|IsWinME|IsWinNT4|IsWinVista|IsWinXP)}/
43
+ }, {
44
+ token: "constant.language.boolean.true.nsis",
45
+ regex: /\b(?:true|on)\b/
46
+ }, {
47
+ token: "constant.language.boolean.false.nsis",
48
+ regex: /\b(?:false|off)\b/
49
+ }, {
50
+ token: "constant.language.option.nsis",
51
+ regex: /(?:\b|^\s*)(?:(?:un\.)?components|(?:un\.)?custom|(?:un\.)?directory|(?:un\.)?instfiles|(?:un\.)?license|uninstConfirm|admin|all|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|zlib)\b/,
52
+ caseInsensitive: true
53
+ }, {
54
+ token: "constant.language.slash-option.nsis",
55
+ regex: /\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING\=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID\=|ITALIC|LANG\=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname\=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/,
56
+ caseInsensitive: true
57
+ }, {
58
+ token: "constant.numeric.nsis",
59
+ regex: /\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\.[0-9]+)?)\b/
60
+ }, {
61
+ token: "entity.name.function.nsis",
62
+ regex: /\${[\w]+}/
63
+ }, {
64
+ token: "storage.type.function.nsis",
65
+ regex: /\$[\w]+/
66
+ }, {
67
+ token: "punctuation.definition.string.begin.nsis",
68
+ regex: /`/,
69
+ push: [{
70
+ token: "punctuation.definition.string.end.nsis",
71
+ regex: /`/,
72
+ next: "pop"
73
+ }, {
74
+ token: "constant.character.escape.nsis",
75
+ regex: /\$\\./
76
+ }, {
77
+ defaultToken: "string.quoted.back.nsis"
78
+ }]
79
+ }, {
80
+ token: "punctuation.definition.string.begin.nsis",
81
+ regex: /"/,
82
+ push: [{
83
+ token: "punctuation.definition.string.end.nsis",
84
+ regex: /"/,
85
+ next: "pop"
86
+ }, {
87
+ token: "constant.character.escape.nsis",
88
+ regex: /\$\\./
89
+ }, {
90
+ defaultToken: "string.quoted.double.nsis"
91
+ }]
92
+ }, {
93
+ token: "punctuation.definition.string.begin.nsis",
94
+ regex: /'/,
95
+ push: [{
96
+ token: "punctuation.definition.string.end.nsis",
97
+ regex: /'/,
98
+ next: "pop"
99
+ }, {
100
+ token: "constant.character.escape.nsis",
101
+ regex: /\$\\./
102
+ }, {
103
+ defaultToken: "string.quoted.single.nsis"
104
+ }]
105
+ }, {
106
+ token: [
107
+ "punctuation.definition.comment.nsis",
108
+ "comment.line.nsis"
109
+ ],
110
+ regex: /(;|#)(.*$)/
111
+ }, {
112
+ token: "punctuation.definition.comment.nsis",
113
+ regex: /\/\*/,
114
+ push: [{
115
+ token: "punctuation.definition.comment.nsis",
116
+ regex: /\*\//,
117
+ next: "pop"
118
+ }, {
119
+ defaultToken: "comment.block.nsis"
120
+ }]
121
+ }, {
122
+ token: "text",
123
+ regex: /(?:\!include|\!insertmacro)\b/
124
+ }]
125
+ };
126
+
127
+ this.normalizeRules();
128
+ };
129
+
130
+ NSISHighlightRules.metaData = {
131
+ comment: "\n\ttodo: - highlight functions\n\t",
132
+ fileTypes: ["nsi", "nsh"],
133
+ name: "NSIS",
134
+ scopeName: "source.nsis"
135
+ };
136
+
137
+
138
+ oop.inherits(NSISHighlightRules, TextHighlightRules);
139
+
140
+ exports.NSISHighlightRules = NSISHighlightRules;
141
+ });
142
+
143
+ define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) {
144
+ "use strict";
145
+
146
+ var oop = require("../../lib/oop");
147
+ var Range = require("../../range").Range;
148
+ var BaseFoldMode = require("./fold_mode").FoldMode;
149
+
150
+ var FoldMode = exports.FoldMode = function(commentRegex) {
151
+ if (commentRegex) {
152
+ this.foldingStartMarker = new RegExp(
153
+ this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)
154
+ );
155
+ this.foldingStopMarker = new RegExp(
156
+ this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)
157
+ );
158
+ }
159
+ };
160
+ oop.inherits(FoldMode, BaseFoldMode);
161
+
162
+ (function() {
163
+
164
+ this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/;
165
+ this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/;
166
+ this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/;
167
+ this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/;
168
+ this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/;
169
+ this._getFoldWidgetBase = this.getFoldWidget;
170
+ this.getFoldWidget = function(session, foldStyle, row) {
171
+ var line = session.getLine(row);
172
+
173
+ if (this.singleLineBlockCommentRe.test(line)) {
174
+ if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line))
175
+ return "";
176
+ }
177
+
178
+ var fw = this._getFoldWidgetBase(session, foldStyle, row);
179
+
180
+ if (!fw && this.startRegionRe.test(line))
181
+ return "start"; // lineCommentRegionStart
182
+
183
+ return fw;
184
+ };
185
+
186
+ this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) {
187
+ var line = session.getLine(row);
188
+
189
+ if (this.startRegionRe.test(line))
190
+ return this.getCommentRegionBlock(session, line, row);
191
+
192
+ var match = line.match(this.foldingStartMarker);
193
+ if (match) {
194
+ var i = match.index;
195
+
196
+ if (match[1])
197
+ return this.openingBracketBlock(session, match[1], row, i);
198
+
199
+ var range = session.getCommentFoldRange(row, i + match[0].length, 1);
200
+
201
+ if (range && !range.isMultiLine()) {
202
+ if (forceMultiline) {
203
+ range = this.getSectionRange(session, row);
204
+ } else if (foldStyle != "all")
205
+ range = null;
206
+ }
207
+
208
+ return range;
209
+ }
210
+
211
+ if (foldStyle === "markbegin")
212
+ return;
213
+
214
+ var match = line.match(this.foldingStopMarker);
215
+ if (match) {
216
+ var i = match.index + match[0].length;
217
+
218
+ if (match[1])
219
+ return this.closingBracketBlock(session, match[1], row, i);
220
+
221
+ return session.getCommentFoldRange(row, i, -1);
222
+ }
223
+ };
224
+
225
+ this.getSectionRange = function(session, row) {
226
+ var line = session.getLine(row);
227
+ var startIndent = line.search(/\S/);
228
+ var startRow = row;
229
+ var startColumn = line.length;
230
+ row = row + 1;
231
+ var endRow = row;
232
+ var maxRow = session.getLength();
233
+ while (++row < maxRow) {
234
+ line = session.getLine(row);
235
+ var indent = line.search(/\S/);
236
+ if (indent === -1)
237
+ continue;
238
+ if (startIndent > indent)
239
+ break;
240
+ var subRange = this.getFoldWidgetRange(session, "all", row);
241
+
242
+ if (subRange) {
243
+ if (subRange.start.row <= startRow) {
244
+ break;
245
+ } else if (subRange.isMultiLine()) {
246
+ row = subRange.end.row;
247
+ } else if (startIndent == indent) {
248
+ break;
249
+ }
250
+ }
251
+ endRow = row;
252
+ }
253
+
254
+ return new Range(startRow, startColumn, endRow, session.getLine(endRow).length);
255
+ };
256
+ this.getCommentRegionBlock = function(session, line, row) {
257
+ var startColumn = line.search(/\s*$/);
258
+ var maxRow = session.getLength();
259
+ var startRow = row;
260
+
261
+ var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/;
262
+ var depth = 1;
263
+ while (++row < maxRow) {
264
+ line = session.getLine(row);
265
+ var m = re.exec(line);
266
+ if (!m) continue;
267
+ if (m[1]) depth--;
268
+ else depth++;
269
+
270
+ if (!depth) break;
271
+ }
272
+
273
+ var endRow = row;
274
+ if (endRow > startRow) {
275
+ return new Range(startRow, startColumn, endRow, line.length);
276
+ }
277
+ };
278
+
279
+ }).call(FoldMode.prototype);
280
+
281
+ });
282
+
283
+ define("ace/mode/nsis",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nsis_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) {
284
+ "use strict";
285
+
286
+ var oop = require("../lib/oop");
287
+ var TextMode = require("./text").Mode;
288
+ var NSISHighlightRules = require("./nsis_highlight_rules").NSISHighlightRules;
289
+ var FoldMode = require("./folding/cstyle").FoldMode;
290
+
291
+ var Mode = function() {
292
+ this.HighlightRules = NSISHighlightRules;
293
+ this.foldingRules = new FoldMode();
294
+ };
295
+ oop.inherits(Mode, TextMode);
296
+
297
+ (function() {
298
+ this.lineCommentStart = [";", "#"];
299
+ this.blockComment = {start: "/*", end: "*/"};
300
+ this.$id = "ace/mode/nsis";
301
+ }).call(Mode.prototype);
302
+
303
+ exports.Mode = Mode;
304
+ });
@@ -94,6 +94,7 @@ var c_cppHighlightRules = function() {
94
94
  }, "identifier");
95
95
 
96
96
  var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\d\\$_\u00a1-\uffff]*\\b";
97
+ var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source;
97
98
 
98
99
  this.$rules = {
99
100
  "start" : [
@@ -112,19 +113,27 @@ var c_cppHighlightRules = function() {
112
113
  regex : "\\/\\*",
113
114
  next : "comment"
114
115
  }, {
115
- token : "string", // single line
116
- regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
116
+ token : "string", // character
117
+ regex : "'(?:" + escapeRe + "|.)'"
117
118
  }, {
118
- token : "string", // multi line string start
119
- regex : '["].*\\\\$',
120
- next : "qqstring"
119
+ token : "string.start",
120
+ regex : '"',
121
+ stateName: "qqstring",
122
+ next: [
123
+ { token: "string", regex: /\\\s*$/, next: "qqstring" },
124
+ { token: "constant.language.escape", regex: escapeRe },
125
+ { token: "constant.language.escape", regex: /%[^'"\\]/ },
126
+ { token: "string.end", regex: '"|$', next: "start" },
127
+ { defaultToken: "string"}
128
+ ]
121
129
  }, {
122
- token : "string", // single line
123
- regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"
124
- }, {
125
- token : "string", // multi line string start
126
- regex : "['].*\\\\$",
127
- next : "qstring"
130
+ token : "string.start",
131
+ regex : 'R"\\(',
132
+ stateName: "rawString",
133
+ next: [
134
+ { token: "string.end", regex: '\\)"', next: "start" },
135
+ { defaultToken: "string"}
136
+ ]
128
137
  }, {
129
138
  token : "constant.numeric", // hex
130
139
  regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"
@@ -184,24 +193,6 @@ var c_cppHighlightRules = function() {
184
193
  defaultToken: "comment"
185
194
  }
186
195
  ],
187
- "qqstring" : [
188
- {
189
- token : "string",
190
- regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"',
191
- next : "start"
192
- }, {
193
- defaultToken : "string"
194
- }
195
- ],
196
- "qstring" : [
197
- {
198
- token : "string",
199
- regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'",
200
- next : "start"
201
- }, {
202
- defaultToken : "string"
203
- }
204
- ],
205
196
  "directive" : [
206
197
  {
207
198
  token : "constant.other.multiline",
@@ -236,6 +227,7 @@ var c_cppHighlightRules = function() {
236
227
 
237
228
  this.embedRules(DocCommentHighlightRules, "doc-",
238
229
  [ DocCommentHighlightRules.getEndRule("start") ]);
230
+ this.normalizeRules();
239
231
  };
240
232
 
241
233
  oop.inherits(c_cppHighlightRules, TextHighlightRules);
@@ -59,7 +59,7 @@ var PascalHighlightRules = function() {
59
59
  { token: 'punctuation.definition.string.end.pascal',
60
60
  regex: '"',
61
61
  next: 'pop' },
62
- { defaultToken: 'string.quoted.double.pascal' } ],
62
+ { defaultToken: 'string.quoted.double.pascal' } ]
63
63
  },
64
64
  { token: 'punctuation.definition.string.begin.pascal',
65
65
  regex: '\'',
@@ -444,25 +444,17 @@ var JavaScriptHighlightRules = function(options) {
444
444
 
445
445
  var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex
446
446
  "u[0-9a-fA-F]{4}|" + // unicode
447
+ "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode
447
448
  "[0-2][0-7]{0,2}|" + // oct
448
- "3[0-6][0-7]?|" + // oct
449
- "37[0-7]?|" + // oct
449
+ "3[0-7][0-7]?|" + // oct
450
450
  "[4-7][0-7]?|" + //oct
451
451
  ".)";
452
452
 
453
453
  this.$rules = {
454
454
  "no_regex" : [
455
- {
456
- token : "comment",
457
- regex : "\\/\\/",
458
- next : "line_comment"
459
- },
460
455
  DocCommentHighlightRules.getStartRule("doc-start"),
456
+ comments("no_regex"),
461
457
  {
462
- token : "comment", // multi line comment
463
- regex : /\/\*/,
464
- next : "comment"
465
- }, {
466
458
  token : "string",
467
459
  regex : "'(?=.)",
468
460
  next : "qstring"
@@ -472,10 +464,10 @@ var JavaScriptHighlightRules = function(options) {
472
464
  next : "qqstring"
473
465
  }, {
474
466
  token : "constant.numeric", // hex
475
- regex : /0[xX][0-9a-fA-F]+\b/
467
+ regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/
476
468
  }, {
477
469
  token : "constant.numeric", // float
478
- regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
470
+ regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/
479
471
  }, {
480
472
  token : [
481
473
  "storage.type", "punctuation.operator", "support.function",
@@ -543,7 +535,7 @@ var JavaScriptHighlightRules = function(options) {
543
535
  next : "property"
544
536
  }, {
545
537
  token : "keyword.operator",
546
- regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,
538
+ regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,
547
539
  next : "start"
548
540
  }, {
549
541
  token : "punctuation.operator",
@@ -595,15 +587,8 @@ var JavaScriptHighlightRules = function(options) {
595
587
  ],
596
588
  "start": [
597
589
  DocCommentHighlightRules.getStartRule("doc-start"),
590
+ comments("start"),
598
591
  {
599
- token : "comment", // multi line comment
600
- regex : "\\/\\*",
601
- next : "comment_regex_allowed"
602
- }, {
603
- token : "comment",
604
- regex : "\\/\\/",
605
- next : "line_comment_regex_allowed"
606
- }, {
607
592
  token: "string.regexp",
608
593
  regex: "\\/",
609
594
  next: "regex"
@@ -681,26 +666,6 @@ var JavaScriptHighlightRules = function(options) {
681
666
  next: "no_regex"
682
667
  }
683
668
  ],
684
- "comment_regex_allowed" : [
685
- DocCommentHighlightRules.getTagRule(),
686
- {token : "comment", regex : "\\*\\/", next : "start"},
687
- {defaultToken : "comment", caseInsensitive: true}
688
- ],
689
- "comment" : [
690
- DocCommentHighlightRules.getTagRule(),
691
- {token : "comment", regex : "\\*\\/", next : "no_regex"},
692
- {defaultToken : "comment", caseInsensitive: true}
693
- ],
694
- "line_comment_regex_allowed" : [
695
- DocCommentHighlightRules.getTagRule(),
696
- {token : "comment", regex : "$|^", next : "start"},
697
- {defaultToken : "comment", caseInsensitive: true}
698
- ],
699
- "line_comment" : [
700
- DocCommentHighlightRules.getTagRule(),
701
- {token : "comment", regex : "$|^", next : "no_regex"},
702
- {defaultToken : "comment", caseInsensitive: true}
703
- ],
704
669
  "qqstring" : [
705
670
  {
706
671
  token : "constant.language.escape",
@@ -742,9 +707,8 @@ var JavaScriptHighlightRules = function(options) {
742
707
  this.next = val == "{" ? this.nextState : "";
743
708
  if (val == "{" && stack.length) {
744
709
  stack.unshift("start", state);
745
- return "paren";
746
710
  }
747
- if (val == "}" && stack.length) {
711
+ else if (val == "}" && stack.length) {
748
712
  stack.shift();
749
713
  this.next = stack.shift();
750
714
  if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1)
@@ -847,6 +811,7 @@ function JSX() {
847
811
  nextState: "jsx"
848
812
  },
849
813
  jsxJsRule,
814
+ comments("jsxAttributes"),
850
815
  {
851
816
  token : "entity.other.attribute-name.xml",
852
817
  regex : tagRegex
@@ -862,7 +827,6 @@ function JSX() {
862
827
  stateName : "jsx_attr_q",
863
828
  push : [
864
829
  {token : "string.attribute-value.xml", regex: "'", next: "pop"},
865
- jsxJsRule,
866
830
  {include : "reference"},
867
831
  {defaultToken : "string.attribute-value.xml"}
868
832
  ]
@@ -871,18 +835,40 @@ function JSX() {
871
835
  regex : '"',
872
836
  stateName : "jsx_attr_qq",
873
837
  push : [
874
- jsxJsRule,
875
838
  {token : "string.attribute-value.xml", regex: '"', next: "pop"},
876
839
  {include : "reference"},
877
840
  {defaultToken : "string.attribute-value.xml"}
878
841
  ]
879
- }];
842
+ },
843
+ jsxTag
844
+ ];
880
845
  this.$rules.reference = [{
881
846
  token : "constant.language.escape.reference.xml",
882
847
  regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"
883
848
  }];
884
849
  }
885
850
 
851
+ function comments(next) {
852
+ return [
853
+ {
854
+ token : "comment", // multi line comment
855
+ regex : /\/\*/,
856
+ next: [
857
+ DocCommentHighlightRules.getTagRule(),
858
+ {token : "comment", regex : "\\*\\/", next : next || "pop"},
859
+ {defaultToken : "comment", caseInsensitive: true}
860
+ ]
861
+ }, {
862
+ token : "comment",
863
+ regex : "\\/\\/",
864
+ next: [
865
+ DocCommentHighlightRules.getTagRule(),
866
+ {token : "comment", regex : "$|^", next : next || "pop"},
867
+ {defaultToken : "comment", caseInsensitive: true}
868
+ ]
869
+ }
870
+ ];
871
+ }
886
872
  exports.JavaScriptHighlightRules = JavaScriptHighlightRules;
887
873
  });
888
874