tm-grammars
Version:
Collecton of TextMate grammars in JSON
301 lines (300 loc) • 6.93 kB
JSON
{
"displayName": "HTTP",
"fileTypes": [
"http",
"rest"
],
"name": "http",
"patterns": [
{
"begin": "^\\s*(?=curl)",
"end": "^\\s*(#{3,}.*?)?\\s*$",
"endCaptures": {
"0": {
"name": "comment.line.sharp.http"
}
},
"name": "http.request.curl",
"patterns": [
{
"include": "source.shell"
}
]
},
{
"begin": "\\s*(?=(\\[|\\{[^{]))",
"end": "^\\s*(#{3,}.*?)?\\s*$",
"endCaptures": {
"0": {
"name": "comment.line.sharp.http"
}
},
"name": "http.request.body.json",
"patterns": [
{
"include": "source.json"
}
]
},
{
"begin": "^\\s*(?=<\\S)",
"end": "^\\s*(#{3,}.*?)?\\s*$",
"endCaptures": {
"0": {
"name": "comment.line.sharp.http"
}
},
"name": "http.request.body.xml",
"patterns": [
{
"include": "text.xml"
}
]
},
{
"begin": "\\s*(?=(query|mutation))",
"end": "^\\s*(#{3,}.*?)?\\s*$",
"endCaptures": {
"0": {
"name": "comment.line.sharp.http"
}
},
"name": "http.request.body.graphql",
"patterns": [
{
"include": "source.graphql"
}
]
},
{
"begin": "\\s*(?=(query|mutation))",
"end": "^\\{\\s*$",
"name": "http.request.body.graphql",
"patterns": [
{
"include": "source.graphql"
}
]
},
{
"include": "#metadata"
},
{
"include": "#comments"
},
{
"captures": {
"1": {
"name": "keyword.other.http"
},
"2": {
"name": "variable.other.http"
},
"3": {
"name": "string.other.http"
}
},
"match": "^\\s*(@)([^=\\s]+)\\s*=\\s*(.*?)\\s*$",
"name": "http.filevariable"
},
{
"captures": {
"1": {
"name": "keyword.operator.http"
},
"2": {
"name": "variable.other.http"
},
"3": {
"name": "string.other.http"
}
},
"match": "^\\s*([\\&?])([^=\\s]+)=(.*)$",
"name": "http.query"
},
{
"captures": {
"1": {
"name": "entity.name.tag.http"
},
"2": {
"name": "keyword.other.http"
},
"3": {
"name": "string.other.http"
}
},
"match": "^([-\\w]+)\\s*(:)\\s*([^/].*?)\\s*$",
"name": "http.headers"
},
{
"include": "#request-line"
},
{
"include": "#response-line"
}
],
"repository": {
"comments": {
"patterns": [
{
"match": "^\\s*#+.*$",
"name": "comment.line.sharp.http"
},
{
"match": "^\\s*/{2,}.*$",
"name": "comment.line.double-slash.http"
}
]
},
"metadata": {
"patterns": [
{
"captures": {
"1": {
"name": "entity.other.attribute-name"
},
"2": {
"name": "punctuation.definition.block.tag.metadata"
},
"3": {
"name": "entity.name.type.http"
}
},
"match": "^\\s*#+\\s+((@)name)\\s+([^.\\s]+)$",
"name": "comment.line.sharp.http"
},
{
"captures": {
"1": {
"name": "entity.other.attribute-name"
},
"2": {
"name": "punctuation.definition.block.tag.metadata"
},
"3": {
"name": "entity.name.type.http"
}
},
"match": "^\\s*/{2,}\\s+((@)name)\\s+([^.\\s]+)$",
"name": "comment.line.double-slash.http"
},
{
"captures": {
"1": {
"name": "entity.other.attribute-name"
},
"2": {
"name": "punctuation.definition.block.tag.metadata"
}
},
"match": "^\\s*#+\\s+((@)note)\\s*$",
"name": "comment.line.sharp.http"
},
{
"captures": {
"1": {
"name": "entity.other.attribute-name"
},
"2": {
"name": "punctuation.definition.block.tag.metadata"
}
},
"match": "^\\s*/{2,}\\s+((@)note)\\s*$",
"name": "comment.line.double-slash.http"
},
{
"captures": {
"1": {
"name": "entity.other.attribute-name"
},
"2": {
"name": "punctuation.definition.block.tag.metadata"
},
"3": {
"name": "variable.other.http"
},
"4": {
"name": "string.other.http"
}
},
"match": "^\\s*#+\\s+((@)prompt)\\s+(\\S+)(?:\\s+(.*))?\\s*$",
"name": "comment.line.sharp.http"
},
{
"captures": {
"1": {
"name": "entity.other.attribute-name"
},
"2": {
"name": "punctuation.definition.block.tag.metadata"
},
"3": {
"name": "variable.other.http"
},
"4": {
"name": "string.other.http"
}
},
"match": "^\\s*/{2,}\\s+((@)prompt)\\s+(\\S+)(?:\\s+(.*))?\\s*$",
"name": "comment.line.double-slash.http"
}
]
},
"protocol": {
"patterns": [
{
"captures": {
"1": {
"name": "keyword.other.http"
},
"2": {
"name": "constant.numeric.http"
}
},
"match": "(HTTP)/(\\d+.\\d+)",
"name": "http.version"
}
]
},
"request-line": {
"captures": {
"1": {
"name": "keyword.control.http"
},
"2": {
"name": "const.language.http"
},
"3": {
"patterns": [
{
"include": "#protocol"
}
]
}
},
"match": "(?i)^(get|post|put|delete|patch|head|options|connect|trace|lock|unlock|propfind|proppatch|copy|move|mkcol|mkcalendar|acl|search)\\s+\\s*(.+?)(?:\\s+(HTTP/\\S+))?$",
"name": "http.requestline"
},
"response-line": {
"captures": {
"1": {
"patterns": [
{
"include": "#protocol"
}
]
},
"2": {
"name": "constant.numeric.http"
},
"3": {
"name": "string.other.http"
}
},
"match": "(?i)^\\s*(HTTP/\\S+)\\s([1-5][0-9][0-9])\\s(.*)$",
"name": "http.responseLine"
}
},
"scopeName": "source.http"
}