diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c68a80..263508e 100644 --- a/CHANGELOG.md +++ b/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 diff --git a/package.json b/package.json index 5c1695f..c618d20 100644 --- a/package.json +++ b/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" } } }, diff --git a/src/gdscript/completion.ts b/src/gdscript/completion.ts index 9612796..2690e26 100644 --- a/src/gdscript/completion.ts +++ b/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 > { diff --git a/src/tool_manager.ts b/src/tool_manager.ts index cf3c659..d954c5f 100644 --- a/src/tool_manager.ts +++ b/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);