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 <[email protected]> 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; }
