tm-grammars
Version:
Collecton of TextMate grammars in JSON
152 lines (151 loc) • 3.75 kB
JSON
{
"displayName": "OpenSCAD",
"fileTypes": [
"scad"
],
"foldingStartMarker": "/\\*\\*|\\{\\s*$",
"foldingStopMarker": "\\*\\*/|^\\s*}",
"name": "openscad",
"patterns": [
{
"captures": {
"1": {
"name": "keyword.control.scad"
}
},
"match": "^(module)\\s.*$",
"name": "meta.function.scad"
},
{
"match": "\\b(if|else|for|intersection_for|assign|render|function|include|use)\\b",
"name": "keyword.control.scad"
},
{
"begin": "/\\*\\*(?!/)",
"captures": {
"0": {
"name": "punctuation.definition.comment.scad"
}
},
"end": "\\*/",
"name": "comment.block.documentation.scad"
},
{
"begin": "/\\*",
"captures": {
"0": {
"name": "punctuation.definition.comment.scad"
}
},
"end": "\\*/",
"name": "comment.block.scad"
},
{
"captures": {
"1": {
"name": "punctuation.definition.comment.scad"
}
},
"match": "(//).*$\\n?",
"name": "comment.line.double-slash.scad"
},
{
"begin": "\"",
"end": "\"",
"name": "string.quoted.double.scad",
"patterns": [
{
"match": "\\\\.",
"name": "constant.character.escape.scad"
}
]
},
{
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.scad"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.scad"
}
},
"name": "string.quoted.single.scad",
"patterns": [
{
"match": "\\\\(x\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",
"name": "constant.character.escape.scad"
}
]
},
{
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.scad"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.scad"
}
},
"name": "string.quoted.double.scad",
"patterns": [
{
"match": "\\\\(x\\h{2}|[012][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)",
"name": "constant.character.escape.scad"
}
]
},
{
"match": "\\b(abs|acos|asun|atan2??|ceil|cos|exp|floor|ln|log|lookup|max|min|pow|rands|round|sign|sin|sqrt|tan|str|cube|sphere|cylinder|polyhedron|scale|rotate|translate|mirror|multimatrix|color|minkowski|hull|union|difference|intersection|echo)\\b",
"name": "support.function.scad"
},
{
"match": ";",
"name": "punctuation.terminator.statement.scad"
},
{
"match": ",[\\t |]*",
"name": "meta.delimiter.object.comma.scad"
},
{
"match": "\\.",
"name": "meta.delimiter.method.period.scad"
},
{
"match": "[{}]",
"name": "meta.brace.curly.scad"
},
{
"match": "[()]",
"name": "meta.brace.round.scad"
},
{
"match": "[]\\[]",
"name": "meta.brace.square.scad"
},
{
"match": "[!$%\\&*]|--?|\\+\\+|[+~]|===?|=|!==??|<=|>=|<<=|>>=|>>>=|<>|[!<>]|&&|\\|\\||\\?:|\\*=|(?<!\\()/=|%=|\\+=|-=|&=|\\^=|\\b(in|instanceof|new|delete|typeof|void)\\b",
"name": "keyword.operator.scad"
},
{
"match": "\\b((0([Xx])\\h+)|([0-9]+(\\.[0-9]+)?))\\b",
"name": "constant.numeric.scad"
},
{
"match": "\\btrue\\b",
"name": "constant.language.boolean.true.scad"
},
{
"match": "\\bfalse\\b",
"name": "constant.language.boolean.false.scad"
}
],
"scopeName": "source.scad"
}