0f8ab287b485 — Leonard Ritter tip 3 months ago
* initial check-in vscode extension
A => .hgignore +8 -0
@@ 0,0 1,8 @@ 
+syntax: glob
+
+*.log
+*.orig
+
+syntax: regexp
+
+^build/

          
A => CHANGELOG.md +1 -0
@@ 0,0 1,1 @@ 
+# Change Log

          
A => README.md +188 -0
@@ 0,0 1,188 @@ 
+# Scopes README
+
+Official support for the Scopes programming language and infrastructure.
+
+## Features
+
+This is an early release. Right now, only basic syntax highlighting is available.
+
+## Release Notes
+
+### 0.46.0
+
+* Updated extension for Scopes 0.16
+* Removed defunct icon theme
+
+### 0.44.0
+
+* Added more keywords relevant to Scopes 0.15
+
+### 0.43.0
+
+* Added more keywords relevant to Scopes 0.15
+
+### 0.42.0
+
+* Added more keywords relevant to Scopes 0.14
+
+### 0.41.0
+
+* Updated extension for Scopes 0.14
+
+### 0.39.0
+
+* Added more keywords.
+
+### 0.38.0
+
+* Added more keywords.
+* Removed `global` keyword.
+
+### 0.37.0
+
+* Added more keywords.
+
+### 0.36.0
+
+* Added more keywords.
+
+### 0.35.0
+
+* Added more keywords.
+* Removed `var` keyword.
+
+### 0.34.0
+
+* Added more keywords.
+
+### 0.33.0
+
+* Added more keywords.
+
+### 0.32.0
+
+* Updated to new syntax rules for raw block strings.
+
+### 0.31.0
+
+* Support for 0.11 raw block strings.
+
+### 0.30.0
+
+* Added more keywords.
+
+### 0.29.0
+
+* Added more keywords.
+* Fixed parse failure on negative numbers.
+
+### 0.28.0
+
+* Added more keywords.
+
+### 0.27.0
+
+* Added more keywords.
+
+### 0.26.0
+
+* Added more keywords.
+
+### 0.25.0
+
+* Added more keywords.
+
+### 0.24.0
+
+* Added more keywords.
+
+### 0.23.0
+
+* Added more keywords.
+
+### 0.20.0
+
+* Added more keywords.
+
+### 0.19.0
+
+* Added more keywords.
+
+### 0.18.0
+
+* Added more keywords.
+
+### 0.17.0
+
+* Added more keywords.
+
+### 0.16.0
+
+* Added more keywords.
+
+### 0.15.0
+
+* Added more keywords.
+
+### 0.14.0
+
+* Added more keywords.
+
+### 0.13.0
+
+* Added more keywords.
+* Added icon theme for scope source files. Unfortunately there seems to be no
+  way to extend the current theme with new icons, so this is more of a reference
+  for theme creators rather than anything else.
+
+### 0.12.0
+
+* Added more keywords.
+
+### 0.11.0
+
+* Added more keywords.
+
+### 0.10.0
+
+* Formerly Bangra, renamed to Scopes.
+* File extension changed from ".b" to ".sc".
+* Added more keywords.
+
+### 0.9.0
+
+* Added more keywords.
+
+### 0.8.0
+
+* Added more keywords.
+
+### 0.7.0
+
+* Added more keywords.
+
+### 0.6.0
+
+* Added more keywords.
+
+### 0.5.0
+
+* Added more keywords.
+
+### 0.4.0
+
+* Added more keywords.
+
+### 0.3.0
+
+* Added `do` keywords.
+
+### 0.2.0
+
+* Fixed highlighting failing when trailed by semicolon.
+* Added `none` keyword.
+
+### 0.1.1
+
+Initial release of Scopes
+

          
A => fileicons/scopes-icons.json +13 -0
@@ 0,0 1,13 @@ 
+{
+    "iconDefinitions": {
+        "_scopes_file": {
+            "iconPath": "./scopes_file_icon.png"
+        }
+    },
+    "fileExtensions": {
+        "sc": "_scopes_file"
+    },
+    "languageIds": {
+        "scopes": "_scopes_file"
+    }
+}

          
A => language-configuration.json +28 -0
@@ 0,0 1,28 @@ 
+{
+    "comments": {
+        // symbol used for single line comment. Remove this entry if your language does not support line comments
+        "lineComment": "#"
+        // symbols used for start and end a block comment. Remove this entry if your language does not support block comments
+        // "blockComment": [ "#", "" ]
+    },
+    // symbols used as brackets
+    "brackets": [
+        ["{", "}"],
+        ["[", "]"],
+        ["(", ")"]
+    ],
+    // symbols that are auto closed when typing
+    "autoClosingPairs": [
+        ["{", "}"],
+        ["[", "]"],
+        ["(", ")"],
+        ["\"", "\""]
+    ],
+    // symbols that that can be used to surround a selection
+    "surroundingPairs": [
+        ["{", "}"],
+        ["[", "]"],
+        ["(", ")"],
+        ["\"", "\""]
+    ]
+}
  No newline at end of file

          
