diff --git a/Ghidra/Features/Base/src/main/help/help/topics/VSCodeIntegration/VSCodeIntegration.htm b/Ghidra/Features/Base/src/main/help/help/topics/VSCodeIntegration/VSCodeIntegration.htm index 5e4b05751b..e525ed6f2a 100644 --- a/Ghidra/Features/Base/src/main/help/help/topics/VSCodeIntegration/VSCodeIntegration.htm +++ b/Ghidra/Features/Base/src/main/help/help/topics/VSCodeIntegration/VSCodeIntegration.htm @@ -37,10 +37,26 @@
+
One use of the optional argument fields is to
+ launch a Flatpak installation of Visual Studio Code. In this case, the executable path might be
+ "/usr/bin/flatpak", and the two optional arguments might be "run" and "com.visualstudio.code".
+
This action creates a new Visual Studio Code project folder which can be used as a convenient
starting point to develop a new Ghidra module. The new project will be linked against the
diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/vscode/VSCodeIntegrationOptionsPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/vscode/VSCodeIntegrationOptionsPlugin.java
index e32e0675a0..1739bb634b 100644
--- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/vscode/VSCodeIntegrationOptionsPlugin.java
+++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/vscode/VSCodeIntegrationOptionsPlugin.java
@@ -44,9 +44,21 @@ public class VSCodeIntegrationOptionsPlugin extends Plugin implements Applicatio
public static final String PLUGIN_OPTIONS_NAME = "Visual Studio Code Integration";
public static final String VSCODE_EXE_PATH_OPTION = "Visual Studio Code Executable Path";
- private static final String VSCODE_EXE_PATH_DESC = "Path to Visual Studio Code executable";
+ private static final String VSCODE_EXE_PATH_DESC = "Full path to Visual Studio Code executable";
private static final File VSCODE_EXE_PATH_DEFAULT = getDefaultVSCodeExecutable();
+ public static final String VSCODE_ARG1_OPTION =
+ "Visual Studio Code Launch Argument 1 (optional)";
+ private static final String VSCODE_ARG1_DESC =
+ "Optional argument 1 for Visual Studio Code executable";
+ private static final String VSCODE_ARG1_DEFAULT = null;
+
+ public static final String VSCODE_ARG2_OPTION =
+ "Visual Studio Code Launch Argument 2 (optional)";
+ private static final String VSCODE_ARG2_DESC =
+ "Optional argument 2 for Visual Studio Code executable";
+ private static final String VSCODE_ARG2_DEFAULT = null;
+
public VSCodeIntegrationOptionsPlugin(PluginTool tool) {
super(tool);
}
@@ -57,6 +69,10 @@ public class VSCodeIntegrationOptionsPlugin extends Plugin implements Applicatio
ToolOptions options = tool.getOptions(PLUGIN_OPTIONS_NAME);
options.registerOption(VSCODE_EXE_PATH_OPTION, OptionType.FILE_TYPE,
VSCODE_EXE_PATH_DEFAULT, null, VSCODE_EXE_PATH_DESC);
+ options.registerOption(VSCODE_ARG1_OPTION, OptionType.STRING_TYPE,
+ VSCODE_ARG1_DEFAULT, null, VSCODE_ARG1_DESC);
+ options.registerOption(VSCODE_ARG2_OPTION, OptionType.STRING_TYPE,
+ VSCODE_ARG2_DEFAULT, null, VSCODE_ARG2_DESC);
options.setOptionsHelpLocation(
new HelpLocation("VSCodeIntegration", "VSCodeIntegrationOptions"));
}
diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/vscode/VSCodeIntegrationPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/vscode/VSCodeIntegrationPlugin.java
index 4c7e20a2f8..1929f31da3 100644
--- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/vscode/VSCodeIntegrationPlugin.java
+++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/vscode/VSCodeIntegrationPlugin.java
@@ -19,6 +19,7 @@ import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.*;
import com.google.gson.*;
@@ -153,6 +154,16 @@ public class VSCodeIntegrationPlugin extends ProgramPlugin implements VSCodeInte
return vscodeExecutableFile;
}
+ @Override
+ public List