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;
     }
 

Reply via email to