mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
166cada8ff
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.
30 lines
957 B
TypeScript
30 lines
957 B
TypeScript
import * as vscode from 'vscode';
|
|
import { getSelectedText, showStatusMessage, hideStatusMessage } from './utils';
|
|
import { Search } from './search';
|
|
|
|
export class ComponentDefinitionProvider implements vscode.DefinitionProvider {
|
|
|
|
search: Search;
|
|
|
|
constructor(search: Search) {
|
|
this.search = search;
|
|
}
|
|
|
|
/**
|
|
* Interface implementation to provide definition when ctrl+click on Component
|
|
* tag in template.
|
|
*/
|
|
async provideDefinition(document: vscode.TextDocument, position: vscode.Position) {
|
|
const currentWord = getSelectedText(/<\/?[A-Z][a-zA-Z]+/, document, position);
|
|
if (!currentWord) {
|
|
return;
|
|
}
|
|
const componentName = currentWord.replace(/[\/<]/g, "").trim();
|
|
|
|
showStatusMessage(`Searching for component "${componentName}"`);
|
|
const result = await this.search.findComponent(componentName);
|
|
hideStatusMessage();
|
|
return result;
|
|
}
|
|
}
|