Skip to content
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
2fd47bb
fix: update lsp dependencies
kolipakakondal Mar 19, 2025
3eee414
fix: update dependencies
kolipakakondal Mar 19, 2025
6c44c5a
feat: updating API for lsp3 and cdt12
sigmaaa Mar 24, 2025
e2a449d
fix: update execution env
sigmaaa Mar 27, 2025
ff06464
fix: updating pom and manifest to javaSE-21
sigmaaa Mar 27, 2025
774c41d
fix: update execution env
sigmaaa Mar 27, 2025
a7b9ebd
fix: Update CI Java to 21
kolipakakondal Apr 1, 2025
68fcf4e
fix: remove spotbugs as doesn't support java 21
kolipakakondal Apr 1, 2025
df58322
fix: remove storage dependency
kolipakakondal Apr 1, 2025
07a4cc4
fix: add build
kolipakakondal Apr 1, 2025
200b33e
fix: update tycho 4.0.9 for fixing macos aarm64 build issues
kolipakakondal Apr 1, 2025
c878a80
fix: change the default value for clangd
sigmaaa Apr 2, 2025
3c1d9e5
fix: check active launch target before restart
sigmaaa Apr 2, 2025
6c05f54
Revert "fix: check active launch target before restart"
sigmaaa Apr 2, 2025
dcf536b
fix: test added update query job
sigmaaa Apr 2, 2025
4dc94f9
Revert "fix: test added update query job"
sigmaaa Apr 2, 2025
d1c60a8
feat: updated default editor lsp options
sigmaaa Apr 3, 2025
c375a61
fix: fixed empy html page in the project wizard
sigmaaa Apr 9, 2025
133c2fa
fxi: remove duplicate swtchart dependency
kolipakakondal Apr 11, 2025
8c5c9a4
fix: remove mylyn wikitext plugin
kolipakakondal Apr 14, 2025
be5ff58
fix: update dependencies to avoid update site errors
kolipakakondal Apr 16, 2025
10612fb
feat: added justj to dependencies update site
sigmaaa Apr 17, 2025
41862f3
fix: check the activeLaunchTarget for null
sigmaaa Apr 17, 2025
910dda9
feat: added logging for debugging
sigmaaa Apr 23, 2025
baa817e
feat: added min versions for critical plugins
sigmaaa Apr 24, 2025
acd59c0
update justj jre as a feature
kolipakakondal Apr 24, 2025
af63534
fix: restoring back MANIFEST.MF
sigmaaa Apr 24, 2025
dca4db0
fix: updating cmake_arguments constant
sigmaaa Apr 24, 2025
bcf0eaf
feat: update Java prereq in doc
sigmaaa Apr 25, 2025
5da3a3c
fix: added missing jfreechart to the manifest.mf
sigmaaa Apr 25, 2025
84d0722
adding aarch64 for macos in openjdk
alirana01 Apr 25, 2025
0f12f9d
feat: update the docs regarding updatesite
sigmaaa Apr 25, 2025
20e83f8
feat: fix typo in the marketplaceupdate.rst
sigmaaa Apr 25, 2025
711cdc1
fix: fixing typo in the Resolve.png
sigmaaa Apr 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 8 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,14 @@ jobs:
with:
maven-version: 3.9.6

- name: Set up JDK 17
uses: actions/setup-java@v3
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '17'
java-version: '21'
distribution: 'temurin'

- name: Build with Maven
run: export NO_AT_BRIDGE=1 && mvn clean verify -Djarsigner.skip=true spotbugs:spotbugs -DskipTests=false -DtestWorkspace=/opt/actions-runner/_work/workspace
- uses: jwgmeligmeyling/spotbugs-github-action@master
with:
path: '**/spotbugsXml.xml'
run: export NO_AT_BRIDGE=1 && mvn clean verify -Djarsigner.skip=true -DskipTests=false -DtestWorkspace=/opt/actions-runner/_work/workspace

- name: Publish Test Reports
if: ${{ always() }}
Expand All @@ -65,10 +62,10 @@ jobs:
steps:
- uses: actions/checkout@v2

- name: Set up JDK 17
uses: actions/setup-java@v2
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '17'
java-version: '21'
distribution: 'temurin'

