Added support for nim programming language.
This commit is contained in:
parent
32cb8c6b0e
commit
9323a2616b
10 changed files with 675 additions and 0 deletions
|
|
@ -117,6 +117,7 @@ var supportedModes = {
|
||||||
MUSHCode: ["mc|mush"],
|
MUSHCode: ["mc|mush"],
|
||||||
MySQL: ["mysql"],
|
MySQL: ["mysql"],
|
||||||
Nix: ["nix"],
|
Nix: ["nix"],
|
||||||
|
Nim: ["nim"],
|
||||||
ObjectiveC: ["m|mm"],
|
ObjectiveC: ["m|mm"],
|
||||||
OCaml: ["ml|mli"],
|
OCaml: ["ml|mli"],
|
||||||
Pascal: ["pas|p"],
|
Pascal: ["pas|p"],
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ var themeData = [
|
||||||
["Solarized Dark" ,"solarized_dark" , "dark"],
|
["Solarized Dark" ,"solarized_dark" , "dark"],
|
||||||
["Terminal" ,"terminal" , "dark"],
|
["Terminal" ,"terminal" , "dark"],
|
||||||
["Tomorrow Night" ,"tomorrow_night" , "dark"],
|
["Tomorrow Night" ,"tomorrow_night" , "dark"],
|
||||||
|
["The Night After Tomorrow" ,"the_night_after_tomorrow" , "dark"],
|
||||||
["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"],
|
["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"],
|
||||||
["Tomorrow Night Bright","tomorrow_night_bright" , "dark"],
|
["Tomorrow Night Bright","tomorrow_night_bright" , "dark"],
|
||||||
["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"],
|
["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"],
|
||||||
|
|
|
||||||
113
lib/ace/mode/nim.js
Normal file
113
lib/ace/mode/nim.js
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Distributed under the BSD license:
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010, Ajax.org B.V.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of Ajax.org B.V. nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var TextMode = require("./text").Mode;
|
||||||
|
var NimHighlightRules = require("./nim_highlight_rules").NimHighlightRules;
|
||||||
|
var NimFoldMode = require("./folding/pythonic").FoldMode;
|
||||||
|
var Range = require("../range").Range;
|
||||||
|
|
||||||
|
var Mode = function() {
|
||||||
|
this.HighlightRules = NimHighlightRules;
|
||||||
|
this.foldingRules = new NimFoldMode("\\:|=");
|
||||||
|
};
|
||||||
|
oop.inherits(Mode, TextMode);
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
this.lineCommentStart = "#";
|
||||||
|
|
||||||
|
this.getNextLineIndent = function(state, line, tab) {
|
||||||
|
var indent = this.$getIndent(line);
|
||||||
|
|
||||||
|
var tokenizedLine = this.getTokenizer().getLineTokens(line, state);
|
||||||
|
var tokens = tokenizedLine.tokens;
|
||||||
|
|
||||||
|
if (tokens.length && tokens[tokens.length-1].type == "comment") {
|
||||||
|
return indent;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == "start") {
|
||||||
|
var match = line.match(/^.*[\{\(\[\:=]\s*$/);
|
||||||
|
if (match) {
|
||||||
|
indent += tab;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return indent;
|
||||||
|
};
|
||||||
|
|
||||||
|
var outdents = {
|
||||||
|
"discard": 1,
|
||||||
|
"return": 1,
|
||||||
|
"raise": 1,
|
||||||
|
"break": 1,
|
||||||
|
"continue": 1
|
||||||
|
};
|
||||||
|
|
||||||
|
this.checkOutdent = function(state, line, input) {
|
||||||
|
if (input !== "\r\n" && input !== "\r" && input !== "\n")
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;
|
||||||
|
|
||||||
|
if (!tokens)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// ignore trailing comments
|
||||||
|
do {
|
||||||
|
var last = tokens.pop();
|
||||||
|
} while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/))));
|
||||||
|
|
||||||
|
if (!last)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return (last.type == "keyword" && outdents[last.value]);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.autoOutdent = function(state, doc, row) {
|
||||||
|
// outdenting in python is slightly different because it always applies
|
||||||
|
// to the next line and only of a new line is inserted
|
||||||
|
|
||||||
|
row += 1;
|
||||||
|
var indent = this.$getIndent(doc.getLine(row));
|
||||||
|
var tab = doc.getTabString();
|
||||||
|
if (indent.slice(-tab.length) == tab)
|
||||||
|
doc.remove(new Range(row, indent.length-tab.length, row, indent.length));
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$id = "ace/mode/nim";
|
||||||
|
}).call(Mode.prototype);
|
||||||
|
|
||||||
|
exports.Mode = Mode;
|
||||||
|
});
|
||||||
238
lib/ace/mode/nim_highlight_rules.js
Normal file
238
lib/ace/mode/nim_highlight_rules.js
Normal file
|
|
@ -0,0 +1,238 @@
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Distributed under the BSD license:
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010, Ajax.org B.V.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of Ajax.org B.V. nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
/*
|
||||||
|
* TODO: nim delimiters
|
||||||
|
*/
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var oop = require("../lib/oop");
|
||||||
|
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
|
||||||
|
var num_suffix = "(\'[Ff]32|\'[Ff]64|\'[IiUu]8|\'[IiUu]16|\'[IiUu]32|\'[IiUu]64)";
|
||||||
|
|
||||||
|
var NimHighlightRules = function() {
|
||||||
|
|
||||||
|
var keywords = (
|
||||||
|
"addr|and|as|asm|atomic|bind|block|break|case|cast|const|continue|" +
|
||||||
|
"converter|defer|discard|distinct|div|do|elif|else|end|enum|except|" +
|
||||||
|
"export|finally|for|from|func|generic|if|import|in|include|interface|" +
|
||||||
|
"is|isnot|iterator|let|macro|method|mixin|mod|nil|not|notin|object|of|" +
|
||||||
|
"or|out|proc|ptr|raise|ref|return|shl|shr|static|template|try|tuple|" +
|
||||||
|
"type|using|var|when|while|with|without|xor|yield"
|
||||||
|
);
|
||||||
|
|
||||||
|
var builtinConstants = (
|
||||||
|
"true|false|nil|NotImplemented|Ellipsis"
|
||||||
|
);
|
||||||
|
|
||||||
|
var storageType = (
|
||||||
|
"string|seq|array|expr|stmt|typed|untyped|any|auto|bool|cdouble|cfloat|"+
|
||||||
|
"cchar|clongdouble|clong|clonglong|cshort|csize|cstring|cstringarray|"+
|
||||||
|
"culong|culonglong|cushort|guarded|natural|openarray|ordinal|pointer|"+
|
||||||
|
"range|set|shared|static|typedesc|varargs|void"
|
||||||
|
);
|
||||||
|
|
||||||
|
var builtinFunctions = (
|
||||||
|
"defined|declared|declaredInScope|echo|$"
|
||||||
|
);
|
||||||
|
|
||||||
|
//var futureReserved = "";
|
||||||
|
var keywordMapper = this.createKeywordMapper({
|
||||||
|
"invalid.deprecated": "debugger",
|
||||||
|
"support.function": builtinFunctions,
|
||||||
|
//"invalid.illegal": futureReserved,
|
||||||
|
"constant.language": builtinConstants,
|
||||||
|
"storage.type" : storageType,
|
||||||
|
"keyword": keywords
|
||||||
|
}, "identifier");
|
||||||
|
|
||||||
|
var strPre = "(?:r|R)?";
|
||||||
|
|
||||||
|
var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))";
|
||||||
|
var octInteger = "(?:0[o]?[0-7]+)";
|
||||||
|
var hexInteger = "(?:0[xX][\\dA-Fa-f]+)";
|
||||||
|
var binInteger = "(?:0[bB][01]+)";
|
||||||
|
var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")";
|
||||||
|
|
||||||
|
var exponent = "(?:[eE][+-]?\\d+)";
|
||||||
|
var fraction = "(?:\\.\\d+)";
|
||||||
|
var intPart = "(?:\\d+)";
|
||||||
|
var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))";
|
||||||
|
var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")";
|
||||||
|
var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")";
|
||||||
|
|
||||||
|
var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";
|
||||||
|
|
||||||
|
this.$rules = {
|
||||||
|
"start" : [ {
|
||||||
|
token : "comment",
|
||||||
|
regex : "#.*$"
|
||||||
|
}, {
|
||||||
|
token : "keyword",
|
||||||
|
regex : "(proc|method|temdplate|macro|macromethod|converter|func|iterator) ",
|
||||||
|
next : "qproc_name"
|
||||||
|
}, {
|
||||||
|
token : "storage.type",
|
||||||
|
regex : "(c|cu|u)?int(8|16|32|64)?",
|
||||||
|
}, {
|
||||||
|
token : "storage.type",
|
||||||
|
regex : "(c|cu|u|cs)?char",
|
||||||
|
}, {
|
||||||
|
token : "storage.type",
|
||||||
|
regex : "float(32|64)?",
|
||||||
|
}, {
|
||||||
|
token : "docstring",
|
||||||
|
regex : "##.*$"
|
||||||
|
}, {
|
||||||
|
token : "string", // multi line """ string start
|
||||||
|
regex : strPre + '"{3}',
|
||||||
|
next : "qqstring3"
|
||||||
|
}, {
|
||||||
|
token : "string", // " string
|
||||||
|
regex : strPre + '"(?=.)',
|
||||||
|
next : "qqstring"
|
||||||
|
}, {
|
||||||
|
token : "string", // multi line ''' string start
|
||||||
|
regex : strPre + "'{3}",
|
||||||
|
next : "qstring3"
|
||||||
|
}, {
|
||||||
|
token : "backtick", // ` string
|
||||||
|
regex : strPre + "`(?=.)",
|
||||||
|
next : "qxstring"
|
||||||
|
}, {
|
||||||
|
token : "string", // ' string
|
||||||
|
regex : strPre + "'(?=.)",
|
||||||
|
next : "qstring"
|
||||||
|
}, {
|
||||||
|
token : "constant.numeric", // imaginary
|
||||||
|
regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b"
|
||||||
|
}, {
|
||||||
|
token : "constant.numeric", // float
|
||||||
|
regex : floatNumber
|
||||||
|
}, {
|
||||||
|
token : "constant.numeric", // long integer
|
||||||
|
regex : integer + "[lL]\\b"
|
||||||
|
}, {
|
||||||
|
token : "constant.numeric", // integer
|
||||||
|
regex : integer + "\\b"
|
||||||
|
}, {
|
||||||
|
token : keywordMapper,
|
||||||
|
regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
|
||||||
|
}, {
|
||||||
|
token : "keyword.operator",
|
||||||
|
regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="
|
||||||
|
}, {
|
||||||
|
token : "paren.lparen",
|
||||||
|
regex : "[\\[\\(\\{]"
|
||||||
|
}, {
|
||||||
|
token : "paren.rparen",
|
||||||
|
regex : "[\\]\\)\\}]"
|
||||||
|
}, {
|
||||||
|
token : "text",
|
||||||
|
regex : "\\s+"
|
||||||
|
} ],
|
||||||
|
"qqstring3" : [ {
|
||||||
|
token : "constant.language.escape",
|
||||||
|
regex : stringEscape
|
||||||
|
}, {
|
||||||
|
token : "string", // multi line """ string end
|
||||||
|
regex : '"{3}',
|
||||||
|
next : "start"
|
||||||
|
}, {
|
||||||
|
defaultToken : "string"
|
||||||
|
} ],
|
||||||
|
"qstring3" : [ {
|
||||||
|
token : "constant.language.escape",
|
||||||
|
regex : stringEscape
|
||||||
|
}, {
|
||||||
|
token : "string", // multi line ''' string end
|
||||||
|
regex : "'{3}",
|
||||||
|
next : "start"
|
||||||
|
}, {
|
||||||
|
defaultToken : "string"
|
||||||
|
} ],
|
||||||
|
"qqstring" : [{
|
||||||
|
token : "constant.language.escape",
|
||||||
|
regex : stringEscape
|
||||||
|
}, {
|
||||||
|
token : "string",
|
||||||
|
regex : "\\\\$",
|
||||||
|
next : "qqstring"
|
||||||
|
}, {
|
||||||
|
token : "string",
|
||||||
|
regex : '"|$',
|
||||||
|
next : "start"
|
||||||
|
}, {
|
||||||
|
defaultToken: "string"
|
||||||
|
}],
|
||||||
|
"qstring" : [{
|
||||||
|
token : "constant.language.escape",
|
||||||
|
regex : stringEscape
|
||||||
|
}, {
|
||||||
|
token : "string",
|
||||||
|
regex : "\\\\$",
|
||||||
|
next : "qstring"
|
||||||
|
}, {
|
||||||
|
token : "string",
|
||||||
|
regex : "'|$",
|
||||||
|
next : "start"
|
||||||
|
}, {
|
||||||
|
defaultToken: "string"
|
||||||
|
}],
|
||||||
|
"qxstring" : [{
|
||||||
|
token : "constant.language.escape",
|
||||||
|
regex : stringEscape
|
||||||
|
}, {
|
||||||
|
token : "backtick",
|
||||||
|
regex : "\\\\$",
|
||||||
|
next : "qxstring"
|
||||||
|
}, {
|
||||||
|
token : "backtick",
|
||||||
|
regex : "`|$",
|
||||||
|
next : "start"
|
||||||
|
}, {
|
||||||
|
defaultToken: "backtick"
|
||||||
|
}],
|
||||||
|
"qproc_name":[{
|
||||||
|
token : "proc_name",
|
||||||
|
regex : "\\w+",
|
||||||
|
},{
|
||||||
|
token : "start_bracket",
|
||||||
|
regex : "(\\(|=|$)",
|
||||||
|
next : "start"
|
||||||
|
}],
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
oop.inherits(NimHighlightRules, TextHighlightRules);
|
||||||
|
|
||||||
|
exports.NimHighlightRules = NimHighlightRules;
|
||||||
|
});
|
||||||
7
lib/ace/snippets/mask.js
Normal file
7
lib/ace/snippets/mask.js
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
exports.snippetText = require("../requirejs/text!./mask.snippets");
|
||||||
|
exports.scope = "mask";
|
||||||
|
|
||||||
|
});
|
||||||
0
lib/ace/snippets/mask.snippets
Normal file
0
lib/ace/snippets/mask.snippets
Normal file
7
lib/ace/snippets/nim.js
Normal file
7
lib/ace/snippets/nim.js
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
exports.snippetText = require("../requirejs/text!./nim.snippets");
|
||||||
|
exports.scope = "nim";
|
||||||
|
|
||||||
|
});
|
||||||
130
lib/ace/snippets/nim.snippets
Normal file
130
lib/ace/snippets/nim.snippets
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
snippet #!
|
||||||
|
#!/usr/bin/env nim
|
||||||
|
snippet imp
|
||||||
|
import ${1:module}
|
||||||
|
snippet from
|
||||||
|
from ${1:package} import ${2:module}
|
||||||
|
# Module Docstring
|
||||||
|
snippet docs
|
||||||
|
## File: ${1:FILENAME:file_name}
|
||||||
|
## Author: ${2:author}
|
||||||
|
## Description: ${3}
|
||||||
|
snippet wh
|
||||||
|
while ${1:condition}:
|
||||||
|
${2:# TODO: write code...}
|
||||||
|
# dowh - does the same as do...while in other languages
|
||||||
|
snippet dowh
|
||||||
|
while true:
|
||||||
|
${1:# TODO: write code...}
|
||||||
|
if ${2:condition}:
|
||||||
|
break
|
||||||
|
snippet with
|
||||||
|
with ${1:expr} as ${2:var}:
|
||||||
|
${3:# TODO: write code...}
|
||||||
|
# New Function
|
||||||
|
snippet proc
|
||||||
|
proc ${1:fname}(${2:`indent('.') ? 'self' : ''`}): ${3: return type} =
|
||||||
|
##${4:docstring for $1}
|
||||||
|
${5:# TODO: write code...}
|
||||||
|
snippet deff
|
||||||
|
def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):
|
||||||
|
${3:# TODO: write code...}
|
||||||
|
# New Method
|
||||||
|
snippet defs
|
||||||
|
def ${1:mname}(self, ${2:arg}):
|
||||||
|
${3:# TODO: write code...}
|
||||||
|
# New Property
|
||||||
|
snippet property
|
||||||
|
def ${1:foo}():
|
||||||
|
doc = "${2:The $1 property.}"
|
||||||
|
def fget(self):
|
||||||
|
${3:return self._$1}
|
||||||
|
def fset(self, value):
|
||||||
|
${4:self._$1 = value}
|
||||||
|
# Ifs
|
||||||
|
snippet if
|
||||||
|
if ${1:condition}:
|
||||||
|
${2:# TODO: write code...}
|
||||||
|
snippet el
|
||||||
|
else:
|
||||||
|
${1:# TODO: write code...}
|
||||||
|
snippet ei
|
||||||
|
elif ${1:condition}:
|
||||||
|
${2:# TODO: write code...}
|
||||||
|
# For
|
||||||
|
snippet for
|
||||||
|
for ${1:item} in ${2:items}:
|
||||||
|
${3:# TODO: write code...}
|
||||||
|
# Encodes
|
||||||
|
snippet cutf8
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
snippet clatin1
|
||||||
|
# -*- coding: latin-1 -*-
|
||||||
|
snippet cascii
|
||||||
|
# -*- coding: ascii -*-
|
||||||
|
# Lambda
|
||||||
|
snippet ld
|
||||||
|
${1:var} = lambda ${2:vars} : ${3:action}
|
||||||
|
snippet .
|
||||||
|
self.
|
||||||
|
snippet try Try/Except
|
||||||
|
try:
|
||||||
|
${1:# TODO: write code...}
|
||||||
|
except ${2:Exception}, ${3:e}:
|
||||||
|
${4:raise $3}
|
||||||
|
snippet try Try/Except/Else
|
||||||
|
try:
|
||||||
|
${1:# TODO: write code...}
|
||||||
|
except ${2:Exception}, ${3:e}:
|
||||||
|
${4:raise $3}
|
||||||
|
else:
|
||||||
|
${5:# TODO: write code...}
|
||||||
|
snippet try Try/Except/Finally
|
||||||
|
try:
|
||||||
|
${1:# TODO: write code...}
|
||||||
|
except ${2:Exception}, ${3:e}:
|
||||||
|
${4:raise $3}
|
||||||
|
finally:
|
||||||
|
${5:# TODO: write code...}
|
||||||
|
snippet try Try/Except/Else/Finally
|
||||||
|
try:
|
||||||
|
${1:# TODO: write code...}
|
||||||
|
except ${2:Exception}, ${3:e}:
|
||||||
|
${4:raise $3}
|
||||||
|
else:
|
||||||
|
${5:# TODO: write code...}
|
||||||
|
finally:
|
||||||
|
${6:# TODO: write code...}
|
||||||
|
# if __name__ == '__main__':
|
||||||
|
snippet ifmain
|
||||||
|
if isMainModule:
|
||||||
|
${1:main()}
|
||||||
|
snippet "
|
||||||
|
## ${1:doc}
|
||||||
|
# test function/method
|
||||||
|
snippet test
|
||||||
|
def test_${1:description}(${2:self}):
|
||||||
|
${3:# TODO: write code...}
|
||||||
|
# test case
|
||||||
|
snippet testcase
|
||||||
|
class ${1:ExampleCase}(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_${2:description}(self):
|
||||||
|
${3:# TODO: write code...}
|
||||||
|
#getopt
|
||||||
|
snippet getopt
|
||||||
|
try:
|
||||||
|
# Short option syntax: "hv:"
|
||||||
|
# Long option syntax: "help" or "verbose="
|
||||||
|
opts, args = getopt.getopt(sys.argv[1:], "${1:short_options}", [${2:long_options}])
|
||||||
|
|
||||||
|
except getopt.GetoptError, err:
|
||||||
|
# Print debug info
|
||||||
|
print str(err)
|
||||||
|
${3:error_action}
|
||||||
|
|
||||||
|
for option, argument in opts:
|
||||||
|
if option in ("-h", "--help"):
|
||||||
|
${4}
|
||||||
|
elif option in ("-v", "--verbose"):
|
||||||
|
verbose = argument
|
||||||
139
lib/ace/theme/the_night_after_tomorrow.css
Normal file
139
lib/ace/theme/the_night_after_tomorrow.css
Normal file
|
|
@ -0,0 +1,139 @@
|
||||||
|
.ace-tomorrow-night .ace_gutter {
|
||||||
|
background: #25282c;
|
||||||
|
color: #C5C8C6
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_print-margin {
|
||||||
|
width: 1px;
|
||||||
|
background: #25282c
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night {
|
||||||
|
background-color: #1D1F21;
|
||||||
|
color: #C5C8C6
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_cursor {
|
||||||
|
color: #FFFFFF
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_marker-layer .ace_selection {
|
||||||
|
background: #373B41
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {
|
||||||
|
box-shadow: 0 0 3px 0px #1D1F21;
|
||||||
|
border-radius: 2px
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_marker-layer .ace_step {
|
||||||
|
background: rgb(102, 82, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_marker-layer .ace_bracket {
|
||||||
|
margin: -1px 0 0 -1px;
|
||||||
|
border: 1px solid #4B4E55
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_marker-layer .ace_active-line {
|
||||||
|
background: #282A2E
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_gutter-active-line {
|
||||||
|
background-color: #282A2E
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_marker-layer .ace_selected-word {
|
||||||
|
border: 1px solid #373B41
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_invisible {
|
||||||
|
color: #4B4E55
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_keyword,
|
||||||
|
.ace-tomorrow-night .ace_meta,
|
||||||
|
.ace-tomorrow-night .ace_support.ace_type {
|
||||||
|
color: #C4A400
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_storage,
|
||||||
|
.ace-tomorrow-night .ace_storage.ace_type {
|
||||||
|
color: #327FD7
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_keyword.ace_operator {
|
||||||
|
color: #8ABEB7
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_constant.ace_language{
|
||||||
|
color: #934B9F
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_constant.ace_character,
|
||||||
|
.ace-tomorrow-night .ace_constant.ace_numeric,
|
||||||
|
.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,
|
||||||
|
.ace-tomorrow-night .ace_support.ace_constant,
|
||||||
|
.ace-tomorrow-night .ace_variable.ace_parameter {
|
||||||
|
color: #37BC9B
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_constant.ace_other {
|
||||||
|
color: #CED1CF
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_invalid {
|
||||||
|
color: #CED2CF;
|
||||||
|
background-color: #DF5F5F
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_invalid.ace_deprecated {
|
||||||
|
color: #CED2CF;
|
||||||
|
background-color: #B798BF
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_fold {
|
||||||
|
background-color: #62A5D6;
|
||||||
|
border-color: #C5C8C6
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_entity.ace_name.ace_function,
|
||||||
|
.ace-tomorrow-night .ace_support.ace_function,
|
||||||
|
.ace-tomorrow-night .ace_variable {
|
||||||
|
color: #62A5D6
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_support.ace_class,
|
||||||
|
.ace-tomorrow-night .ace_support.ace_type {
|
||||||
|
color: #F0C674
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_heading,
|
||||||
|
.ace-tomorrow-night .ace_markup.ace_heading,
|
||||||
|
.ace-tomorrow-night .ace_string {
|
||||||
|
color: #CD0000
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_proc_name {
|
||||||
|
color: #04939A
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_backtick {
|
||||||
|
color: #1DAA49
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_entity.ace_name.ace_tag,
|
||||||
|
.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,
|
||||||
|
.ace-tomorrow-night .ace_meta.ace_tag,
|
||||||
|
.ace-tomorrow-night .ace_string.ace_regexp,
|
||||||
|
.ace-tomorrow-night .ace_variable {
|
||||||
|
color: #FFFFFF
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_comment {
|
||||||
|
color: #3465A4
|
||||||
|
}
|
||||||
|
|
||||||
|
.ace-tomorrow-night .ace_indent-guide {
|
||||||
|
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y
|
||||||
|
}
|
||||||
39
lib/ace/theme/the_night_after_tomorrow.js
Normal file
39
lib/ace/theme/the_night_after_tomorrow.js
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Distributed under the BSD license:
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010, Ajax.org B.V.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of Ajax.org B.V. nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
define(function(require, exports, module) {
|
||||||
|
|
||||||
|
exports.isDark = true;
|
||||||
|
exports.cssClass = "ace-tomorrow-night";
|
||||||
|
exports.cssText = require("../requirejs/text!./the_night_after_tomorrow.css");
|
||||||
|
|
||||||
|
var dom = require("../lib/dom");
|
||||||
|
dom.importCssString(exports.cssText, exports.cssClass);
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue