{ "name": "liquid", "scopeName": "text.html.liquid", "fileTypes": ["liquid"], "foldingStartMarker": "(?x)\n{%\n -?\n \\s*\n (capture|case|comment|for|form|if|javascript|paginate|schema|style)\n [^(%})]+\n%}\n", "foldingStopMarker": "(?x)\n{%\n \\s*\n (endcapture|endcase|endcomment|endfor|endform|endif|endjavascript|endpaginate|endschema|endstyle)\n [^(%})]+\n%}\n", "injections": { "L:meta.embedded.block.js, L:meta.embedded.block.css, L:meta.embedded.block.html, L:string.quoted": { "patterns": [ { "include": "#injection" } ] } }, "patterns": [ { "include": "#core" } ], "repository": { "core": { "patterns": [ { "include": "#raw_tag" }, { "include": "#comment_block" }, { "include": "#style_codefence" }, { "include": "#stylesheet_codefence" }, { "include": "#json_codefence" }, { "include": "#javascript_codefence" }, { "include": "#object" }, { "include": "#tag" }, { "include": "text.html.basic" } ] }, "injection": { "patterns": [ { "include": "#raw_tag" }, { "include": "#comment_block" }, { "include": "#object" }, { "include": "#tag_injection" } ] }, "raw_tag": { "begin": "{%-?\\s*(raw)\\s*-?%}", "end": "{%-?\\s*(endraw)\\s*-?%}", "beginCaptures": { "1": { "name": "entity.name.tag.liquid" } }, "endCaptures": { "1": { "name": "entity.name.tag.liquid" } }, "name": "meta.entity.tag.raw.liquid", "contentName": "string.unquoted.liquid", "patterns": [ { "match": "(.(?!{%-?\\s*endraw\\s*-?%}))*." } ] }, "comment_block": { "begin": "{%-?\\s*comment\\s*-?%}", "end": "{%-?\\s*endcomment\\s*-?%}", "name": "comment.block.liquid", "patterns": [ { "include": "#comment_block" }, { "match": "(.(?!{%-?\\s*(comment|endcomment)\\s*-?%}))*." } ] }, "style_codefence": { "begin": "({%-?)\\s*(style)\\s*(-?%})", "end": "({%-?)\\s*(endstyle)\\s*(-?%})", "beginCaptures": { "0": { "name": "meta.tag.metadata.style.start.liquid" }, "1": { "name": "punctuation.definition.tag.begin.liquid" }, "2": { "name": "entity.name.tag.style.liquid" }, "3": { "name": "punctuation.definition.tag.begin.liquid" } }, "endCaptures": { "0": { "name": "meta.tag.metadata.style.end.liquid" }, "1": { "name": "punctuation.definition.tag.end.liquid" }, "2": { "name": "entity.name.tag.style.liquid" }, "3": { "name": "punctuation.definition.tag.end.liquid" } }, "name": "meta.block.style.liquid", "contentName": "meta.embedded.block.css", "patterns": [ { "include": "source.css" } ] }, "stylesheet_codefence": { "begin": "({%-?)\\s*(stylesheet)\\s*(-?%})", "end": "({%-?)\\s*(endstylesheet)\\s*(-?%})", "beginCaptures": { "0": { "name": "meta.tag.metadata.style.start.liquid" }, "1": { "name": "punctuation.definition.tag.begin.liquid" }, "2": { "name": "entity.name.tag.style.liquid" }, "3": { "name": "punctuation.definition.tag.begin.liquid" } }, "endCaptures": { "0": { "name": "meta.tag.metadata.style.end.liquid" }, "1": { "name": "punctuation.definition.tag.end.liquid" }, "2": { "name": "entity.name.tag.style.liquid" }, "3": { "name": "punctuation.definition.tag.end.liquid" } }, "name": "meta.block.style.liquid", "contentName": "meta.embedded.block.css", "patterns": [ { "include": "source.css" } ] }, "json_codefence": { "begin": "({%-?)\\s*(schema)\\s*(-?%})", "end": "({%-?)\\s*(endschema)\\s*(-?%})", "beginCaptures": { "0": { "name": "meta.tag.metadata.schema.start.liquid" }, "1": { "name": "punctuation.definition.tag.begin.liquid" }, "2": { "name": "entity.name.tag.schema.liquid" }, "3": { "name": "punctuation.definition.tag.begin.liquid" } }, "endCaptures": { "0": { "name": "meta.tag.metadata.schema.end.liquid" }, "1": { "name": "punctuation.definition.tag.end.liquid" }, "2": { "name": "entity.name.tag.schema.liquid" }, "3": { "name": "punctuation.definition.tag.end.liquid" } }, "name": "meta.block.schema.liquid", "contentName": "meta.embedded.block.json", "patterns": [ { "include": "source.json" } ] }, "javascript_codefence": { "begin": "({%-?)\\s*(javascript)\\s*(-?%})", "end": "({%-?)\\s*(endjavascript)\\s*(-?%})", "beginCaptures": { "0": { "name": "meta.tag.metadata.javascript.start.liquid" }, "1": { "name": "punctuation.definition.tag.begin.liquid" }, "2": { "name": "entity.name.tag.javascript.liquid" }, "3": { "name": "punctuation.definition.tag.begin.liquid" } }, "endCaptures": { "0": { "name": "meta.tag.metadata.javascript.end.liquid" }, "1": { "name": "punctuation.definition.tag.end.liquid" }, "2": { "name": "entity.name.tag.javascript.liquid" }, "3": { "name": "punctuation.definition.tag.end.liquid" } }, "name": "meta.block.javascript.liquid", "contentName": "meta.embedded.block.js", "patterns": [ { "include": "source.js" } ] }, "tag": { "begin": "(?|\\<|\\>\\=|\\<\\=|or|and|contains)(?:(?=\\s)|\\b)", "captures": { "1": { "name": "keyword.operator.expression.liquid" } } }, "language_constant": { "match": "\\b(false|true|nil|blank)\\b|empty(?!\\?)", "name": "constant.language.liquid" }, "attribute": { "begin": "\\w+:", "end": "(?=,|%}|}}|\\|)", "beginCaptures": { "0": { "name": "entity.other.attribute-name.liquid" } }, "patterns": [ { "include": "#value_expression" } ] }, "attribute_liquid": { "begin": "\\w+:", "end": "(?=,|\\|)|$", "beginCaptures": { "0": { "name": "entity.other.attribute-name.liquid" } }, "patterns": [ { "include": "#value_expression" } ] }, "filter": { "match": "\\|\\s*((?![\\.0-9])[a-zA-Z0-9_-]+\\:?)\\s*", "captures": { "1": { "name": "support.function.liquid" } } }, "value_expression": { "patterns": [ { "match": "(\\[)(\\|)(?=[^\\]]*)(?=\\])", "captures": { "2": { "name": "invalid.illegal.filter.liquid" }, "3": { "name": "invalid.illegal.filter.liquid" } } }, { "match": "(?<=\\s)(\\+|\\-|\\/|\\*)(?=\\s)", "name": "invalid.illegal.filter.liquid" }, { "include": "#language_constant" }, { "include": "#operator" }, { "include": "#invalid_range" }, { "include": "#range" }, { "include": "#number" }, { "include": "#string" }, { "include": "#variable_lookup" } ] }, "variable_lookup": { "patterns": [ { "match": "\\b(additional_checkout_buttons|address|all_country_option_tags|all_products|article|articles|block|blog|blogs|canonical_url|cart|checkout|collection|collections|comment|content_for_additional_checkout_buttons|content_for_header|content_for_index|content_for_layout|country_option_tags|currency|current_page|current_tags|customer|customer_address|discount_allocation|discount_application|external_video|font|forloop|form|fulfillment|gift_card|handle|image|images|line_item|link|linklist|linklists|location|localization|metafield|model|model_source|order|page|page_description|page_image|page_title|pages|paginate|part|policy|powered_by_link|predictive_search|product|product_option|product_variant|recommendations|request|routes|script|scripts|search|section|selling_plan|selling_plan_allocation|selling_plan_group|settings|shipping_method|shop|shop_locale|store_availability|tablerow|tax_line|template|theme|transaction|unit_price_measurement|variant|video|video_source)\\b", "name": "variable.language.liquid" }, { "match": "((?<=\\w\\:\\s)\\w+)", "name": "variable.parameter.liquid" }, { "begin": "(?<=\\w)\\[", "beginCaptures": { "0": { "name": "punctuation.section.brackets.begin.liquid" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.section.brackets.end.liquid" } }, "name": "meta.brackets.liquid", "patterns": [ { "include": "#string" } ] }, { "match": "(?<=(\\w|\\])\\.)([-\\w]+\\??)", "name": "variable.other.member.liquid" }, { "match": "(?<=\\w)\\.(?=\\w)", "name": "punctuation.accessor.liquid" }, { "match": "(?i)[a-z_](\\w|(?:-(?!\\}\\})))*", "name": "variable.other.liquid" } ] } } }