- name: Build with Maven
Expand Down
9 changes: 7 additions & 2 deletions bundles/com.espressif.idf.branding/.classpath
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
34 changes: 22 additions & 12 deletions bundles/com.espressif.idf.core/.classpath
Original file line number Diff line number Diff line change
@@ -1,29 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.9.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-text-1.10.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/opencsv-5.7.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/snakeyaml-1.30.jar"/>
<classpathentry exported="true" kind="lib" path="lib/json-simple-1.1.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-io-2.9.0.jar" sourcepath="lib/commons-io-2.9.0-sources.jar">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/com.espressif.idf.core/lib/commons-io-2.9.0-javadoc.jar!/"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" output="bin" path="src">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="lib/json-simple-1.1.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-collections4-4.4.jar" sourcepath="lib/commons-collections4-4.4-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/com.espressif.idf.core/lib/commons-collections4-4.4-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="lib/commons-io-2.9.0.jar" sourcepath="lib/commons-io-2.9.0-sources.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/com.espressif.idf.core/lib/commons-io-2.9.0-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="lib/commons-lang3-3.12.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/snakeyaml-1.30.jar"/>
<classpathentry exported="true" kind="lib" path="lib/opencsv-5.7.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.9.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/commons-text-1.10.0.jar"/>
<classpathentry kind="lib" path="lib/commons-compress-1.21.jar"/>
<classpathentry kind="lib" path="lib/xz-1.9.jar"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="output" path="bin"/>
</classpath>
8 changes: 4 additions & 4 deletions bundles/com.espressif.idf.core/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.filesystem;visibility:=reexport,
org.eclipse.core.resources;visibility:=reexport,
org.eclipse.cdt.core;bundle-version="8.0.0",
org.eclipse.cdt.core;bundle-version="9.0.0",
org.eclipse.cdt.cmake.core;visibility:=reexport,
org.eclipse.core.expressions;visibility:=reexport,
org.eclipse.cdt.managedbuilder.core;visibility:=reexport,
Expand All @@ -30,9 +30,9 @@ Require-Bundle: org.eclipse.core.runtime,
com.sun.jna,
com.sun.jna.platform,
org.eclipse.cdt.lsp.clangd,
org.eclipse.cdt.lsp,
org.eclipse.lsp4e,
org.eclipse.lsp4j
org.eclipse.cdt.lsp;bundle-version="3.0.0",
org.eclipse.lsp4e;bundle-version="0.18.18",
org.eclipse.lsp4j;bundle-version="0.24.0"
Bundle-RequiredExecutionEnvironment: JavaSE-17
Automatic-Module-Name: com.espressif.idf.core
Bundle-ActivationPolicy: lazy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,10 @@ public IDFBuildConfiguration(IBuildConfiguration config, String name) throws Cor
super(config, name);
}

public IDFBuildConfiguration(IBuildConfiguration config, String name, IToolChain toolChain)
{
this(config, name, toolChain, null, "run"); //$NON-NLS-1$
}

public IDFBuildConfiguration(IBuildConfiguration config, String name, IToolChain toolChain,
ICMakeToolChainFile toolChainFile, String launchMode)
ICMakeToolChainFile toolChainFile, String launchMode, ILaunchTarget target)
{
super(config, name, toolChain, launchMode);
super(config, name, toolChain, launchMode, target);
this.toolChainFile = toolChainFile;
}

