Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions bundles/com.espressif.idf.core/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<?eclipse version="3.4"?>
<plugin>
<extension-point id="com.espressif.idf.core.toolchain" name="esptoolchain" schema="schema/com.espressif.idf.core.toolchain.exsd"/>
<extension-point id="com.espressif.idf.core.launchDefaultsContributor" name="Launch Defaults Contributor" schema="schema/launchDefaultsContributor.exsd"/>
<extension
id="idfNature"
name="IDF Nature"
Expand Down
102 changes: 102 additions & 0 deletions bundles/com.espressif.idf.core/schema/launchDefaultsContributor.exsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Schema file written by PDE -->
<schema targetNamespace="com.espressif.idf.core" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo>
<meta.schema plugin="com.espressif.idf.core" id="launchDefaultsContributor" name="Launch Defaults Contributor"/>
</appinfo>
<documentation>
[Enter description of this extension point.]
</documentation>
Comment on lines +8 to +10
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Replace PDE placeholder documentation before publishing this extension point.

Line 9, Line 70, Line 79, Line 88, and Line 97 still contain template placeholders. For a new public extension contract, these should be concrete so contributor authors can implement it correctly.

Also applies to: 69-71, 78-80, 87-89, 96-98

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bundles/com.espressif.idf.core/schema/launchDefaultsContributor.exsd` around
lines 8 - 10, The schema's <documentation> placeholders in
launchDefaultsContributor.exsd must be replaced with concrete descriptions for
the public extension contract: locate each <documentation> element inside the
extension point (the current placeholder text "[Enter description of this
extension point.]") and replace it with a clear summary of the extension's
purpose, the contract contributors must implement (expected XML
attributes/elements or extension IDs), required/optional behavior, and a short
example or usage note so implementers know how to provide launch defaults;
update all occurrences (the five placeholder documentation nodes) to use this
concrete content so contributor authors can implement correctly.

</annotation>

<element name="extension">
<annotation>
<appinfo>
<meta.element />
</appinfo>
</annotation>
<complexType>
<choice minOccurs="1" maxOccurs="unbounded">
<element ref="contributor"/>
</choice>
<attribute name="point" type="string" use="required">
<annotation>
<documentation>

</documentation>
</annotation>
</attribute>
<attribute name="id" type="string">
<annotation>
<documentation>

</documentation>
</annotation>
</attribute>
<attribute name="name" type="string">
<annotation>
<documentation>

</documentation>
<appinfo>
<meta.attribute translatable="true"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>

<element name="contributor">
<complexType>
<attribute name="class" type="string" use="required">
<annotation>
<documentation>

</documentation>
<appinfo>
<meta.attribute kind="java" basedOn=":com.espressif.idf.core.util.ILaunchDefaultsContributor"/>
</appinfo>
</annotation>
</attribute>
</complexType>
</element>

<annotation>
<appinfo>
<meta.section type="since"/>
</appinfo>
<documentation>
[Enter the first release in which this extension point appears.]
</documentation>
</annotation>

<annotation>
<appinfo>
<meta.section type="examples"/>
</appinfo>
<documentation>
[Enter extension point usage example here.]
</documentation>
</annotation>

<annotation>
<appinfo>
<meta.section type="apiinfo"/>
</appinfo>
<documentation>
[Enter API information here.]
</documentation>
</annotation>

<annotation>
<appinfo>
<meta.section type="implementation"/>
</appinfo>
<documentation>
[Enter information about supplied implementation of this extension point.]
</documentation>
</annotation>


</schema>
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.espressif.idf.core.util;

import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;

public interface ILaunchDefaultsContributor
{
/**
* Applies plugin-specific default values to a newly created launch configuration.
*/
void applyDefaults(ILaunchConfigurationWorkingCopy wc);
}
149 changes: 112 additions & 37 deletions bundles/com.espressif.idf.debug.gdbjtag.openocd/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,16 @@
-->

<plugin>
<extension
point="org.eclipse.debug.core.launchConfigurationTypes">
<launchConfigurationType
id="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationType"
modes="debug,run"
name="%launchConfig.name"
public="true">
</launchConfigurationType>
</extension>

<extension point="org.eclipse.debug.core.launchConfigurationTypes">
<launchConfigurationType
id="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationType"
modes="debug,run"
name="%launchConfig.name"
public="true" />
</extension>

<extension point="org.eclipse.debug.core.launchDelegates">
<launchDelegate
Expand All @@ -34,6 +36,16 @@
sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer"
type="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationType">
</launchDelegate>
<launchDelegate
delegate="com.espressif.idf.debug.gdbjtag.openocd.dsf.LaunchConfigurationDelegate"
delegateDescription="%launchDelegate.jtagDsf.description"
id="com.espressif.idf.debug.gdbjtag.openocd.core.dsfLaunchDelegate.unified"
modes="debug"
name="%launchDelegate.jtagDsf.name"
sourceLocatorId="org.eclipse.cdt.debug.core.sourceLocator"
sourcePathComputerId="org.eclipse.cdt.debug.core.sourcePathComputer"
type="com.espressif.idf.launch.serial.launchConfigurationType">
</launchDelegate>
</extension>

<extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
Expand Down Expand Up @@ -175,67 +187,130 @@
plugin="com.espressif.idf.debug.gdbjtag.openocd">
</statusHandler>
</extension>
<extension
point="org.eclipse.debug.ui.launchConfigurationTabs">
<extension point="org.eclipse.debug.ui.launchConfigurationTabs">

<!-- LEGACY LAYOUT: Main Tab -->
<tab
class="com.espressif.idf.debug.gdbjtag.openocd.ui.TabMain"
group="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationTabGroup"
id="org.eclipse.cdt.cdi.launch.mainTab"
name="Main">
</tab>

<!-- LEGACY LAYOUT: Debugger Tab -->
<tab
class="com.espressif.idf.debug.gdbjtag.openocd.ui.TabDebugger"
group="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationTabGroup"
id="com.espressif.idf.debug.gdbjtag.openocd.ui.debuggertab"
name="Debugger">
<placement
after="org.eclipse.cdt.cdi.launch.mainTab">
</placement>
<placement after="org.eclipse.cdt.cdi.launch.mainTab" />
</tab>

<!-- LEGACY LAYOUT: Startup Tab -->
<tab
class="com.espressif.idf.debug.gdbjtag.openocd.ui.TabStartup"
group="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationTabGroup"
id="com.espressif.idf.debug.gdbjtag.openocd.ui.startuptab"
name="Startup">
<placement
after="com.espressif.idf.debug.gdbjtag.openocd.ui.debuggertab">
</placement>
<placement after="com.espressif.idf.debug.gdbjtag.openocd.ui.debuggertab" />
</tab>

<!-- LEGACY LAYOUT: Source Lookup Tab -->
<tab
class="org.eclipse.debug.ui.sourcelookup.SourceLookupTab"
group="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationTabGroup"
id="org.eclipse.debug.ui.sourceLookupTab"
id= "org.eclipse.debug.ui.sourceLookupTab"
name="SourceLookupTab">
<placement
after="com.espressif.idf.debug.gdbjtag.openocd.ui.startuptab">
</placement>
<placement after="com.espressif.idf.debug.gdbjtag.openocd.ui.startuptab" />
</tab>

<!-- LEGACY LAYOUT: Common Tab -->

<!-- 5. Common Tab -->
<tab
class="org.eclipse.debug.ui.CommonTab"
group="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationTabGroup"
id="org.eclipse.debug.ui.commonTab"
name="CommonTab">
<placement
after="org.eclipse.debug.ui.sourceLookupTab">
</placement>
class="org.eclipse.debug.ui.CommonTab"
group="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationTabGroup"
id="org.eclipse.debug.ui.commonTab"
name="CommonTab">
<placement after="org.eclipse.debug.ui.sourceLookupTab" />
</tab>

<!-- LEGACY LAYOUT: SVD Target Tab -->
<tab
class="com.espressif.idf.debug.gdbjtag.openocd.ui.TabSvdTarget"
group="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationTabGroup"
id="org.eclipse.embedcdt.debug.gdbjtag.ui.svdtab"
name="TabSvdTarget">
<placement
after="org.eclipse.debug.ui.commonTab">
</placement>
<placement after="org.eclipse.debug.ui.commonTab" />
</tab>

</extension>
<extension point="org.eclipse.debug.ui.launchConfigurationTabs">
<!-- 1. Main Tab -->
<tab
class="com.espressif.idf.debug.gdbjtag.openocd.ui.TabDebugger"
group="com.espressif.idf.debug.gdbjtag.openocd.launchConfigurationTabGroup"
id="com.espressif.idf.debug.gdbjtag.openocd.ui.debuggertab"
name="Debugger">
<placement
after="org.eclipse.cdt.cdi.launch.mainTab">
</placement>
class="com.espressif.idf.debug.gdbjtag.openocd.ui.TabMain"
group="com.espressif.idf.launch.serial.ui.launchConfigurationTabGroup"
id="org.eclipse.cdt.cdi.launch.mainTab"
name="Main">
<associatedDelegate delegate="com.espressif.idf.debug.gdbjtag.openocd.core.dsfLaunchDelegate.unified" />
</tab>
</extension>

<!-- 2. Debugger Tab -->
<tab
class="com.espressif.idf.debug.gdbjtag.openocd.ui.TabDebugger"
group="com.espressif.idf.launch.serial.ui.launchConfigurationTabGroup"
id="com.espressif.idf.debug.gdbjtag.openocd.ui.debuggertab"
name="Debugger">
<placement after="org.eclipse.cdt.cdi.launch.mainTab" />
<associatedDelegate delegate="com.espressif.idf.debug.gdbjtag.openocd.core.dsfLaunchDelegate.unified" />
</tab>

<!-- 3. Startup Tab -->
<tab
class="com.espressif.idf.debug.gdbjtag.openocd.ui.TabStartup"
group="com.espressif.idf.launch.serial.ui.launchConfigurationTabGroup"
id="com.espressif.idf.debug.gdbjtag.openocd.ui.startuptab"
name="Startup">
<placement after="com.espressif.idf.debug.gdbjtag.openocd.ui.debuggertab" />
<associatedDelegate delegate="com.espressif.idf.debug.gdbjtag.openocd.core.dsfLaunchDelegate.unified" />
</tab>

<!-- 4. Source Lookup Tab -->
<tab
class="org.eclipse.debug.ui.sourcelookup.SourceLookupTab"
group="com.espressif.idf.launch.serial.ui.launchConfigurationTabGroup"
id="org.eclipse.debug.ui.sourceLookupTab"
name="SourceLookupTab">
<placement after="com.espressif.idf.debug.gdbjtag.openocd.ui.startuptab" />
<associatedDelegate delegate="com.espressif.idf.debug.gdbjtag.openocd.core.dsfLaunchDelegate.unified" />
</tab>

<!-- 5. Common Tab -->
<tab
class="org.eclipse.debug.ui.CommonTab"
group="com.espressif.idf.launch.serial.ui.launchConfigurationTabGroup"
id="org.eclipse.debug.ui.commonTab"
name="CommonTab">
<placement after="org.eclipse.debug.ui.sourceLookupTab" />
<associatedDelegate delegate="com.espressif.idf.debug.gdbjtag.openocd.core.dsfLaunchDelegate.unified" />
</tab>

<!-- 6. Svd Target Tab -->
<tab
class="com.espressif.idf.debug.gdbjtag.openocd.ui.TabSvdTarget"
group="com.espressif.idf.launch.serial.ui.launchConfigurationTabGroup"
id="org.eclipse.embedcdt.debug.gdbjtag.ui.svdtab"
name="TabSvdTarget">
<placement after="org.eclipse.debug.ui.commonTab" />
<associatedDelegate delegate="com.espressif.idf.debug.gdbjtag.openocd.core.dsfLaunchDelegate.unified" />
</tab>

</extension>
<extension
point="com.espressif.idf.core.launchDefaultsContributor">
<contributor
class="com.espressif.idf.debug.gdbjtag.openocd.preferences.OpenOCDDefaultsInjector">
</contributor>
</extension>

</plugin>
Loading
Loading