Эх сурвалжийг харах

Add 3.0 support and allow disable parse scenes

geequlim 8 жил өмнө
parent
commit
911f5c8d1c

+ 5 - 0
CHANGELOG.md

@@ -1,5 +1,10 @@
 # Change Log
 
+### 0.2.8
+* Add godot 3.0 project support with configuration `GodotTools.parseTextScene` >= 3
+* Remove `GodotTools.editorServerPort` configuration
+* Add configuration `GodotTools.parseTextScene` to allow disable node path parsing
+
 ### 0.2.7
 
 * Fix some error with syntax checking

+ 11 - 5
package.json

@@ -15,6 +15,7 @@
   ],
   "activationEvents": [
     "workspaceContains:engine.cfg",
+    "workspaceContains:project.godot",
     "onLanguage:gdscript"
   ],
   "main": "./out/src/extension",
@@ -41,11 +42,6 @@
       "type": "object",
       "title": "Godot tools configuration",
       "properties": {
-        "GodotTools.editorServerPort": {
-          "type": "number",
-          "default": 6996,
-          "description": "The server port of your EditorServer"
-        },
         "GodotTools.maxNumberOfProblems": {
           "type": "number",
           "default": 100,
@@ -65,6 +61,16 @@
           "type": "boolean",
           "default": false,
           "description": "Only parse variables without indents in GDScript"
+        },
+        "GodotTools.godotVersion": {
+          "type": "number",
+          "default": 2.1,
+          "description": "The godot version of your project"
+        },
+        "GodotTools.parseTextScene": {
+            "type": "boolean",
+            "default": false,
+            "description": "Parse scene files with extention ends with tscn"
         }
       }
     },

+ 3 - 6
src/gdscript/completion.ts

@@ -36,12 +36,9 @@ class GDScriptCompletionItemProvider implements CompletionItemProvider {
 
   provideCompletionItems(document : TextDocument, position : Position, token : CancellationToken) : CompletionItem[] | Thenable < CompletionItem[] > | CompletionList | Thenable < CompletionList > {
     
-    return new Promise((resolve, reject) => {
-        let items:CompletionItem[] = config.getWorkspaceCompletionItems();
-        items = [...items, ...config.bintinSybmolInfoList];
-        resolve(items);
-    });
-    
+    let items:CompletionItem[] = config.getWorkspaceCompletionItems();
+    items = [...items, ...config.bintinSybmolInfoList];
+    return items;
   }
 
   resolveCompletionItem(item : CompletionItem, token : CancellationToken) : CompletionItem | Thenable < CompletionItem > {

+ 11 - 2
src/tool_manager.ts

@@ -42,7 +42,14 @@ class ToolManager {
     // hover provider
     vscode.languages.registerHoverProvider('gdscript', new GDScriptHoverProvider());
     // code completion provider
-    vscode.languages.registerCompletionItemProvider('gdscript', new GDScriptCompletionItemProvider(), '.', '"', "'");
+    const completionDollar = (
+      vscode.workspace.getConfiguration("GodotTools").get("parseTextScene", false)
+      && (vscode.workspace.getConfiguration("GodotTools").get("godotVersion", 2.1) >= 3.0)
+    );
+    if (completionDollar)
+        vscode.languages.registerCompletionItemProvider('gdscript', new GDScriptCompletionItemProvider(), '.', '"', "'", "$");
+    else
+        vscode.languages.registerCompletionItemProvider('gdscript', new GDScriptCompletionItemProvider(), '.', '"', "'");
     // signature help provider
     vscode.languages.registerSignatureHelpProvider('gdscript', new GDScriptSignatureHelpProvider(), '(', ',');
     // Commands
@@ -131,7 +138,9 @@ class ToolManager {
   }
 
   private loadWorkspaceSymbols() {
-    this.loadAllNodesInWorkspace();
+    if (vscode.workspace.getConfiguration("GodotTools").get("parseTextScene", false)) {
+        this.loadAllNodesInWorkspace();
+    }
     this.loadAllSymbols().then(symbols=>{
         vscode.window.setStatusBarMessage("$(check) Workspace symbols", 5000);
         config.setAllSymbols(symbols);