You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2021/12/09 16:19:23 UTC
[sling-whiteboard] 03/18: Dynamic completions for data-sly-repeat
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to branch feature/vscode-htl
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git
commit bc58f8bf3cbcf619b8b1f56ae5f9975f33c1a022
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Tue Dec 7 18:31:59 2021 +0100
Dynamic completions for data-sly-repeat
---
vscode-htl/src/extension.ts | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/vscode-htl/src/extension.ts b/vscode-htl/src/extension.ts
index bfa686a..89a3094 100644
--- a/vscode-htl/src/extension.ts
+++ b/vscode-htl/src/extension.ts
@@ -49,27 +49,32 @@ export function activate(context: vscode.ExtensionContext) {
let generalCompletions = [];
+ // TODO - provide completions for all global bindings
let props = new vscode.CompletionItem('properties');
props.documentation = new vscode.MarkdownString('List of properties of the current Resource. Backed by _org.apache.sling.api.resource.ValueMap_');
generalCompletions.push(props);
+ // TODO - deep auto-completion for resource and request
let req = new vscode.CompletionItem('request');
req.documentation = new vscode.MarkdownString('The current request. Backed by _org.apache.sling.api.SlingHttpServletRequest_');
generalCompletions.push(req);
- // TODO - provide completion for data-sly-use.* objects
- // if unable to inteligently define context, just parse the whole document and accumulate
-
let htmlDoc = parse(document.getText());
let elements = htmlDoc.getElementsByTagName("*");
+ // TODO - provide only relevant completions based on the position in the document
elements
.filter( e => e.rawAttrs.indexOf('data-sly-') >= 0 )
.forEach(e => {
// element.attributes parses data-sly-use.foo="bar" incorrectly into {data-sly-use="", foo="bar"}
- let attrs = e.rawAttrs;
- for ( const match of attrs.matchAll(slyUseRegexp) ) {
+ let rawAttrs = e.rawAttrs;
+ for ( const match of rawAttrs.matchAll(slyUseRegexp) ) {
generalCompletions.push(new vscode.CompletionItem(match[1]));
}
+ if ( rawAttrs.indexOf('data-sly-repeat=') >= 0 ) {
+ generalCompletions.push(new vscode.CompletionItem("item"));
+ generalCompletions.push(new vscode.CompletionItem("itemList")); // TODO - expand completions for itemList
+ }
+ // TODO - support named data-sly-repeat completions, e.g. data-sly-repeat.meh=...
});
return generalCompletions;