瀏覽代碼

Add "additional options" to launch debugger with (#363)

Butch Wesley 3 年之前
父節點
當前提交
fb4d40858c
共有 5 個文件被更改,包括 19 次插入3 次删除
  1. 9 2
      package.json
  2. 3 0
      src/debugger/debug_session.ts
  3. 1 0
      src/debugger/debugger_context.ts
  4. 2 1
      src/debugger/mediator.ts
  5. 4 0
      src/debugger/server_controller.ts

+ 9 - 2
package.json

@@ -288,6 +288,11 @@
 								"type": "string",
 								"description": "Relative path from the godot.project file to a TSCN file. If launch_scene and launch_game_instance are true, and this file is defined, will launch the specified file instead of looking for an active TSCN file.",
 								"default": ""
+							},
+							"additional_options":{
+								"type":"string",
+								"description": "Additional command line arguments.",
+								"default":""
 							}
 						}
 					}
@@ -301,7 +306,8 @@
 						"port": 6007,
 						"address": "127.0.0.1",
 						"launch_game_instance": true,
-						"launch_scene": false
+						"launch_scene": false,
+						"additional_options":""
 					}
 				],
 				"configurationSnippets": [
@@ -315,7 +321,8 @@
 							"port": 6007,
 							"address": "127.0.0.1",
 							"launch_game_instance": true,
-							"launch_scene": false
+							"launch_scene": false,
+							"additional_options":""
 						}
 					}
 				]

+ 3 - 0
src/debugger/debug_session.ts

@@ -22,6 +22,7 @@ interface LaunchRequestArguments extends DebugProtocol.LaunchRequestArguments {
 	port: number;
 	project: string;
 	scene_file: string;
+	additional_options: string;
 }
 
 export class GodotDebugSession extends LoggingDebugSession {
@@ -235,6 +236,8 @@ export class GodotDebugSession extends LoggingDebugSession {
 			args.port,
 			args.launch_game_instance,
 			args.launch_scene,
+			args.scene_file,
+			args.additional_options,
 			get_configuration("scene_file_config", "") || args.scene_file,
 		]);
 

+ 1 - 0
src/debugger/debugger_context.ts

@@ -185,6 +185,7 @@ class GodotConfigurationProvider implements DebugConfigurationProvider {
 				config.address = "127.0.0.1";
 				config.launch_game_instance = true;
 				config.launch_scene = false;
+				config.additional_options = "";
 			}
 		}
 

+ 2 - 1
src/debugger/mediator.ts

@@ -32,7 +32,7 @@ export class Mediator {
 					let message_content: string = line[0];
 					//let message_kind: number = line[1];
 
-					// OutputChannel doesn't give a way to distinguish between a 
+					// OutputChannel doesn't give a way to distinguish between a
 					// regular string (message_kind == 0) and an error string (message_kind == 1).
 
 					this.output.appendLine(message_content);
@@ -149,6 +149,7 @@ export class Mediator {
 					parameters[3],
 					parameters[4],
 					parameters[5],
+					parameters[6],
 					this.debug_data
 				);
 				break;

+ 4 - 0
src/debugger/server_controller.ts

@@ -92,6 +92,7 @@ export class ServerController {
 		launch_instance: boolean,
 		launch_scene: boolean,
 		scene_file: string | undefined,
+		additional_options: string | undefined,
 		debug_data: GodotDebugData
 	) {
 		this.debug_data = debug_data;
@@ -118,6 +119,9 @@ export class ServerController {
 				}
 				executable_line += ` "${filename}"`;
 			}
+			if(additional_options){
+				executable_line += " " + additional_options;
+			}
 			executable_line += this.breakpoint_string(
 				debug_data.get_all_breakpoints(),
 				project_path