Projekt

Obecné

Profil

Stáhnout (14.8 KB) Statistiky
| Větev: | Tag: | Revize:
1
ace.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: /^\s*!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|gettlbversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\b/,
13
            caseInsensitive: true
14
        }, {
15
            token: "keyword.command.nsis",
16
            regex: /^\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|ExecShellWait|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|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|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|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|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/,
17
            caseInsensitive: true
18
        }, {
19
            token: "keyword.control.nsis",
20
            regex: /^\s*!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/,
21
            caseInsensitive: true
22
        }, {
23
            token: "keyword.plugin.nsis",
24
            regex: /^\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|PageEx|PageExEnd)\b/,
32
            caseInsensitive: true
33
        }, {
34
            token: "support.library.nsis",
35
            regex: /\${[\w\.:-]+}/
36
        }, {
37
            token: "constant.nsis",
38
            regex: /\b(?: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(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|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|IsDomainController|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: /\b\/(?: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
ace.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
ace.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
    this.$behaviour = this.$defaultBehaviour;
295
};
296
oop.inherits(Mode, TextMode);
297

    
298
(function() {
299
    this.lineCommentStart = [";", "#"];
300
    this.blockComment = {start: "/*", end: "*/"};
301
    this.$id = "ace/mode/nsis";
302
}).call(Mode.prototype);
303

    
304
exports.Mode = Mode;
305
});                (function() {
306
                    ace.require(["ace/mode/nsis"], function(m) {
307
                        if (typeof module == "object" && typeof exports == "object" && module) {
308
                            module.exports = m;
309
                        }
310
                    });
311
                })();
312
            
(129-129/244)