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