mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[ADD] owl-vision: vscode extension initial commit
Owl Vision is a vscode extension that improves owl developpement by adding
syntax highlights in templates and commands to easly navigate between
components and templates.
It also adds a Component snippet.
Commands:
* `Owl Vision: Find Template`:
- If the cursor is on a template name, finds the corresponding template.
- If the cursor is on a component, finds the template of the selected component.
* `Owl Vision: Find Component`: Finds the selected component definition.
* `Owl Vision: Switch`: Finds the corresponding template or component
depending on the current file.
* `Owl Vision: Switch Besides`: Finds the corresponding template or component
depending on the current file and opens it besides.
Settings:
* `owl-vision.js.include`: Javascript files to include in search.
* `owl-vision.js.exclude`: Javascript files to exclude in search.
* `owl-vision.xml.include`: XML files to include in search.
* `owl-vision.xml.exclude`: XML files to exclude in search.
This commit is contained in:
committed by
Géry Debongnie
parent
acbe316689
commit
166cada8ff
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"injectionSelector": "L:source.js -comment",
|
||||
"scopeName": "owl.markup.inline",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#markup"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"markup": {
|
||||
"begin": "\\s+(markup)(`)",
|
||||
"contentName": "meta.embedded.block.html",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "entity.name.function.tagged-template.js owl-markup"
|
||||
},
|
||||
"2": {
|
||||
"name": "punctuation.definition.string.template.begin.js string.template.js"
|
||||
}
|
||||
},
|
||||
"end": "(`)",
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.string.template.end.js string.template.js"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{
|
||||
"include": "text.html.basic"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"injectionSelector": "L:source.js -comment",
|
||||
"scopeName": "owl.template.inline",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#xml-tag"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"xml-tag": {
|
||||
"begin": "\\s+(xml)(`)",
|
||||
"contentName": "meta.embedded.block.xml",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "entity.name.function.tagged-template.js owl-inline-template"
|
||||
},
|
||||
"2": {
|
||||
"name": "punctuation.definition.string.template.begin.js string.template.js"
|
||||
}
|
||||
},
|
||||
"end": "(`)",
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.string.template.end.js string.template.js"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{
|
||||
"include": "owl.template"
|
||||
},
|
||||
{
|
||||
"include": "text.xml"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,257 @@
|
||||
{
|
||||
"injectionSelector": "L:text.xml -comment",
|
||||
"scopeName": "owl.template",
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#component-tags"
|
||||
},
|
||||
{
|
||||
"include": "#t-tag"
|
||||
},
|
||||
{
|
||||
"include": "#xml-tags"
|
||||
},
|
||||
{
|
||||
"include": "#props"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
"component-tags": {
|
||||
"begin": "(</?)([A-Z][a-zA-Z0-9_]*)",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.tag.xml owl.punctuation"
|
||||
},
|
||||
"2": {
|
||||
"name": "entity.name.type.class owl.component"
|
||||
}
|
||||
},
|
||||
"end": "\\s*([/?]?>)",
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.tag.xml punctuation"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#qweb-directives-interpreted"
|
||||
},
|
||||
{
|
||||
"include": "#qweb-directives-string"
|
||||
},
|
||||
{
|
||||
"include": "#component-props"
|
||||
}
|
||||
]
|
||||
},
|
||||
"component-props": {
|
||||
"contentName": "meta.embedded.block.javascript string.quoted.double.xml",
|
||||
"begin": "(\\s*)([a-zA-Z_:.]*)(=)(\")",
|
||||
"beginCaptures": {
|
||||
"2": {
|
||||
"name": "entity.other.attribute-name.localname.xml owl.component.props"
|
||||
},
|
||||
"4": {
|
||||
"name": "punctuation.definition.string.begin.xml punctuation"
|
||||
}
|
||||
},
|
||||
"end": "(\")",
|
||||
"endCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.string.end.xml punctuation"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{
|
||||
"include": "source.js"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.logical.js",
|
||||
"match": "\\s(and|or)\\s"
|
||||
}
|
||||
]
|
||||
},
|
||||
"xml-tags": {
|
||||
"begin": "(</?)([a-z][a-zA-Z0-9_:.]*)",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.tag.xml owl.xml.punctuation"
|
||||
},
|
||||
"2": {
|
||||
"name": "entity.name.tag.localname.xml owl.xml.tag"
|
||||
}
|
||||
},
|
||||
"end": "\\s*([/?]?>)",
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.tag.xml owl.xml.punctuation"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#qweb-directives-interpreted"
|
||||
},
|
||||
{
|
||||
"include": "#qweb-directives-string"
|
||||
},
|
||||
{
|
||||
"include": "#qweb-directives-formatted-string"
|
||||
},
|
||||
{
|
||||
"include": "#xml-attributes"
|
||||
},
|
||||
{
|
||||
"name": "string.quoted.double.xml",
|
||||
"match": "(\")((.*)(=>)(.*))(\")"
|
||||
}
|
||||
]
|
||||
},
|
||||
"xml-attributes": {
|
||||
"contentName": "string.quoted.double.xml owl.xml.string",
|
||||
"begin": "(\\s)([a-z][a-z_:.-]+)(=)(\")",
|
||||
"beginCaptures": {
|
||||
"2": {
|
||||
"name": "entity.other.attribute-name.localname.xml owl.xml.attribute"
|
||||
},
|
||||
"4": {
|
||||
"name": "punctuation.definition.string.begin.xml owl.xml.punctuation"
|
||||
}
|
||||
},
|
||||
"end": "(\")",
|
||||
"endCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.string.end.xml owl.xml.punctuation"
|
||||
}
|
||||
}
|
||||
},
|
||||
"t-tag": {
|
||||
"begin": "(</?)(t(?![a-zA-Z]))",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.tag.xml owl.punctuation"
|
||||
},
|
||||
"2": {
|
||||
"name": "entity.name.tag.localname.xml owl.tag"
|
||||
}
|
||||
},
|
||||
"end": "\\s*([/?]?>)",
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "punctuation.definition.tag.xml owl.punctuation"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#qweb-directives-interpreted"
|
||||
},
|
||||
{
|
||||
"include": "#qweb-directives-string"
|
||||
},
|
||||
{
|
||||
"include": "#xml-attributes"
|
||||
},
|
||||
{
|
||||
"name": "string.quoted.double.xml",
|
||||
"match": "(\")((.*)(=>)(.*))(\")"
|
||||
}
|
||||
]
|
||||
},
|
||||
"qweb-directives-interpreted": {
|
||||
"contentName": "meta.embedded.block.javascript string.quoted.double.xml",
|
||||
"begin": "(\\s)(t-if|t-else|t-elif|t-foreach|t-as|t-key|t-esc|t-out|t-props|t-component|t-set|t-value|t-portal|(t-att-|t-on-)[a-z_:.-]+)(=)(\")",
|
||||
"beginCaptures": {
|
||||
"2": {
|
||||
"name": "entity.other.attribute-name.localname.xml owl.attribute"
|
||||
},
|
||||
"5": {
|
||||
"name": "punctuation.definition.string.begin.xml owl.punctuation owl.doublequote"
|
||||
}
|
||||
},
|
||||
"end": "(\")",
|
||||
"endCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.string.end.xml owl.punctuation owl.doublequote"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{
|
||||
"include": "source.js"
|
||||
},
|
||||
{
|
||||
"name": "keyword.operator.logical.js",
|
||||
"match": "\\s(and|or)\\s"
|
||||
}
|
||||
]
|
||||
},
|
||||
"qweb-directives-string": {
|
||||
"contentName": "string.quoted.double.xml",
|
||||
"begin": "(\\s)(t-name|t-ref|t-slot|t-set-slot|t-model|t-translation)(=)(\")",
|
||||
"beginCaptures": {
|
||||
"2": {
|
||||
"name": "entity.other.attribute-name.localname.xml owl.attribute"
|
||||
},
|
||||
"5": {
|
||||
"name": "punctuation.definition.string.begin.xml owl.punctuation owl.doublequote"
|
||||
}
|
||||
},
|
||||
"end": "(\")",
|
||||
"endCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.string.end.xml owl.punctuation owl.doublequote"
|
||||
}
|
||||
}
|
||||
},
|
||||
"qweb-directives-formatted-string": {
|
||||
"begin": "(\\s)(t-call|(t-attf-)[a-z_:.-]+)(=)(\")",
|
||||
"beginCaptures": {
|
||||
"2": {
|
||||
"name": "entity.other.attribute-name.localname.xml owl.attribute owl.attribute.formatted"
|
||||
},
|
||||
"5": {
|
||||
"name": "punctuation.definition.string.begin.xml owl.punctuation owl.doublequote"
|
||||
}
|
||||
},
|
||||
"end": "(\")",
|
||||
"endCaptures": {
|
||||
"0": {
|
||||
"name": "punctuation.definition.string.end.xml owl.punctuation owl.doublequote"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{
|
||||
"include": "#formatted-string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"formatted-string": {
|
||||
"contentName": "meta.embedded.block.javascript string.quoted.double.xml",
|
||||
"begin": "([^\"|}}]*)({{)",
|
||||
"beginCaptures": {
|
||||
"1": {
|
||||
"name": "string.quoted.double.xml"
|
||||
},
|
||||
"2": {
|
||||
"name": "string.quoted.double.xml owl.doublecurlybrackets"
|
||||
}
|
||||
},
|
||||
"end": "(}})([^\"|{{]*)",
|
||||
"endCaptures": {
|
||||
"1": {
|
||||
"name": "string.quoted.double.xml owl.doublecurlybrackets"
|
||||
},
|
||||
"2": {
|
||||
"name": "string.quoted.double.xml"
|
||||
}
|
||||
},
|
||||
"patterns": [
|
||||
{
|
||||
"include": "source.js"
|
||||
}
|
||||
]
|
||||
},
|
||||
"props": {
|
||||
"name": "variable.language owl.expression.props",
|
||||
"match": "\\b(props)\\b"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user