From a934dd513ecb49c94c94356084324700e081afae Mon Sep 17 00:00:00 2001 From: Brad Cornes Date: Tue, 28 Aug 2018 20:39:39 +0100 Subject: [PATCH] add grammar (#6) --- package.json | 15 ++++++- syntaxes/tailwind.tmLanguage.json | 75 +++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 syntaxes/tailwind.tmLanguage.json diff --git a/package.json b/package.json index e4c5dd6..77b737a 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,20 @@ "workspaceContains:**/{tailwind,tailwind.config,tailwind-config,.tailwindrc}.js" ], "main": "./out/extension", - "contributes": {}, + "contributes": { + "grammars": [ + { + "scopeName": "source.css.tailwind", + "path": "./syntaxes/tailwind.tmLanguage.json", + "injectTo": [ + "source.css", + "source.css.scss", + "source.css.less", + "source.css.postcss" + ] + } + ] + }, "preview": true, "scripts": { "vscode:prepublish": "npm run compile", diff --git a/syntaxes/tailwind.tmLanguage.json b/syntaxes/tailwind.tmLanguage.json new file mode 100644 index 0000000..a7adc63 --- /dev/null +++ b/syntaxes/tailwind.tmLanguage.json @@ -0,0 +1,75 @@ +{ + "scopeName": "source.css.tailwind", + "fileTypes": [], + "injectionSelector": "meta.property-list.css, meta.property-list.scss", + "name": "TailwindCSS", + "patterns": [ + { + "begin": "^\\s*(@)apply\\b", + "beginCaptures": { + "0": { + "name": "keyword.control.at-rule.apply.tailwind" + }, + "1": { + "name": "punctuation.definition.keyword.tailwind" + } + }, + "end": ";", + "endCaptures": { + "0": { + "name": "punctuation.terminator.rule.tailwind" + } + }, + "patterns": [ + { + "begin": "(?x)\n(?=\n (?:\\|)? # Possible anonymous namespace prefix\n (?:\n [-\\[:.*\\#a-zA-Z_] # Valid selector character\n |\n [^\\x00-\\x7F] # Which can include non-ASCII symbols\n |\n \\\\ # Or an escape sequence\n (?:[0-9a-fA-F]{1,6}|.)\n )\n)", + "end": "(?=\\s*[;])", + "patterns": [ + { + "match": "!\\s*important(?![\\w-])", + "name": "keyword.other.important.tailwind" + }, + { + "captures": { + "1": { + "name": "punctuation.definition.entity.tailwind" + }, + "2": { + "patterns": [ + { + "include": "source.css#escapes" + } + ] + } + }, + "match": "(?x)\n(\\.)? # Valid class-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{>;+~|] # - Another selector\n | /\\* # - A block comment\n)", + "name": "entity.other.attribute-name.class.tailwind" + } + ] + } + ] + }, + { + "begin": "(?i)(?