Expand Down Expand Up @@ -581,9 +576,13 @@ public IToolChain getToolChain() throws CoreException
String id = getProperty(TOOLCHAIN_ID);
IToolChainManager toolChainManager = CCorePlugin.<IToolChainManager>getService(IToolChainManager.class);
ILaunchBarManager launchBarManager = CCorePlugin.getService(ILaunchBarManager.class);
Collection<IToolChain> matchedToolChains = toolChainManager
.getToolChainsMatching(Map.of(IToolChain.ATTR_OS, launchBarManager.getActiveLaunchTarget()
.getAttribute(LaunchBarTargetConstants.TARGET, StringUtil.EMPTY), TOOLCHAIN_TYPE, typeId));
ILaunchTarget activeTarget = launchBarManager.getActiveLaunchTarget();
if (activeTarget == null)
{
return super.getToolChain();
}
Collection<IToolChain> matchedToolChains = toolChainManager.getToolChainsMatching(Map.of(IToolChain.ATTR_OS,
activeTarget.getAttribute(LaunchBarTargetConstants.TARGET, StringUtil.EMPTY), TOOLCHAIN_TYPE, typeId));
return matchedToolChains.stream().findAny().orElse(toolChainManager.getToolChain(typeId, id));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import org.eclipse.cdt.core.build.ICBuildConfigurationManager;
import org.eclipse.cdt.core.build.ICBuildConfigurationProvider;
import org.eclipse.cdt.core.build.IToolChain;
import org.eclipse.cdt.core.build.IToolChainManager;
import org.eclipse.core.resources.IBuildConfiguration;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
Expand All @@ -27,7 +26,6 @@

import com.espressif.idf.core.IDFCorePlugin;
import com.espressif.idf.core.logging.Logger;
import com.espressif.idf.core.toolchain.ESPToolchain;