A => package.json +27 -0
@@ 0,0 1,27 @@ 
+{
+    "name": "scopes",
+    "displayName": "Scopes",
+    "description": "Language support for Scopes",
+    "version": "0.46.0",
+    "publisher": "duangle",
+    "engines": {
+        "vscode": "^1.13.0"
+    },
+    "categories": [
+        "Languages"
+    ],
+    "icon": "images/scopes_logo_128.png",
+    "contributes": {
+        "languages": [{
+            "id": "scopes",
+            "aliases": ["Scopes", "scopes"],
+            "extensions": ["sc"],
+            "configuration": "./language-configuration.json"
+        }],
+        "grammars": [{
+            "language": "scopes",
+            "scopeName": "source.scopes",
+            "path": "./syntaxes/scopes.tmLanguage.json"
+        }]
+    }
+}
  No newline at end of file

          
A => package_with_icons.json +32 -0
@@ 0,0 1,32 @@ 
+{
+    "name": "scopes",
+    "displayName": "Scopes",
+    "description": "Language support for Scopes",
+    "version": "0.45.0",
+    "publisher": "duangle",
+    "engines": {
+        "vscode": "^1.13.0"
+    },
+    "categories": [
+        "Languages"
+    ],
+    "icon": "images/scopes_logo_128.png",
+    "contributes": {
+        "languages": [{
+            "id": "scopes",
+            "aliases": ["Scopes", "scopes"],
+            "extensions": ["sc"],
+            "configuration": "./language-configuration.json"
+        }],
+        "grammars": [{
+            "language": "scopes",
+            "scopeName": "source.scopes",
+            "path": "./syntaxes/scopes.tmLanguage.json"
+        }],
+        "iconThemes": [{
+            "id" : "scopes-icons",
+            "label" : "Scopes",
+            "path": "./fileicons/scopes-icons.json"
+        }]
+    }
+}
  No newline at end of file

          
