diff --git a/syntaxes/ansible/generated/jinja-braces.tmLanguage b/syntaxes/ansible/generated/jinja-braces.tmLanguage index 513ee81050..43301c538a 100644 --- a/syntaxes/ansible/generated/jinja-braces.tmLanguage +++ b/syntaxes/ansible/generated/jinja-braces.tmLanguage @@ -14,25 +14,61 @@ include #jinja-expression + + include + #jinja-statement + + + include + #jinja-comment + repository jinja-expression - comment - The 'name' is used to undo highlighting as string - name - keyword.operator.ansible begin - \{\{ + \{\{-? + end + -?\}\} + beginCaptures + + 0 + + name + punctuation.section.embedded.begin.jinja + + + endCaptures + + 0 + + name + punctuation.section.embedded.end.jinja + + + contentName + meta.embedded.inline.jinja + patterns + + + include + source.ansible-jinja#expression + + + + jinja-statement + + begin + \{%-? end - \}\} + -?%\} beginCaptures 0 name - constant.character.escape.ansible + punctuation.section.embedded.begin.jinja endCaptures @@ -40,7 +76,7 @@ 0 name - constant.character.escape.ansible + punctuation.section.embedded.end.jinja contentName @@ -53,6 +89,38 @@ + jinja-comment + + begin + \{#-? + end + -?#\} + beginCaptures + + 0 + + name + punctuation.definition.comment.begin.jinja + + + endCaptures + + 0 + + name + punctuation.definition.comment.end.jinja + + + contentName + comment.block.jinja + patterns + + + include + source.ansible-jinja#comments + + + diff --git a/syntaxes/ansible/generated/jinja-conditionals.tmLanguage b/syntaxes/ansible/generated/jinja-conditionals.tmLanguage index c7d03aab47..983ea7ff96 100644 --- a/syntaxes/ansible/generated/jinja-conditionals.tmLanguage +++ b/syntaxes/ansible/generated/jinja-conditionals.tmLanguage @@ -35,6 +35,7 @@ | failed_when | when | check_mode + | until )\b \s* (:) # 5 (?=\s) (?!\s*[|>'"]|\s*$|\s*\#.*$) # starting an unquoted flow @@ -85,6 +86,7 @@ | failed_when | when | check_mode + | until )\b \s* (:) # 5 (?=\s) (?!\s*[|>]|\s*$|\s*\#.*$) # not starting a block (scalar or other) @@ -143,6 +145,7 @@ | failed_when | when | check_mode + | until )\b \s* (:) # 5 \s+ (?: (\|) | (>) ) ([1-9])? ([-+])? # 6,7,8,9; starting a scalar block @@ -226,6 +229,7 @@ | failed_when | when | check_mode + | until )\b \s* (:) # 5 (.*$) # comment or illegal @@ -398,7 +402,7 @@ ^(?!\1\s+) # if the indentation is too small contentName - keyword.operator.ansible meta.embedded.inline.jinja + meta.embedded.inline.jinja patterns @@ -445,7 +449,7 @@ contentName - keyword.operator.ansible meta.embedded.inline.jinja + meta.embedded.inline.jinja patterns @@ -523,7 +527,7 @@ contentName - keyword.operator.ansible meta.embedded.inline.jinja + meta.embedded.inline.jinja patterns @@ -579,7 +583,7 @@ end (?!\G) contentName - keyword.operator.ansible meta.embedded.inline.jinja + meta.embedded.inline.jinja patterns @@ -607,7 +611,7 @@ (?x) ^(?!\1\s*) # if the indentation is too small contentName - keyword.operator.ansible meta.embedded.inline.jinja + meta.embedded.inline.jinja patterns diff --git a/syntaxes/ansible/generated/jinja-extras.tmLanguage b/syntaxes/ansible/generated/jinja-extras.tmLanguage index b411f64b8e..ccb0efbc1a 100644 --- a/syntaxes/ansible/generated/jinja-extras.tmLanguage +++ b/syntaxes/ansible/generated/jinja-extras.tmLanguage @@ -8,56 +8,11 @@ L:meta.embedded.inline.jinja -string.quoted.double.jinja -string.quoted.single.jinja name Grammar for Jinja2 syntax highlighting that is not provided out-of-the-box + comment + Literal patterns (booleans, numbers, none) have been moved to the core jinja.tmLanguage.json grammar patterns - - - include - #literals - - + repository - - literals - - match - (?x) - (none|None) - | (true|True|false|False) - | ( - [-+]? 0b [0-1_]+ # (base 2) - | [-+]? 0x [0-9a-fA-F_]+ # (base 16) - | [-+]? 0 [0-7_]+ # (base 8) - | [-+]? (?: 0|[1-9][0-9_]*) # (base 10) - | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60) - ) - | ( - [-+]? (?: [0-9] [0-9_]*)? \. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10) - | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \. [0-9_]* # (base 60) - ) - captures - - 1 - - name - constant.language.none.ansible - - 2 - - name - constant.language.boolean.ansible - - 3 - - name - constant.numeric.integer.ansible - - 4 - - name - constant.numeric.float.ansible - - - - + diff --git a/syntaxes/ansible/jinja-braces.tmLanguage.plist b/syntaxes/ansible/jinja-braces.tmLanguage.plist index 0fb1f963dc..333b932394 100644 --- a/syntaxes/ansible/jinja-braces.tmLanguage.plist +++ b/syntaxes/ansible/jinja-braces.tmLanguage.plist @@ -3,22 +3,22 @@ injectionSelector = 'L:string -meta.embedded.inline.jinja'; name = 'Grammar for Jinja2 expressions surrounded by double curly braces'; patterns = ( - { include = '#jinja-expression'; } + { include = '#jinja-expression'; }, + { include = '#jinja-statement'; }, + { include = '#jinja-comment'; } ); repository = { jinja-expression = { - comment = "The 'name' is used to undo highlighting as string"; - name = 'keyword.operator.ansible'; - begin = '\{\{'; - end = '\}\}'; + begin = '\{\{-?'; + end = '-?\}\}'; beginCaptures = { 0 = { - name = 'constant.character.escape.ansible'; + name = 'punctuation.section.embedded.begin.jinja'; }; }; endCaptures = { 0 = { - name = 'constant.character.escape.ansible'; + name = 'punctuation.section.embedded.end.jinja'; }; }; contentName = 'meta.embedded.inline.jinja'; @@ -26,5 +26,41 @@ { include = 'source.ansible-jinja#expression'; } ); }; + jinja-statement = { + begin = '\{%-?'; + end = '-?%\}'; + beginCaptures = { + 0 = { + name = 'punctuation.section.embedded.begin.jinja'; + }; + }; + endCaptures = { + 0 = { + name = 'punctuation.section.embedded.end.jinja'; + }; + }; + contentName = 'meta.embedded.inline.jinja'; + patterns = ( + { include = 'source.ansible-jinja#expression'; } + ); + }; + jinja-comment = { + begin = '\{#-?'; + end = '-?#\}'; + beginCaptures = { + 0 = { + name = 'punctuation.definition.comment.begin.jinja'; + }; + }; + endCaptures = { + 0 = { + name = 'punctuation.definition.comment.end.jinja'; + }; + }; + contentName = 'comment.block.jinja'; + patterns = ( + { include = 'source.ansible-jinja#comments'; } + ); + }; }; } diff --git a/syntaxes/ansible/jinja-conditionals.tmLanguage.plist b/syntaxes/ansible/jinja-conditionals.tmLanguage.plist index 3800d4bf28..d885205540 100644 --- a/syntaxes/ansible/jinja-conditionals.tmLanguage.plist +++ b/syntaxes/ansible/jinja-conditionals.tmLanguage.plist @@ -20,6 +20,7 @@ | failed_when | when | check_mode + | until )\b \s* (:) # 5 (?=\s) (?!\s*[|>''"]|\s*$|\s*\#.*$) # starting an unquoted flow @@ -53,6 +54,7 @@ | failed_when | when | check_mode + | until )\b \s* (:) # 5 (?=\s) (?!\s*[|>]|\s*$|\s*\#.*$) # not starting a block (scalar or other) @@ -88,6 +90,7 @@ | failed_when | when | check_mode + | until )\b \s* (:) # 5 \s+ (?: (\|) | (>) ) ([1-9])? ([-+])? # 6,7,8,9; starting a scalar block @@ -144,6 +147,7 @@ | failed_when | when | check_mode + | until )\b \s* (:) # 5 (.*$) # comment or illegal @@ -245,7 +249,7 @@ end = '(?x) ^(?!\1\s+) # if the indentation is too small '; - contentName = 'keyword.operator.ansible meta.embedded.inline.jinja'; + contentName = 'meta.embedded.inline.jinja'; patterns = ( { include = '#yaml-unquoted-string'; }, ); @@ -274,7 +278,7 @@ name = 'invalid.illegal.expected-comment-or-newline.ansible'; }; }; - contentName = 'keyword.operator.ansible meta.embedded.inline.jinja'; + contentName = 'meta.embedded.inline.jinja'; patterns = ( { begin = "''"; @@ -321,7 +325,7 @@ name = 'invalid.illegal.expected-comment-or-newline.ansible'; }; }; - contentName = 'keyword.operator.ansible meta.embedded.inline.jinja'; + contentName = 'meta.embedded.inline.jinja'; patterns = ( { begin = '\\"'; @@ -353,7 +357,7 @@ name = 'string.unquoted.ansible'; begin = '(?=\S)'; end = '(?!\G)'; - contentName = 'keyword.operator.ansible meta.embedded.inline.jinja'; + contentName = 'meta.embedded.inline.jinja'; patterns = ( { include = 'source.ansible-jinja#expression'; }, ); @@ -371,7 +375,7 @@ (?=\S)'; end = '(?x) ^(?!\1\s*) # if the indentation is too small'; - contentName = 'keyword.operator.ansible meta.embedded.inline.jinja'; + contentName = 'meta.embedded.inline.jinja'; patterns = ( { include = 'source.ansible-jinja#expression'; }, ); diff --git a/syntaxes/ansible/jinja-extras.tmLanguage.plist b/syntaxes/ansible/jinja-extras.tmLanguage.plist index ed6aaebca5..a78e117fc8 100644 --- a/syntaxes/ansible/jinja-extras.tmLanguage.plist +++ b/syntaxes/ansible/jinja-extras.tmLanguage.plist @@ -2,39 +2,7 @@ scopeName = 'injection.ansible.jinja-extras'; injectionSelector = 'L:meta.embedded.inline.jinja -string.quoted.double.jinja -string.quoted.single.jinja'; name = 'Grammar for Jinja2 syntax highlighting that is not provided out-of-the-box'; - patterns = ( - { include = '#literals'; } - ); - repository = { - literals = { - match = '(?x) - (none|None) - | (true|True|false|False) - | ( - [-+]? 0b [0-1_]+ # (base 2) - | [-+]? 0x [0-9a-fA-F_]+ # (base 16) - | [-+]? 0 [0-7_]+ # (base 8) - | [-+]? (?: 0|[1-9][0-9_]*) # (base 10) - | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60) - ) - | ( - [-+]? (?: [0-9] [0-9_]*)? \. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10) - | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \. [0-9_]* # (base 60) - )'; - captures = { - 1 = { - name = 'constant.language.none.ansible'; - }; - 2 = { - name = 'constant.language.boolean.ansible'; - }; - 3 = { - name = 'constant.numeric.integer.ansible'; - }; - 4 = { - name = 'constant.numeric.float.ansible'; - }; - }; - }; - }; + comment = 'Literal patterns (booleans, numbers, none) have been moved to the core jinja.tmLanguage.json grammar'; + patterns = (); + repository = {}; } diff --git a/syntaxes/external/jinja.tmLanguage.json b/syntaxes/external/jinja.tmLanguage.json index 643b877c4b..6185935a20 100644 --- a/syntaxes/external/jinja.tmLanguage.json +++ b/syntaxes/external/jinja.tmLanguage.json @@ -112,7 +112,7 @@ "name": "keyword.control.jinja" }, "2": { - "name": "variable.other.jinja.filter" + "name": "entity.name.function.filter.jinja" } }, "match": "\\s*\\b(filter)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b" @@ -123,10 +123,13 @@ "name": "keyword.control.jinja" }, "2": { - "name": "variable.other.jinja.test" + "name": "keyword.control.jinja" + }, + "3": { + "name": "entity.name.function.test.jinja" } }, - "match": "\\s*\\b(is)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b" + "match": "\\b(is)\\s+(not\\s+)?([a-zA-Z_][a-zA-Z0-9_]*)\\b" }, { "captures": { @@ -137,23 +140,50 @@ "match": "(?<=\\{\\%-|\\{\\%)\\s*\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?!\\s*[,=])" }, { - "match": "\\b(and|else|if|in|import|not|or|recursive|with(out)?\\s+context)\\b", + "captures": { + "1": { + "name": "variable.parameter.jinja" + }, + "2": { + "name": "keyword.operator.assignment.jinja" + } + }, + "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s*(=)(?!=)" + }, + { + "captures": { + "1": { + "name": "entity.name.function.jinja" + } + }, + "match": "\\b(?!and|or|not|in\\b)([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=\\()" + }, + { + "match": "\\b(else|if|elif|endif|for|endfor|break|continue|set|endset|macro|endmacro|block|endblock|call|endcall|filter|endfilter|include|import|extends|from|do|raw|endraw|recursive|with(out)?\\s+context|with|endwith|as)\\b", "name": "keyword.control.jinja" }, { - "match": "\\b(true|false|none)\\b", + "match": "\\b(and|or|not|in)\\b", + "name": "keyword.operator.logical.jinja" + }, + { + "match": "\\b(true|false|none|True|False|None)\\b", "name": "constant.language.jinja" }, { "match": "\\b(loop|super|self|varargs|kwargs)\\b", "name": "variable.language.jinja" }, + { + "match": "\\b(?:0[xX][0-9a-fA-F]+|0[bB][01]+|0[oO][0-7]+|[0-9]+(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?)\\b", + "name": "constant.numeric.jinja" + }, { "match": "[a-zA-Z_][a-zA-Z0-9_]*", "name": "variable.other.jinja" }, { - "match": "(\\+|\\-|\\*\\*|\\*|\/\/|\/|%)", + "match": "(\\+|\\-|\\*\\*|\\*|//|/|%|~)", "name": "keyword.operator.arithmetic.jinja" }, { @@ -162,10 +192,10 @@ "name": "punctuation.other.jinja" }, "2": { - "name": "variable.other.jinja.filter" + "name": "entity.name.function.filter.jinja" } }, - "match": "(\\|)([a-zA-Z_][a-zA-Z0-9_]*)" + "match": "(\\|)\\s*([a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z0-9_]*)*)" }, { "captures": { @@ -173,10 +203,10 @@ "name": "punctuation.other.jinja" }, "2": { - "name": "variable.other.jinja.attribute" + "name": "variable.other.property.jinja" } }, - "match": "(\\.)([a-zA-Z_][a-zA-Z0-9_]*)" + "match": "(\\.)\\s*([a-zA-Z_][a-zA-Z0-9_]*|[0-9]+)" }, { "begin": "\\[", @@ -225,7 +255,7 @@ "name": "punctuation.other.jinja" }, { - "match": "(==|<=|=>|<|>|!=)", + "match": "(==|<=|>=|<|>|!=)", "name": "keyword.operator.comparison.jinja" }, { @@ -273,13 +303,13 @@ ] }, { - "begin": "@\/", + "begin": "@/", "beginCaptures": [ { "name": "punctuation.definition.regexp.begin.jinja" } ], - "end": "\/", + "end": "/", "endCaptures": [ { "name": "punctuation.definition.regexp.end.jinja"