/**
* @author Kondal Kolipaka <[email protected]>
Expand All @@ -51,80 +49,38 @@ public String getId()
public synchronized ICBuildConfiguration getCBuildConfiguration(IBuildConfiguration config, String name)
throws CoreException
{
ILaunchBarManager barManager = IDFCorePlugin.getService(ILaunchBarManager.class);
ILaunchTarget target = barManager != null ? barManager.getActiveLaunchTarget() : null;
if (config.getName().equals(IBuildConfiguration.DEFAULT_CONFIG_NAME))
{
IToolChain toolChain = null;

// try the toolchain for the current target
IToolChainManager toolChainManager = IDFCorePlugin.getService(IToolChainManager.class);
ILaunchBarManager barManager = IDFCorePlugin.getService(ILaunchBarManager.class);
try
{
ILaunchTarget target = barManager.getActiveLaunchTarget();
if (target == null)
{
return null;
}
for (IToolChain tc : toolChainManager.getToolChainsMatching(target.getAttributes()))
{
if (tc instanceof ESPToolchain)
{
toolChain = tc;
break;
}
}
}
catch (CoreException e)
{
Logger.log(e);
}

// current didn't work, try and find one that does
if (toolChain == null)
{
for (IToolChain tc : toolChainManager.getToolChainsMatching(new HashMap<>()))
{
if (tc instanceof ESPToolchain)
{
toolChain = tc;
break;
}
}

}

if (toolChain != null)
{
return new IDFBuildConfiguration(config, name, toolChain);
}
else
{
// No valid combinations
return null;
}
Logger.log("Default config name is not supported"); //$NON-NLS-1$
return null;
}
IDFBuildConfiguration cmakeConfig = new IDFBuildConfiguration(config, name);
ICMakeToolChainFile tcFile = cmakeConfig.getToolChainFile();
IToolChain toolChain = cmakeConfig.getToolChain();
if (toolChain == null)
{
Logger.log("Toolchain is null"); //$NON-NLS-1$
// config not complete
return null;
}
if (tcFile != null && !toolChain.equals(tcFile.getToolChain()))
{
// toolchain changed
return new IDFBuildConfiguration(config, name, tcFile.getToolChain(), tcFile, cmakeConfig.getLaunchMode());
return new IDFBuildConfiguration(config, name, tcFile.getToolChain(), tcFile, cmakeConfig.getLaunchMode(),
target);
}
Comment on lines +71 to 73
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Launch target propagated only on toolchain change

target is passed to the IDFBuildConfiguration constructor only when the tool‑chain differs from the CMake tool‑chain file.
For the common path (tool‑chains equal) the build configuration will miss the launch target, which can later surface as a null when resolving debugger paths (compare the stack‑trace shared in the PR discussion).

Consider always wiring the launch target:

-			return new IDFBuildConfiguration(config, name, tcFile.getToolChain(), tcFile, cmakeConfig.getLaunchMode(),
-					target);
+			return new IDFBuildConfiguration(config, name, tcFile.getToolChain(), tcFile,
+					cmakeConfig.getLaunchMode(), target);
...
-			return cmakeConfig;
+			return new IDFBuildConfiguration(config, name, toolChain, tcFile, cmakeConfig.getLaunchMode(), target);

To verify whether the launch target is indeed only wired in the tool‑chain‐change branch, let’s inspect both the new IDFBuildConfiguration invocations and the return cmakeConfig branch:


🏁 Script executed:

#!/bin/bash
# Show all constructor calls where target is passed
rg -n "new IDFBuildConfiguration" -C5 bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java

# Show the branch that simply returns cmakeConfig
rg -n "return cmakeConfig" -C5 bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java

Length of output: 1897


Always wire the launch target in both branches

Both the “toolchain changed” path and the default path currently return different constructors—only the former includes target. In the else branch the launch target is never set, leading to a null later in debugger resolution.

Please update in
bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java
around the toolchain‐check:

@@ -70,8 +70,14 @@
     if (tcFile != null && !toolChain.equals(tcFile.getToolChain()))
     {
         // toolchain changed
-        return new IDFBuildConfiguration(config, name,
-                tcFile.getToolChain(), tcFile, cmakeConfig.getLaunchMode(), target);
+        return new IDFBuildConfiguration(
+            config, name,
+            tcFile.getToolChain(), tcFile,
+            cmakeConfig.getLaunchMode(),
+            target
+        );
     }
     else
     {
-        return cmakeConfig;
+        // always include the launch target to avoid null in debugger paths
+        return new IDFBuildConfiguration(
+            config, name,
+            toolChain, tcFile,
+            cmakeConfig.getLaunchMode(),
+            target
+        );
     }

This ensures target is passed into every IDFBuildConfiguration instance.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
return new IDFBuildConfiguration(config, name, tcFile.getToolChain(), tcFile, cmakeConfig.getLaunchMode(),
target);
}
if (tcFile != null && !toolChain.equals(tcFile.getToolChain()))
{
// toolchain changed
return new IDFBuildConfiguration(
config, name,
tcFile.getToolChain(), tcFile,
cmakeConfig.getLaunchMode(),
target
);
}
else
{
// always include the launch target to avoid null in debugger paths
return new IDFBuildConfiguration(
config, name,
toolChain, tcFile,
cmakeConfig.getLaunchMode(),
target
);
}

else
{
return cmakeConfig;
}

}

@Override
public ICBuildConfiguration createBuildConfiguration(IProject project, IToolChain toolChain, String launchMode,
IProgressMonitor monitor) throws CoreException
public ICBuildConfiguration createCBuildConfiguration(IProject project, IToolChain toolChain, String launchMode,
ILaunchTarget launchTarget, IProgressMonitor monitor) throws CoreException
Comment on lines +82 to +83
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

API method signature changed and renamed

The method has been renamed from createBuildConfiguration to createCBuildConfiguration and a new ILaunchTarget parameter has been added. This is a breaking change that might require updates to any code calling this method.


🏁 Script executed:

#!/bin/bash
# Check for any other code that might be calling the old method signature
rg "createBuildConfiguration\(" --type java

Length of output: 231


Action Required: Update API Call to the New Method Signature

The API method in bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java was renamed from createBuildConfiguration to createCBuildConfiguration and now includes an additional ILaunchTarget parameter. However, the following call still uses the old method signature:

  • buildConfig = configManager.createBuildConfiguration(this, project, name, monitor);

Please update this invocation (and any similar references throughout the codebase) to use the new method name and include the required ILaunchTarget argument.

{
// get matching toolchain file if any
Map<String, String> properties = new HashMap<>();
Expand All @@ -150,7 +106,7 @@ public ICBuildConfiguration createBuildConfiguration(IProject project, IToolChai
}

// Let's generate build artifacts directly under the build folder so that CLI and eclipse IDF will be in sync
String name = ICBuildConfiguration.DEFAULT_NAME;
String name = ICBuildConfiguration.TOOLCHAIN_ID;
IBuildConfiguration buildConfig;
if (configManager.hasConfiguration(this, project, name))
{
Expand All @@ -162,7 +118,8 @@ public ICBuildConfiguration createBuildConfiguration(IProject project, IToolChai

}

CBuildConfiguration cmakeConfig = new IDFBuildConfiguration(buildConfig, name, toolChain, file, launchMode);
CBuildConfiguration cmakeConfig = new IDFBuildConfiguration(buildConfig, name, toolChain, file, launchMode,
launchTarget);
configManager.addBuildConfiguration(buildConfig, cmakeConfig);
return cmakeConfig;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import org.eclipse.lsp4e.LanguageServiceAccessor;
import org.eclipse.ui.PlatformUI;

import com.espressif.idf.core.ILSPConstants;

@SuppressWarnings("restriction")
public class LspService
{
Expand Down Expand Up @@ -45,49 +47,40 @@ public void restartLspServers()

public void updateAdditionalOptions(String additionalOptions)
{
if (configuration.metadata() instanceof ClangdMetadata metadata)
{
String qualifier = configuration.qualifier();
InstanceScope.INSTANCE.getNode(qualifier).put(metadata.additionalOptions().identifer(), additionalOptions);
}
String qualifier = configuration.qualifier();
InstanceScope.INSTANCE.getNode(qualifier).put(ClangdMetadata.Predefined.additionalOptions.identifer(),
additionalOptions);
}

public void updateLspQueryDrivers()
{
if (configuration.metadata() instanceof ClangdMetadata metadata)
{
String qualifier = configuration.qualifier();
InstanceScope.INSTANCE.getNode(qualifier).put(metadata.queryDriver().identifer(),
metadata.queryDriver().defaultValue());
}
String qualifier = configuration.qualifier();
// By passing --query-driver argument to clangd helps to resolve the
// cross-compiler toolchain headers.
String toolchainPath = IDFUtil.getToolchainExePathForActiveTarget();
InstanceScope.INSTANCE.getNode(qualifier).put(ClangdMetadata.Predefined.queryDriver.identifer(), toolchainPath);
}

public void updateClangdPath()
{
if (configuration.metadata() instanceof ClangdMetadata metadata)
{
String qualifier = configuration.qualifier();
InstanceScope.INSTANCE.getNode(qualifier).put(metadata.clangdPath().identifer(),
metadata.clangdPath().defaultValue());
}
String qualifier = configuration.qualifier();
InstanceScope.INSTANCE.getNode(qualifier).put(ClangdMetadata.Predefined.clangdPath.identifer(),
IDFUtil.findCommandFromBuildEnvPath(ILSPConstants.CLANGD_EXECUTABLE));
}

public void updateCompileCommandsDir(String buildDir)
{
if (configuration.metadata() instanceof ClangdMetadata metadata)
{
String qualifier = configuration.qualifier();
String identifier = metadata.additionalOptions().identifer();
IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(qualifier);
String qualifier = configuration.qualifier();
String identifier = ClangdMetadata.Predefined.additionalOptions.identifer();
IEclipsePreferences preferences = InstanceScope.INSTANCE.getNode(qualifier);

String existingOptions = preferences.get(identifier, StringUtil.EMPTY);
String compileCommandsDirString = "--compile-commands-dir="; //$NON-NLS-1$
String newCompuileCommandsDirString = compileCommandsDirString + buildDir;
String updatedOptions = existingOptions.contains(compileCommandsDirString)
? existingOptions.replaceAll(compileCommandsDirString + ".+", //$NON-NLS-1$
Matcher.quoteReplacement(newCompuileCommandsDirString))
: newCompuileCommandsDirString;
preferences.put(identifier, updatedOptions);
}
String existingOptions = preferences.get(identifier, StringUtil.EMPTY);
String compileCommandsDirString = "--compile-commands-dir="; //$NON-NLS-1$
String newCompuileCommandsDirString = compileCommandsDirString + buildDir;
String updatedOptions = existingOptions.contains(compileCommandsDirString)
? existingOptions.replaceAll(compileCommandsDirString + ".+", //$NON-NLS-1$
Matcher.quoteReplacement(newCompuileCommandsDirString))
: newCompuileCommandsDirString;
preferences.put(identifier, updatedOptions);
}
}
17 changes: 14 additions & 3 deletions bundles/com.espressif.idf.debug.gdbjtag.openocd/.classpath
Original file line number Diff line number Diff line change
@@ -1,11 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" output="target/classes" path="src">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry exported="true" kind="lib" path="svd" sourcepath="svd"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Loading
Loading