A => syntaxes/scopes.tmLanguage.json +405 -0
@@ 0,0 1,405 @@ 
+{
+	"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+	"name": "Scopes",
+	"patterns": [
+        { "include": "#block_comment" },
+        { "include": "#block_string" },
+        { "include": "#strings" },
+        { "include": "#keywords" },
+        { "include": "#types" },
+        { "include": "#variables" },
+        { "include": "#constants" },
+        { "include": "#operators" },
+        { "include": "#builtin_functions" },
+        { "include": "#symbol" }
+	],
+	"repository": {
+		"keywords": {
+			"patterns": [
+                {
+                    "name": "keyword.control.builtin.scopes",
+                    "match": "(_|then|switch|case|pass|default|run-stage|loop|repeat|break|raise|(square-|curly-)list|inline|(spice-|sugar-)?quote|spice-unquote|unquote-splice|do|embed|(static-|sugar-)?if|elseif|else|return|merge|(un)?let|fn|label|(raw)?call|syntax-log)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "keyword.control.library.scopes",
+                    "match": "(options|bind|include|__this-scope|static|plain|local|new|global|typedef(\\+)?|type\\+|fold|\\:\\:|\\@\\@|vvv|qq|va-option|sugar|spice|(fn|inline)\\.\\.\\.|(spice-)?capture|struct|fnchain|enum|while|continue|for|in|(sugar-|spice-|static-)?match|from|using|filter|\\:|try|except|locals|import|defer|(static-)?assert|define|define-infix[\\<\\>])(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "keyword.control.glsl.scopes",
+                    "match": "(uniform|buffer|in|out|inout|varying|xvar|coherent|volatile|restrict|readonly|writeonly)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "keyword.control.testing.scopes",
+				    "match": "(test(-modules|-error|-compiler-error)?|features)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                }
+            ]
+		},
+		"variables": {
+			"patterns": [
+                {
+                    "name": "constant.language.builtins.scopes",
+                    "match": "(debug-build\\?|compiler-(path|timestamp|dir)|sugar-scope|this-function|pointer-flag-(non-(writable|readable))|type-kind-(function|integer|real|pointer|vector|array|tuple|union|typename))(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "constant.language.library.scopes",
+                    "match": "((this-|super-)type|package|main-module\\?|module-(dir|path|name))(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "constant.language.glsl.scopes",
+                    "match": "(gl_(Position|VertexID|FragCoord|FragDepth))(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                }
+            ]
+		},
+		"constants": {
+			"patterns": [
+                {
+				    "name": "constant.language.boolean.scopes",
+				    "match": "(true|false)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+			    },
+                {
+				    "name": "constant.language.nothing.scopes",
+				    "match": "(none|unnamed|null)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+			    },
+                {
+				    "name": "constant.language.math.scopes",
+				    "match": "((pi|e)(\\:(f32|f64))?)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+			    },
+                {
+                    "match": "((\\'|\\`)[^\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#]+)",
+                    "name": "constant.character.symbol.scopes"
+                },
+                {
+                    "comment": "Floating point literal (fraction)",
+                    "name": "constant.numeric.float.scopes",
+                    "match": "[\\-\\+]?[0-9][0-9_]*\\.[0-9][0-9_]*([eE][+-]?[0-9_]+)?(\\:f32|\\:f64)?(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "comment": "Floating point literal (exponent)",
+                    "name": "constant.numeric.float.scopes",
+                    "match": "[\\-\\+]?[0-9][0-9_]*(\\.[0-9][0-9_]*)?[eE][+-]?[0-9_]+(\\:f32|\\:f64)?(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "comment": "Floating point literal (typed)",
+                    "name": "constant.numeric.float.scopes",
+                    "match": "[\\-\\+]?[0-9][0-9_]*(\\.[0-9][0-9_]*)?([eE][+-]?[0-9_]+)?(\\:f32|\\:f64)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "comment": "Integer literal (decimal)",
+                    "name": "constant.numeric.integer.decimal.scopes",
+                    "match": "[\\-\\+]?[0-9][0-9_]*(\\:[ui](8|16|32|64|128|s|size))?(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "comment": "Integer literal (hexadecimal)",
+                    "name": "constant.numeric.integer.hexadecimal.scopes",
+                    "match": "[\\-\\+]?0x[a-fA-F0-9_]+(\\:[ui](8|16|32|64|128|s|size))?(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "comment": "Integer literal (octal)",
+                    "name": "constant.numeric.integer.octal.scopes",
+                    "match": "[\\-\\+]?0o[0-7_]+(\\:[ui](8|16|32|64|128|s|size))?(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "comment": "Integer literal (binary)",
+                    "name": "constant.numeric.integer.binary.scopes",
+                    "match": "[\\-\\+]?0b[01_]+(\\:[ui](8|16|32|64|128|s|size))?(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                }
+            ]
+		},
+		"types": {
+            "patterns":[
+                {
+                    "name": "support.type.builtin.scopes",
+                    "match": "(CompileStage|Error|Arguments|CEnum|CUnion|CStruct|noreturn|void(star)?|bool|(u|s)size|intptr|u8|u16|u32|u64|i8|i16|i32|i64|f32|f64|type|list|string|integer|real|pointer|array|vector|tuple|union|typename|function|(Sampled)?Image|Sampler|Symbol|Unknown|Label|Closure|Frame|Any|Value|Parameter|Syntax|Nothing|Scope|Anchor|Builtin|Exception|ReturnLabel)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.type.library.scopes",
+                    "match": "(OverloadedFunction|Struct|NullType|(Sugar|Spice)Macro(Function)?|(Fixed|Growing)?Array|Generator|Collector|Capture|FunctionChain|immutable|rawstring|hash|aggregate|opaquepointer)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.type.glm.scopes",
+                    "match": "((vec|mat)-type|vec-type-accessor|(i|u|d|b)?vec(2|3|4)|(i|u|d|b)?mat(2|3|4)(x(2|3|4))?)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.type.glsl.scopes",
+                    "match": "(gsampler|(i|u|g)?sampler(1D|2D|3D|Cube|2DRect|(1D|2D|Cube)Array|Buffer|2DMS(Array)?))(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                }
+            ]
+		},
+		"builtin_functions": {
+			"patterns": [
+                {
+                    "name": "support.function.builtin.scopes",
+				    "match": "(returning|raising|move|view|lose|dropped\\?|dupe|viewing|__drop|assign|ptrtoref|reftoptr|hide-traceback|pow|fmix|step|smoothstep|floor|ceil|fract|(f|s)(abs|sign)|round|roundeven|trunc|fma|frexp|ldexp|(inverse)?sqrt|exp(2)?|log(2)?|radians|degrees|sin|cos|tan|asin|acos|atan|atan2|cross|normalize|length|distance|scopeof|offsetof|Image-(read|write)|sample|mutable\\?|type-name|supercall|superof|string-match\\?|(file|directory)\\?|exit|compiler-version|load-library|prompt|countof|private|malloc(-array)?|free|alloca(-array|of)?|eval|list-load|globals|((mutable-)?pointer|integer|real|function|tuple|ReturnLabel|array|vector|typename|extern|(Sampled)?Image)-type|dump|dump-(label|list|frame)|Any-(extract-constant|repr|wrap)|static-branch|string-join|getelementptr|(volatile-)?(load|store)|storageof|import-c|type\\@(\\&)?|Scope\\@|ptrtoint|inttoptr|(insert|extract)(value|element)|shufflevector|unconst(-all)?|compile(-glsl|-spirv|-object)?|(static-)?typify|(constant|signed)\\?|va(-keys|-values|-countof|\\@)|type-kind|nullof|undef|typeof(\\&)?|bitcountof|icmp[\\=\\!]\\=|icmp[\\<\\>]\\=?[su]|fcmp[\\=\\!]\\=[ou]|fcmp[\\<\\>]\\=?[ou]|bitcast(\\&)?|(fp|i)trunc|([sz]|fp)ext|fpto[su]i|[su]itofp|b(and|x?or)|f?add|f?sub|f?mul|[suf](div|rem)|shl|[al]shr)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.function.library.scopes",
+				    "match": "(unqualified|qualifiersof|keyof|sizeof|element(s)?of|alignof|returnof|field|drop|extern|mutable|raises|spice-(cast|binary-op)-macro|memo|memoize|type-factory|(any|all)\\?|error(\\@(\\+)?)?|mix|deref|refof|delete|sign|abs|(infinite-)?range|map|zip|enumerate|unpack|(tuple|vector|array)of|unknownof|va-(append-va|split|map|range|option-branch|(l|r)(i)?fold|empty\\?|types|join|each|each-reversed|key)|imply|forward-imply|forward-as|xpcall|require-from|char|getattr|typeattr|(de)?cons|[rl]?slice|(scope-|block-scope-)?macro|print|report|min|max|clamp|(tie|cond)-const|repr|(none|symbol|list|empty|type|integer|real|pointer|array|vector|extern|tuple|typename|Symbol|function-pointer)\\?|(integer|real|pointer|function|array|tuple|vector|extern|function-pointer|typename)-type\\?)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.function.itertools.scopes",
+				    "match": "(span|dim|bitdim|imap|collect|each|compose|(de)?mux|->>|cat|flatten|reduce|drain|limit|gate|take|cascade)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.function.sfx.api.scopes",
+				    "match": "(sc_(refer_(flags|storage_class)|anchor_offset|strip_qualifiers|parameter_new|template_(new|set_body|append_parameter|set_inline)|arguments_type_(join|argcount|getarg)|map_(get|set)|expand|global_new|realpath|is_file|eval|hash(2x64)?|call_(new|set_rawcall|append_argument)|default_styler|if_(new|append_(then|else)_clause)|(dump|format)_error|write|list_((de)?cons|count|join|at|next|reverse|dump|repr|compare)|expression_(new|append)|argcount|getarg(list)?|typify(_template)?|prove|compile(_(glsl|spirv|object))?|empty_argument_list|argument_list_(new|append)|extract_argument(_list)?_new|(refer|unique|view|key|arguments|tuple|union|array|integer|real|function|pointer|typename|image|sampled_image)_type|pointer_type_((get|set)_(storage_class|flags|element_type))|function_type_(return_type|raising|is_variadic)|symbol_(new(_unique)?|is_variadic)|type_(field_index|(element_)?at|next|is_superof|is_refer|is_default_suffix|key|storage|set_symbol|bitcountof|countof|kind|sizeof|alignof|local_at|is_opaque|string)|typename_type_(set_storage|(get|set)_super)|keyed_new|string_(buffer|join|match|(l|r)slice|count|compare|new(_from_cstr)?)|scope_((new|clone)(_subscope)?|(set|del)_symbol|at|next|get_(docstring|parent)|set_docstring)|value_((un)?wrap|is_(pure|constant)|tostring|compare|kind|anchor|(ast_|content_)?repr|(qualified_)?type)|valueref_tag|error_(new|append_calltrace)|integer_type_is_signed|(const_(int_(new|extract)|real_new|pointer_(new|extract)|aggregate_new))))(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.function.sfx.builtin.scopes",
+				    "match": "(unreachable|(enter-solver-cli|set-execution-mode|io-write|set-anchor|set-globals|set-typename(-storage|-super|-fields)|compiler-error|abort|discard|set-signal-abort|(set|delete)-(type|scope)-symbol)!(\\&)?)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.function.sfx.library.scopes",
+				    "match": "(((syntax-)?error|todo)!)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.function.glsl.scopes",
+				    "match": "(texelFetch(Offset)?|texture(Proj|Lod|Offset|Samples|QueryLevels|QueryLod|Size)?|local_size|imageLoad|imageStore|(i|u)?image(1D|2D|3D|Cube|2DRect|(1D|2D|Cube)Array|Buffer|2DMS(Array)?))(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+                    "name": "support.function.glm.scopes",
+				    "match": "(dot|transpose)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                }
+            ]
+		},
+		"operators": {
+            "patterns":[
+                {
+                    "name": "keyword.operator.scopes",
+                    "match": "(as|\\<\\:|and|or|not|\\/\\/(\\=)?|\\@|[\\=\\!\\<\\>]\\=?|\\*\\*|[\\.\\?\\+\\-\\*\\/\\%\\&\\|\\^\\~]|\\-\\>|\\<\\-|(as)?\\:\\=|[\\+\\-\\*\\/\\%\\&\\|\\^]\\=|\\<\\<(\\=)?|\\>\\>(\\=)?|\\.\\.(\\=)?)(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+                },
+                {
+				    "name": "keyword.operator.specialmethods.scopes",
+				    "match": "(__((type)?call|tobool|hash|unpack|getattr|repr|countof|(l|r)slice|toptr|toref|neg|rcp|vector([\\+\\-\\*\\/\\%\\&\\|\\^]|\\<\\<|\\>\\>|[\\=\\!]\\=|[\\<\\>](\\=)?|\\/\\/)|\\@|static-(r)?imply|r?(imply|as|\\=\\=|\\!\\=|\\.\\.|(\\<|\\>)(\\=)?|\\/\\/|\\<\\<|\\>\\>|[\\+\\-\\*\\/\\%\\&\\|\\~\\^\\=])))(?=[\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#])"
+			    }
+            ]
+		},
+		"symbol": {
+			"patterns": [
+				{
+					"match": "([^\\s\\(\\)\\[\\]\\{\\}\\,\\;\\#]+)",
+					"name": "meta.symbol.scopes"
+				}
+			]
+		},
+		"block_comment": {
+			"patterns": [
+                { "name": "comment.block.scopes", "begin": "^\\#", "end": "^(?=\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{1})\\#", "end": "^(?= {,1}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{2})\\#", "end": "^(?= {,2}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{3})\\#", "end": "^(?= {,3}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{4})\\#", "end": "^(?= {,4}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{5})\\#", "end": "^(?= {,5}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{6})\\#", "end": "^(?= {,6}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{7})\\#", "end": "^(?= {,7}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{8})\\#", "end": "^(?= {,8}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{9})\\#", "end": "^(?= {,9}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{10})\\#", "end": "^(?= {,10}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{11})\\#", "end": "^(?= {,11}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{12})\\#", "end": "^(?= {,12}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{13})\\#", "end": "^(?= {,13}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{14})\\#", "end": "^(?= {,14}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{15})\\#", "end": "^(?= {,15}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{16})\\#", "end": "^(?= {,16}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{17})\\#", "end": "^(?= {,17}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{18})\\#", "end": "^(?= {,18}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{19})\\#", "end": "^(?= {,19}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{20})\\#", "end": "^(?= {,20}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{21})\\#", "end": "^(?= {,21}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{22})\\#", "end": "^(?= {,22}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{23})\\#", "end": "^(?= {,23}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{24})\\#", "end": "^(?= {,24}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{25})\\#", "end": "^(?= {,25}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{26})\\#", "end": "^(?= {,26}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{27})\\#", "end": "^(?= {,27}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{28})\\#", "end": "^(?= {,28}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{29})\\#", "end": "^(?= {,29}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{30})\\#", "end": "^(?= {,30}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{31})\\#", "end": "^(?= {,31}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{32})\\#", "end": "^(?= {,32}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{33})\\#", "end": "^(?= {,33}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{34})\\#", "end": "^(?= {,34}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{35})\\#", "end": "^(?= {,35}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{36})\\#", "end": "^(?= {,36}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{37})\\#", "end": "^(?= {,37}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{38})\\#", "end": "^(?= {,38}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{39})\\#", "end": "^(?= {,39}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{40})\\#", "end": "^(?= {,40}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{41})\\#", "end": "^(?= {,41}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{42})\\#", "end": "^(?= {,42}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{43})\\#", "end": "^(?= {,43}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{44})\\#", "end": "^(?= {,44}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{45})\\#", "end": "^(?= {,45}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{46})\\#", "end": "^(?= {,46}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{47})\\#", "end": "^(?= {,47}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{48})\\#", "end": "^(?= {,48}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{49})\\#", "end": "^(?= {,49}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{50})\\#", "end": "^(?= {,50}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{51})\\#", "end": "^(?= {,51}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{52})\\#", "end": "^(?= {,52}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{53})\\#", "end": "^(?= {,53}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{54})\\#", "end": "^(?= {,54}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{55})\\#", "end": "^(?= {,55}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{56})\\#", "end": "^(?= {,56}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{57})\\#", "end": "^(?= {,57}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{58})\\#", "end": "^(?= {,58}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{59})\\#", "end": "^(?= {,59}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{60})\\#", "end": "^(?= {,60}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{61})\\#", "end": "^(?= {,61}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{62})\\#", "end": "^(?= {,62}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{63})\\#", "end": "^(?= {,63}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{64})\\#", "end": "^(?= {,64}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{65})\\#", "end": "^(?= {,65}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{66})\\#", "end": "^(?= {,66}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{67})\\#", "end": "^(?= {,67}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{68})\\#", "end": "^(?= {,68}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{69})\\#", "end": "^(?= {,69}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{70})\\#", "end": "^(?= {,70}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{71})\\#", "end": "^(?= {,71}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{72})\\#", "end": "^(?= {,72}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{73})\\#", "end": "^(?= {,73}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{74})\\#", "end": "^(?= {,74}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{75})\\#", "end": "^(?= {,75}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{76})\\#", "end": "^(?= {,76}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{77})\\#", "end": "^(?= {,77}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{78})\\#", "end": "^(?= {,78}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{79})\\#", "end": "^(?= {,79}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{80})\\#", "end": "^(?= {,80}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{81})\\#", "end": "^(?= {,81}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{82})\\#", "end": "^(?= {,82}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{83})\\#", "end": "^(?= {,83}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{84})\\#", "end": "^(?= {,84}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{85})\\#", "end": "^(?= {,85}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{86})\\#", "end": "^(?= {,86}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{87})\\#", "end": "^(?= {,87}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{88})\\#", "end": "^(?= {,88}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{89})\\#", "end": "^(?= {,89}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{90})\\#", "end": "^(?= {,90}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{91})\\#", "end": "^(?= {,91}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{92})\\#", "end": "^(?= {,92}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{93})\\#", "end": "^(?= {,93}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{94})\\#", "end": "^(?= {,94}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{95})\\#", "end": "^(?= {,95}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{96})\\#", "end": "^(?= {,96}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{97})\\#", "end": "^(?= {,97}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{98})\\#", "end": "^(?= {,98}\\S)" },
+                { "name": "comment.block.scopes", "begin": "(?<=^.{99})\\#", "end": "^(?= {,99}\\S)" }
+			]
+        },
+		"block_string": {
+			"patterns": [
+                { "name": "string.quoted.block.scopes", "begin": "^\"\"\"\"", "end": "^(?= {,3}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{1})\"\"\"\"", "end": "^(?= {,4}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{2})\"\"\"\"", "end": "^(?= {,5}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{3})\"\"\"\"", "end": "^(?= {,6}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{4})\"\"\"\"", "end": "^(?= {,7}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{5})\"\"\"\"", "end": "^(?= {,8}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{6})\"\"\"\"", "end": "^(?= {,9}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{7})\"\"\"\"", "end": "^(?= {,10}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{8})\"\"\"\"", "end": "^(?= {,11}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{9})\"\"\"\"", "end": "^(?= {,12}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{10})\"\"\"\"", "end": "^(?= {,13}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{11})\"\"\"\"", "end": "^(?= {,14}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{12})\"\"\"\"", "end": "^(?= {,15}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{13})\"\"\"\"", "end": "^(?= {,16}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{14})\"\"\"\"", "end": "^(?= {,17}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{15})\"\"\"\"", "end": "^(?= {,18}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{16})\"\"\"\"", "end": "^(?= {,19}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{17})\"\"\"\"", "end": "^(?= {,20}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{18})\"\"\"\"", "end": "^(?= {,21}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{19})\"\"\"\"", "end": "^(?= {,22}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{20})\"\"\"\"", "end": "^(?= {,23}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{21})\"\"\"\"", "end": "^(?= {,24}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{22})\"\"\"\"", "end": "^(?= {,25}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{23})\"\"\"\"", "end": "^(?= {,26}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{24})\"\"\"\"", "end": "^(?= {,27}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{25})\"\"\"\"", "end": "^(?= {,28}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{26})\"\"\"\"", "end": "^(?= {,29}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{27})\"\"\"\"", "end": "^(?= {,30}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{28})\"\"\"\"", "end": "^(?= {,31}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{29})\"\"\"\"", "end": "^(?= {,32}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{30})\"\"\"\"", "end": "^(?= {,33}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{31})\"\"\"\"", "end": "^(?= {,34}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{32})\"\"\"\"", "end": "^(?= {,35}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{33})\"\"\"\"", "end": "^(?= {,36}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{34})\"\"\"\"", "end": "^(?= {,37}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{35})\"\"\"\"", "end": "^(?= {,38}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{36})\"\"\"\"", "end": "^(?= {,39}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{37})\"\"\"\"", "end": "^(?= {,40}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{38})\"\"\"\"", "end": "^(?= {,41}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{39})\"\"\"\"", "end": "^(?= {,42}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{40})\"\"\"\"", "end": "^(?= {,43}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{41})\"\"\"\"", "end": "^(?= {,44}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{42})\"\"\"\"", "end": "^(?= {,45}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{43})\"\"\"\"", "end": "^(?= {,46}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{44})\"\"\"\"", "end": "^(?= {,47}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{45})\"\"\"\"", "end": "^(?= {,48}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{46})\"\"\"\"", "end": "^(?= {,49}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{47})\"\"\"\"", "end": "^(?= {,50}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{48})\"\"\"\"", "end": "^(?= {,51}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{49})\"\"\"\"", "end": "^(?= {,52}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{50})\"\"\"\"", "end": "^(?= {,53}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{51})\"\"\"\"", "end": "^(?= {,54}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{52})\"\"\"\"", "end": "^(?= {,55}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{53})\"\"\"\"", "end": "^(?= {,56}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{54})\"\"\"\"", "end": "^(?= {,57}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{55})\"\"\"\"", "end": "^(?= {,58}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{56})\"\"\"\"", "end": "^(?= {,59}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{57})\"\"\"\"", "end": "^(?= {,60}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{58})\"\"\"\"", "end": "^(?= {,61}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{59})\"\"\"\"", "end": "^(?= {,62}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{60})\"\"\"\"", "end": "^(?= {,63}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{61})\"\"\"\"", "end": "^(?= {,64}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{62})\"\"\"\"", "end": "^(?= {,65}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{63})\"\"\"\"", "end": "^(?= {,66}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{64})\"\"\"\"", "end": "^(?= {,67}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{65})\"\"\"\"", "end": "^(?= {,68}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{66})\"\"\"\"", "end": "^(?= {,69}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{67})\"\"\"\"", "end": "^(?= {,70}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{68})\"\"\"\"", "end": "^(?= {,71}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{69})\"\"\"\"", "end": "^(?= {,72}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{70})\"\"\"\"", "end": "^(?= {,73}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{71})\"\"\"\"", "end": "^(?= {,74}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{72})\"\"\"\"", "end": "^(?= {,75}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{73})\"\"\"\"", "end": "^(?= {,76}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{74})\"\"\"\"", "end": "^(?= {,77}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{75})\"\"\"\"", "end": "^(?= {,78}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{76})\"\"\"\"", "end": "^(?= {,79}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{77})\"\"\"\"", "end": "^(?= {,80}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{78})\"\"\"\"", "end": "^(?= {,81}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{79})\"\"\"\"", "end": "^(?= {,82}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{80})\"\"\"\"", "end": "^(?= {,83}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{81})\"\"\"\"", "end": "^(?= {,84}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{82})\"\"\"\"", "end": "^(?= {,85}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{83})\"\"\"\"", "end": "^(?= {,86}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{84})\"\"\"\"", "end": "^(?= {,87}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{85})\"\"\"\"", "end": "^(?= {,88}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{86})\"\"\"\"", "end": "^(?= {,89}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{87})\"\"\"\"", "end": "^(?= {,90}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{88})\"\"\"\"", "end": "^(?= {,91}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{89})\"\"\"\"", "end": "^(?= {,92}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{90})\"\"\"\"", "end": "^(?= {,93}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{91})\"\"\"\"", "end": "^(?= {,94}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{92})\"\"\"\"", "end": "^(?= {,95}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{93})\"\"\"\"", "end": "^(?= {,96}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{94})\"\"\"\"", "end": "^(?= {,97}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{95})\"\"\"\"", "end": "^(?= {,98}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{96})\"\"\"\"", "end": "^(?= {,99}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{97})\"\"\"\"", "end": "^(?= {,100}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{98})\"\"\"\"", "end": "^(?= {,101}\\S)" },
+                { "name": "string.quoted.block.scopes", "begin": "(?<=^.{99})\"\"\"\"", "end": "^(?= {,102}\\S)" }
+			]
+		},
+		"strings": {
+			"name": "string.quoted.double.scopes",
+			"begin": "\"",
+			"end": "\"",
+			"patterns": [
+				{
+					"name": "constant.character.escape.scopes",
+					"match": "\\\\."
+				}
+			]
+		}
+	},
+	"scopeName": "source.scopes"
+}
  No newline at end of file

          
A => vsc-extension-quickstart.md +27 -0
@@ 0,0 1,27 @@ 
+# Welcome to your VS Code Extension
+
+## What's in the folder
+* This folder contains all of the files necessary for your extension
+* `package.json` - this is the manifest file in which you declare your language support and define
+the location of the grammar file that has been copied into you extension.
+* `syntaxes/scopes.tmLanguage.json` - this is the Text mate grammar file that is used for tokenization
+* `language-configuration.json` - this the language configuration, defining the tokens that are used for
+comments and brackets.
+
+## Get up and running straight away
+* Make sure the language configuration settings in `language-configuration.json` are accurate
+* press `F5` to open a new window with your extension loaded
+* create a new file with a file name suffix matching your language
+* verify that syntax highlight works and that the language configuration settings are working
+
+## Make changes
+* you can relaunch the extension from the debug toolbar after making changes to the files listed above
+* you can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes
+
+## Add more language features
+* To add features such as intellisense, hovers and validators check out the VS Code extenders documentation at
+https://code.visualstudio.com/docs
+
+## Install your extension
+* To start using your extension with Visual Studio Code copy it into the `<user home>/.vscode/extensions` folder and restart Code.
+* To share your extension with the world, read on https://code.visualstudio.com/docs about publishing an extension.
  No newline at end of file