From cc9b491e549924cca66a7e28234ede151812a799 Mon Sep 17 00:00:00 2001 From: Jordan Schalm Date: Wed, 24 Jun 2015 21:36:11 -0700 Subject: [PATCH 1/3] Added highlighting for unembedded if/else, changed element class and id tags to have the same highlighting as the standard css tm-bundle, and made a few changes to the highlighting of the script tag: now the parens are highlighted as well --- Syntaxes/Jade.tmLanguage | 744 ++++++++++++++++----------------------- info.plist | 12 +- 2 files changed, 304 insertions(+), 452 deletions(-) diff --git a/Syntaxes/Jade.tmLanguage b/Syntaxes/Jade.tmLanguage index 6cc45b7..d4d95de 100644 --- a/Syntaxes/Jade.tmLanguage +++ b/Syntaxes/Jade.tmLanguage @@ -2,511 +2,371 @@ - fileTypes - - jade - - keyEquivalent - ^~J - name - Jade - patterns - - - captures + changed + + patterns + - 1 + captures - name - keyword.control.import.include.jade + 1 + + name + keyword.control.import.include.jade + + match + ^\s*\b(include)\b - match - ^\s*\b(include)\b - - - match - ^(!!!)(\s*[a-zA-Z0-9-_]+)? - name - keyword.other.doctype.jade - - - captures - 1 - - name - punctuation.section.comment.jade - + match + ^(!!!)(\s*[a-zA-Z0-9-_]+)? + name + keyword.other.doctype.jade - match - ^\s*(//-?)(?:\s*[^-\s]|\s+\S).*$\n? - name - comment.line.double-slash.jade - - - begin - ^(\s*)(//-?)\s*$ - beginCaptures - 2 + captures - name - punctuation.section.comment.jade + 1 + + name + punctuation.section.comment.jade + + match + ^\s*(//-?)(?:\s*[^-\s]|\s+\S).*$\n? + name + comment.line.double-slash.jade - end - ^(?!\1\s+|$) - name - comment.block.jade - - - begin - ^(\s*)(\:markdown) - beginCaptures - 2 + begin + ^(\s*)(//-?)\s*$ + beginCaptures - name - entity.name.function.jade + 2 + + name + punctuation.section.comment.jade + + end + ^(?!\1\s+|$) + name + comment.block.jade - end - ^(?!\1\s+) - name - meta.filter.markdown.jade - patterns - - - include - text.html.markdown - - - - - begin - ^(\s*)(\:sass) - beginCaptures - 2 + begin + ^(\s*)(\:markdown) + beginCaptures - name - entity.name.function.jade + 2 + + name + entity.name.function.jade + + end + ^(?!\1\s+) + name + meta.filter.markdown.jade + patterns + + + include + text.html.markdown + + - end - ^(?!\1\s+) - name - meta.filter.sass.jade - patterns - - - include - source.sass - - - - - begin - ^(\s*)(\:less) - beginCaptures - 2 + begin + ^(\s*)(\:sass) + beginCaptures - name - entity.name.function.jade + 2 + + name + entity.name.function.jade + + end + ^(?!\1\s+) + name + meta.filter.sass.jade + patterns + + + include + source.sass + + - end - ^(?!\1\s+) - name - meta.filter.less.jade - patterns - - - include - source.css.less - - - - - begin - ^(\s*)(\:coffeescript) - beginCaptures - 2 + begin + ^(\s*)(\:less) + beginCaptures - name - entity.name.function.jade + 2 + + name + entity.name.function.jade + + end + ^(?!\1\s+) + name + meta.filter.less.jade + patterns + + + include + source.css.less + + - end - ^(?!\1\s+)(?=\s*.) - name - meta.filter.coffee.jade - patterns - - - include - source.coffee - - - - - begin - ^(\s*)(\:cdata) - beginCaptures - 2 + begin + ^(\s*)(\:coffeescript) + beginCaptures - name - entity.name.function.jade + 2 + + name + entity.name.function.jade + + end + ^(?!\1\s+)(?=\s*.) + name + meta.filter.coffee.jade + patterns + + + include + source.coffee + + - end - ^(?!\1\s+) - name - meta.filter.cdata.jade - - - captures - 1 - - name - storage.type.function.jade - - 2 - - name - entity.name.function.jade - - 3 - - name - punctuation.definition.parameters.begin.jade - - 4 - - name - variable.parameter.function.jade - - 5 + begin + ^(\s*)(\:cdata) + beginCaptures - name - punctuation.definition.parameters.end.jade + 2 + + name + entity.name.function.jade + + end + ^(?!\1\s+) + name + meta.filter.cdata.jade - comment - match stuff like: mixin dialog-title-desc(title, desc) - match - ^\s*(mixin) ([\w\-]+)\s*(\()(.*?)(\)) - name - meta.mixin.jade - - - captures - 1 - - name - storage.type.function.jade - - 2 + captures - name - entity.name.function.jade + 1 + + name + storage.type.function.jade + + 2 + + name + entity.name.function.jade + + 3 + + name + punctuation.definition.parameters.begin.jade + + 4 + + name + variable.parameter.function.jade + + 5 + + name + punctuation.definition.parameters.end.jade + + comment + match stuff like: mixin dialog-title-desc(title, desc) + match + ^\s*(mixin) ([\w\-]+)\s*(\()(.*?)(\)) + name + meta.mixin.jade - comment - match stuff like: mixin dialog-title-desc - match - ^\s*(mixin) ([\w\-]+) - name - meta.mixin.jade - - - begin - ^\s*(-|=|!=) - end - $ - name - source.js.embedded.jade - patterns - - - include - source.js - - - match - \b(each)\b - name - keyword.control.js - - - - - begin - ^(\s*)(script) - beginCaptures - 2 + captures - name - entity.name.tag.script.jade + 1 + + name + storage.type.function.jade + + 2 + + name + entity.name.function.jade + + comment + match stuff like: mixin dialog-title-desc + match + ^\s*(mixin) ([\w\-]+) + name + meta.mixin.jade - end - ^((?=(\1)([\w#\.]|$\n?))|^$\n?) - name - source.js.embedded.jade - patterns - - - begin - (?<=script)\s*\( - end - \) - patterns - - - include - #tag-stuff - - - - - include - source.js - - - - - match - [#!]\{[^\}]+\} - name - string.interpolated.jade - - - begin - ^\s*(?!\w+\:)(?:(([\w]+))|(?=\.|#)) - captures - 1 - - name - meta.tag.any.jade - - 2 - - name - entity.name.tag.jade - + begin + ^\s*(-|=|!=) + end + $ + name + source.js.embedded.jade + patterns + + + include + source.js + + + match + \b(each)\b + name + keyword.control.js + + - comment - Match any tag, id or class. skip AST filters - end - $|(?!\.|#|=|-) - patterns - - - match - \.[\w-]+ - name - meta.tag.attribute.class.jade - - - match - #[\w-]+ - name - meta.tag.attribute.id.jade - - - - - begin - (?<=\w)\s*\( - end - \) - name - meta.tag.attribute.jade - patterns - + + begin + ^(\s*)(script) + beginCaptures - include - #tag-stuff + 2 + + name + entity.name.tag.script.jade + - - - - repository - - entities - - patterns - - - captures + end + ^((?=(\1)([\w#\.]|$\n?))|^$\n?) + name + source.js.embedded.jade + patterns + - 1 + begin + (?<=script)\s*(\() + beginCaptures - name - punctuation.definition.entity.jade + 1 + + name + entity.name.tag.script.jade + - 3 + end + (\)) + endCaptures - name - punctuation.definition.entity.jade + 1 + + name + entity.name.tag.script.jade + + patterns + + + include + #tag-stuff + + - match - (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) - name - constant.character.entity.jade - - - match - & - name - invalid.illegal.bad-ampersand.jade - - - - filter-langs - - patterns - - - include - #markdown - - - include - #sass - - - - markdown - - begin - markdown\s*$\n? - end - (?!^\1\s+) - patterns - - - include - text.html.markdown - - - - sass - - begin - ^(\s*)\:sass - end - (?!^\1\s+) - patterns - - - include - source.sass - - - - string-double-quoted - - begin - " - beginCaptures + + include + source.js + + + - 0 - - name - punctuation.definition.string.begin.jade - + match + ^\s*if + name + storage.type.jade - end - " - endCaptures - 0 - - name - punctuation.definition.string.end.jade - + match + ^\s*else + name + storage.type.jade - name - string.quoted.double.jade - patterns - - - include - #entities - - - - string-single-quoted - - begin - ' - beginCaptures - 0 - - name - punctuation.definition.string.begin.jade - + match + [#!]\{[^\}]+\} + name + string.interpolated.jade - end - ' - endCaptures - 0 + begin + ^\s*(?!\w+\:)(?:(([\w]+))|(?=\.|#)) + captures - name - punctuation.definition.string.end.jade + 1 + + name + meta.tag.any.jade + + 2 + + name + entity.name.tag.jade + + comment + Match any tag, id or class. skip AST filters + end + $|(?!\.|#|=|-) + patterns + + + match + \.[\w-]+ + name + entity.name.tag.jade + + + match + #[\w-]+ + name + variable.other.jade + + - name - string.quoted.single.jade - patterns - - - include - #entities - - - - tag-generic-attribute - - match - \b([a-zA-Z\-:]+) - name - entity.other.attribute-name.jade - - tag-stuff - - patterns - - - include - #string-double-quoted - - - include - #string-single-quoted - - - include - #tag-generic-attribute - - - + + begin + (?<=\w)\s*\( + end + \) + name + meta.tag.attribute.jade + patterns + + + include + #tag-stuff + + + + + scopeName + source.html.jade - scopeName - source.jade + isDelta + uuid C5B73B98-5F2A-42E3-9F0E-028A74A9FE4B diff --git a/info.plist b/info.plist index fcf6f6b..3b91a0f 100644 --- a/info.plist +++ b/info.plist @@ -2,16 +2,8 @@ - name - Jade - ordering - - C5B73B98-5F2A-42E3-9F0E-028A74A9FE4B - 45F19BDD-2A4D-4848-83D5-E5F1A7FF4726 - 4E2866A2-7FAE-4980-84E1-0E8AAB7C36FB - FF542D1A-4247-4240-8348-DB30EB477256 - D2ABB2E0-EB25-11E0-9572-0800200C9A66 - + isDelta + uuid 93D6D9C3-67F2-4C06-B3B3-BF872579B44F From 6d0e748edb05d2e4b12453089c176834a305f01b Mon Sep 17 00:00:00 2001 From: Jordan Schalm Date: Thu, 25 Jun 2015 15:05:28 -0700 Subject: [PATCH 2/3] Fixed delta info.plist and Jade.tmLanguage. --- Syntaxes/Jade.tmLanguage | 766 ++++++++++++++++++++++++--------------- info.plist | 12 +- 2 files changed, 477 insertions(+), 301 deletions(-) diff --git a/Syntaxes/Jade.tmLanguage b/Syntaxes/Jade.tmLanguage index d4d95de..722200a 100644 --- a/Syntaxes/Jade.tmLanguage +++ b/Syntaxes/Jade.tmLanguage @@ -2,371 +2,539 @@ - changed - - patterns - + fileTypes + + jade + + keyEquivalent + ^~J + name + Jade + patterns + + + captures - captures + 1 - 1 - - name - keyword.control.import.include.jade - + name + keyword.control.import.include.jade - match - ^\s*\b(include)\b + match + ^\s*\b(include)\b + + + match + ^(!!!)(\s*[a-zA-Z0-9-_]+)? + name + keyword.other.doctype.jade + + + captures - match - ^(!!!)(\s*[a-zA-Z0-9-_]+)? - name - keyword.other.doctype.jade + 1 + + name + punctuation.section.comment.jade + + match + ^\s*(//-?)(?:\s*[^-\s]|\s+\S).*$\n? + name + comment.line.double-slash.jade + + + begin + ^(\s*)(//-?)\s*$ + beginCaptures - captures + 2 - 1 - - name - punctuation.section.comment.jade - + name + punctuation.section.comment.jade - match - ^\s*(//-?)(?:\s*[^-\s]|\s+\S).*$\n? - name - comment.line.double-slash.jade + end + ^(?!\1\s+|$) + name + comment.block.jade + + + begin + ^(\s*)(\:markdown) + beginCaptures - begin - ^(\s*)(//-?)\s*$ - beginCaptures + 2 - 2 - - name - punctuation.section.comment.jade - + name + entity.name.function.jade - end - ^(?!\1\s+|$) - name - comment.block.jade + end + ^(?!\1\s+) + name + meta.filter.markdown.jade + patterns + + + include + text.html.markdown + + + + + begin + ^(\s*)(\:sass) + beginCaptures - begin - ^(\s*)(\:markdown) - beginCaptures + 2 - 2 - - name - entity.name.function.jade - + name + entity.name.function.jade - end - ^(?!\1\s+) - name - meta.filter.markdown.jade - patterns - - - include - text.html.markdown - - + end + ^(?!\1\s+) + name + meta.filter.sass.jade + patterns + + + include + source.sass + + + + + begin + ^(\s*)(\:less) + beginCaptures - begin - ^(\s*)(\:sass) - beginCaptures + 2 - 2 - - name - entity.name.function.jade - + name + entity.name.function.jade - end - ^(?!\1\s+) - name - meta.filter.sass.jade - patterns - - - include - source.sass - - + end + ^(?!\1\s+) + name + meta.filter.less.jade + patterns + + + include + source.css.less + + + + + begin + ^(\s*)(\:coffeescript) + beginCaptures - begin - ^(\s*)(\:less) - beginCaptures + 2 - 2 - - name - entity.name.function.jade - + name + entity.name.function.jade - end - ^(?!\1\s+) - name - meta.filter.less.jade - patterns - - - include - source.css.less - - + end + ^(?!\1\s+)(?=\s*.) + name + meta.filter.coffee.jade + patterns + + + include + source.coffee + + + + + begin + ^(\s*)(\:cdata) + beginCaptures - begin - ^(\s*)(\:coffeescript) - beginCaptures + 2 - 2 - - name - entity.name.function.jade - + name + entity.name.function.jade - end - ^(?!\1\s+)(?=\s*.) - name - meta.filter.coffee.jade - patterns - - - include - source.coffee - - + end + ^(?!\1\s+) + name + meta.filter.cdata.jade + + + captures - begin - ^(\s*)(\:cdata) - beginCaptures + 1 - 2 - - name - entity.name.function.jade - + name + storage.type.function.jade + + 2 + + name + entity.name.function.jade + + 3 + + name + punctuation.definition.parameters.begin.jade + + 4 + + name + variable.parameter.function.jade + + 5 + + name + punctuation.definition.parameters.end.jade - end - ^(?!\1\s+) - name - meta.filter.cdata.jade + comment + match stuff like: mixin dialog-title-desc(title, desc) + match + ^\s*(mixin) ([\w\-]+)\s*(\()(.*?)(\)) + name + meta.mixin.jade + + + captures - captures + 1 - 1 - - name - storage.type.function.jade - - 2 - - name - entity.name.function.jade - - 3 - - name - punctuation.definition.parameters.begin.jade - - 4 - - name - variable.parameter.function.jade - - 5 - - name - punctuation.definition.parameters.end.jade - + name + storage.type.function.jade + + 2 + + name + entity.name.function.jade - comment - match stuff like: mixin dialog-title-desc(title, desc) - match - ^\s*(mixin) ([\w\-]+)\s*(\()(.*?)(\)) - name - meta.mixin.jade + comment + match stuff like: mixin dialog-title-desc + match + ^\s*(mixin) ([\w\-]+) + name + meta.mixin.jade + + + begin + ^\s*(-|=|!=) + end + $ + name + source.js.embedded.jade + patterns + + + include + source.js + + + match + \b(each)\b + name + keyword.control.js + + + + + begin + ^(\s*)(script) + beginCaptures - captures + 2 - 1 - - name - storage.type.function.jade - - 2 - - name - entity.name.function.jade - + name + entity.name.tag.script.jade - comment - match stuff like: mixin dialog-title-desc - match - ^\s*(mixin) ([\w\-]+) - name - meta.mixin.jade - - begin - ^\s*(-|=|!=) - end - $ - name - source.js.embedded.jade - patterns - + end + ^((?=(\1)([\w#\.]|$\n?))|^$\n?) + name + source.js.embedded.jade + patterns + + + begin + (?<=script)\s*(\() + beginCaptures - include - source.js + 1 + + name + entity.name.tag.script.jade + + end + (\)) + endCaptures - match - \b(each)\b - name - keyword.control.js + 1 + + name + entity.name.tag.script.jade + - - + patterns + + + include + #tag-stuff + + + + + include + source.js + + + + + match + ^\s*if + name + storage.type.jade + + + match + ^\s*else + name + storage.type.jade + + + match + [#!]\{[^\}]+\} + name + string.interpolated.jade + + + begin + ^\s*(?!\w+\:)(?:(([\w]+))|(?=\.|#)) + captures - begin - ^(\s*)(script) - beginCaptures + 1 - 2 - - name - entity.name.tag.script.jade - + name + meta.tag.any.jade + + 2 + + name + entity.name.tag.jade + + + comment + Match any tag, id or class. skip AST filters + end + $|(?!\.|#|=|-) + patterns + + + match + \.[\w-]+ + name + entity.name.tag.jade - end - ^((?=(\1)([\w#\.]|$\n?))|^$\n?) - name - source.js.embedded.jade - patterns - + + match + #[\w-]+ + name + variable.other.jade + + + + + begin + (?<=\w)\s*\( + end + \) + name + meta.tag.attribute.jade + patterns + + + include + #tag-stuff + + + + + repository + + entities + + patterns + + + captures - begin - (?<=script)\s*(\() - beginCaptures + 1 - 1 - - name - entity.name.tag.script.jade - + name + punctuation.definition.entity.jade - end - (\)) - endCaptures + 3 - 1 - - name - entity.name.tag.script.jade - + name + punctuation.definition.entity.jade - patterns - - - include - #tag-stuff - - - - - include - source.js - - - - match - ^\s*if - name - storage.type.jade - + match + (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) + name + constant.character.entity.jade + + + match + & + name + invalid.illegal.bad-ampersand.jade + + + + filter-langs + + patterns + + + include + #markdown + + + include + #sass + + + + markdown + + begin + markdown\s*$\n? + end + (?!^\1\s+) + patterns + + + include + text.html.markdown + + + + sass + + begin + ^(\s*)\:sass + end + (?!^\1\s+) + patterns + + + include + source.sass + + + + string-double-quoted + + begin + " + beginCaptures - match - ^\s*else - name - storage.type.jade + 0 + + name + punctuation.definition.string.begin.jade + + end + " + endCaptures - match - [#!]\{[^\}]+\} - name - string.interpolated.jade + 0 + + name + punctuation.definition.string.end.jade + + name + string.quoted.double.jade + patterns + + + include + #entities + + + + string-single-quoted + + begin + ' + beginCaptures - begin - ^\s*(?!\w+\:)(?:(([\w]+))|(?=\.|#)) - captures + 0 - 1 - - name - meta.tag.any.jade - - 2 - - name - entity.name.tag.jade - + name + punctuation.definition.string.begin.jade - comment - Match any tag, id or class. skip AST filters - end - $|(?!\.|#|=|-) - patterns - - - match - \.[\w-]+ - name - entity.name.tag.jade - - - match - #[\w-]+ - name - variable.other.jade - - + end + ' + endCaptures - begin - (?<=\w)\s*\( - end - \) - name - meta.tag.attribute.jade - patterns - - - include - #tag-stuff - - + 0 + + name + punctuation.definition.string.end.jade + - - scopeName - source.html.jade + name + string.quoted.single.jade + patterns + + + include + #entities + + + + tag-generic-attribute + + match + \b([a-zA-Z\-:]+) + name + entity.other.attribute-name.jade + + tag-stuff + + patterns + + + include + #string-double-quoted + + + include + #string-single-quoted + + + include + #tag-generic-attribute + + + - isDelta - + scopeName + source.jade uuid C5B73B98-5F2A-42E3-9F0E-028A74A9FE4B diff --git a/info.plist b/info.plist index 3b91a0f..fcf6f6b 100644 --- a/info.plist +++ b/info.plist @@ -2,8 +2,16 @@ - isDelta - + name + Jade + ordering + + C5B73B98-5F2A-42E3-9F0E-028A74A9FE4B + 45F19BDD-2A4D-4848-83D5-E5F1A7FF4726 + 4E2866A2-7FAE-4980-84E1-0E8AAB7C36FB + FF542D1A-4247-4240-8348-DB30EB477256 + D2ABB2E0-EB25-11E0-9572-0800200C9A66 + uuid 93D6D9C3-67F2-4C06-B3B3-BF872579B44F From a189691a86dc33aa73461fa3de0b736a39fabc17 Mon Sep 17 00:00:00 2001 From: Jordan Schalm Date: Sat, 27 Jun 2015 13:57:42 -0700 Subject: [PATCH 3/3] More highlighting, fixed equal char in script tags * Fixed issue where equals character in script tags wouldn't highlight properly * Added support for javascript highlighting following top-level if/else statements * Added support for highlighting variable references of the form =someVariable or !=someUnescapedVariable within tag parens --- Syntaxes/Jade.tmLanguage | 69 ++++++++++++++++++++++++++++++---------- 1 file changed, 53 insertions(+), 16 deletions(-) diff --git a/Syntaxes/Jade.tmLanguage b/Syntaxes/Jade.tmLanguage index 722200a..01f9bde 100644 --- a/Syntaxes/Jade.tmLanguage +++ b/Syntaxes/Jade.tmLanguage @@ -227,7 +227,15 @@ begin - ^\s*(-|=|!=) + ^\s*(-|=|!=|if|else if|else) + beginCaptures + + 1 + + name + storage.type.jade + + end $ name @@ -258,14 +266,14 @@ end - ^((?=(\1)([\w#\.]|$\n?))|^$\n?) + ^((?=(\1)([\w#\.\=]|$\n?))|^$\n?) name source.js.embedded.jade patterns begin - (?<=script)\s*(\() + (?<=script)\s*(\()(.*?\=)? beginCaptures 1 @@ -273,6 +281,11 @@ name entity.name.tag.script.jade + 2 + + name + entity.name.tag.script.jade + end (\)) @@ -298,18 +311,6 @@ - - match - ^\s*if - name - storage.type.jade - - - match - ^\s*else - name - storage.type.jade - match [#!]\{[^\}]+\} @@ -367,6 +368,31 @@ + + captures + + 1 + + name + punctuation.definition.entity.jade + + 3 + + name + punctuation.definition.entity.jade + + + match + (&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;) + name + constant.character.entity.jade + + + match + & + name + invalid.illegal.bad-ampersand.jade + repository @@ -530,12 +556,23 @@ include #tag-generic-attribute + + include + #tag-variable + + tag-variable + + match + \b(\!?\=[\w\.\[\]]+) + name + storage.type.jade + scopeName source.jade uuid - C5B73B98-5F2A-42E3-9F0E-028A74A9FE4B + 914CEC52-3DDF-4EBA-9C61-4ACBD06FC855