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:27 UTC
[sling-whiteboard] 07/18: completions: simplify completion generation
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 80cbb13b55860602b2928a5bc87767d848a7508c
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Thu Dec 9 11:32:50 2021 +0100
completions: simplify completion generation
---
vscode-htl/src/htlCompletionItemProvider.ts | 30 ++++++++++-------------------
1 file changed, 10 insertions(+), 20 deletions(-)
diff --git a/vscode-htl/src/htlCompletionItemProvider.ts b/vscode-htl/src/htlCompletionItemProvider.ts
index 206cbcc..3904724 100644
--- a/vscode-htl/src/htlCompletionItemProvider.ts
+++ b/vscode-htl/src/htlCompletionItemProvider.ts
@@ -32,36 +32,21 @@ export class HtlCompletionItemProvider implements vscode.CompletionItemProvider
}
let completionContext = linePrefix.substring(completionStart + 2).trim();
- let completions: vscode.CompletionItem[] = [];
+ let completionProperties = this.completionData.getGlobalCompletions();
let completionCandidate = "";
- let previousJavaType = "";
for ( const match of completionContext.matchAll(identifierAccess)) {
- let completionProperties: CompletionDefinition[];
- if ( previousJavaType ) {
- completionProperties = this.completionData.findPropertyCompletions(previousJavaType);
- } else {
- completionProperties = this.completionData.getGlobalCompletions();
- }
completionCandidate = match[1];
let matchingDefinition = completionProperties.find( e => e.name === completionCandidate );
if ( matchingDefinition ) {
- previousJavaType = matchingDefinition.javaType;
+ completionProperties = this.completionData.findPropertyCompletions(matchingDefinition.javaType);
}
}
- if ( completionCandidate ) {
- let completionProposals = this.completionData.findPropertyCompletions(previousJavaType);
-
- completionProposals.forEach ( element => {
- completions.push( this.toCompletionItem(element) );
- });
- } else {
-
- this.completionData.getGlobalCompletions().map( element => {
- completions.push(this.toCompletionItem(element));
- });
+ let completions: vscode.CompletionItem[] = [];
+ // top-level matches, propose completions based on HTML document
+ if ( !completionCandidate ) {
let htmlDoc = parse(doc);
let elements = htmlDoc.getElementsByTagName("*");
// TODO - provide only relevant completions based on the position in the document
@@ -81,6 +66,11 @@ export class HtlCompletionItemProvider implements vscode.CompletionItemProvider
});
}
+ // provide completions based on properties ( top-level bindings or nested ones)
+ completionProperties.forEach ( element => {
+ completions.push( this.toCompletionItem(element) );
+ });
+
return completions;
}