# Launch Configuration Types

###### Identifier:

org.eclipse.debug.core.launchConfigurationTypes

###### Description:

This extension point provides a configurable mechanism for launching applications. Each launch configuration type has a name, supports one or more modes (run and/or debug), and specifies a delegate responsible for the implementation of launching an application. As of 3.2 the types can also define a migration delegate that can be used to set resource mappings between projects and the launch configurations that launch them.

###### Configuration Markup:

<!ELEMENT extension (launchConfigurationType+)>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

- point - a fully qualified identifier of the target extension point
- id - an optional identifier of the extension instance
- name - an optional name of the extension instance

<!ELEMENT launchConfigurationType (fileExtension+)?>

<!ATTLIST launchConfigurationType

id CDATA #REQUIRED

delegate CDATA #IMPLIED

modes CDATA #IMPLIED

name CDATA #REQUIRED

public (true | false)

category CDATA #IMPLIED

sourcePathComputerId IDREF #IMPLIED

sourceLocatorId IDREF #IMPLIED

migrationDelegate CDATA #IMPLIED

delegateName CDATA #IMPLIED

delegateDescription CDATA #IMPLIED

allowPrototypes (true | false)

allowCommandLine (true | false)

allowOutputMerging (true | false) >

- id - specifies a unique identifier for this launch configuration type.
- delegate - specifies the fully qualified name of the Java class that implements `ILaunchConfigurationDelegate`. Launch configuration instances of this type will delegate to instances of this class to perform launching. Launch delegates can also be contributed for a launch configuration type via the `launchDelegates` extension. The launch delegate specified by a `launchConfigurationType` extension is responsible for launching in all modes specified by the same extension. To extend the launching capabilities of an existing configuration type, or when different delegates are required for different launch mode combinations, the `launchDelegates` extension should be used to contribute a launch delegate.
- modes - specifies a comma-separated list of the modes this type of lauch configuration supports - "run" and/or "debug". Launch modes can also be contributed for a launch configuration type via the `launchDelegates` extension.
- name - specifies a human-readable name for this type of launch configuration.
- public - specifies whether this launch configuration type is accessible by users. Defaults to `true` if not specified.
- category - an optional attribute that specifies this launch configuration type's category. The default value is unspecified (`null`). Categories are client defined. This attribute was added in the 2.1 release.
- sourcePathComputerId - The unique identifier of a sourcePathComputer extension that is used to compute a default source lookup path for launch configurations of this type. This atttribute was added in the 3.0 release. Since 3.3, the `sourcePathComputerId` can also be specified via the `launchDelegates` extension point.
- sourceLocatorId - The unique identifier of a sourceLocator extension that is used to create the source locator for sessions launched using launch configurations of this type. This atttribute was added in the 3.0 release. Since 3.3, the `sourceLocatorId` can also be specified via the `launchDelegates` extension point.
- migrationDelegate - specifies the fully qualified name of a Java class that implements `org.eclipse.debug.core.ILaunchConfigurationMigrationDelegate`. Optional delegate used to migrate launch configurations of this type to be compatible with current tooling, since 3.2
- delegateName - A human readable name for the associated launch delegate - for example, "Eclipse JDT Launcher". This name is presented to the user when more than one launcher is available for a launch configuration and the user must choose a preferred launcher. This attribute was added in the 3.3 release.
- delegateDescription - A description of this type's launch delegate - for example "The Eclipse JDT Java Application Launcher supports running and debugging local Java applications". This description is presented to the user when more than one launcher is available for a launch configuration and the user must choose a preferred launcher. This attribute was added in the 3.3 release.
- allowPrototypes - specifies whether this launch configuration type allows prototypes or not. Defaults to `false` if not specified. This attribute was added in 4.7 release.
- allowCommandLine - specifies whether this launch configuration type allows command line or not. Defaults to `false` if not specified. This attribute was added in 4.7 release.
- allowOutputMerging - specifies whether this launch configuration type supports output merging. A launch configuration which singals support must check the launch configuration attribute "org.eclipse.debug.core.ATTR_MERGE_OUTPUT" and if its value is true perform the launch in a way that stderr and stdout are merged and both can be read through stdout. Defaults to `false` if not specified. This attribute was added in 4.13 release.

The fileExtension element is deprecated

<!ELEMENT fileExtension EMPTY>

<!ATTLIST fileExtension

extension CDATA #REQUIRED

default (true | false) >

This element is no longer used. Instead, use the `org.eclipse.debug.ui.launchShortcuts` extension point.

- extension - specifies a file extension that this launch configuration type can be used for.
- default - specifies whether this launch configuration type should be the default launch configuration type for the specified file extension. Defaults to `false` if not specified.

###### Examples:

The following is an example of a launch configuration type extension point:

     <extension point="org.eclipse.debug.core.launchConfigurationTypes">
      <launchConfigurationType
       id="com.example.ExampleIdentifier"
       delegate="com.example.ExampleLaunchConfigurationDelegate"
       modes="run,debug"
       name="Example Application"
       migrationDelegate="com.example.migrationDelegate"
       sourceLocatorId="com.example.sourceLookupDirector"
       sourcePathComputerId="com.example.sourcePathComputer"
       delegateName="Example Application Launch Tooling"
       delegateDescription="This example tooling will run or debug example code.">
      </launchConfigurationType>
     </extension>

In the example above, the specified type of launch configuration supports both run and debug modes. The specified type also has an associated migration delegate, a source locator id, a source path computer, and launch delegate name and description.

###### API Information:

Value of the attribute delegate must be a fully qualified name of a Java class that implements the interface org.eclipse.debug.core.model.ILaunchConfigurationDelegate. The value of the attribute migrationDelegate must be a fully qualified name of a Java class that implements org.eclipse.debug.core.ILaunchConfigurationMigrationDelegate.

Copyright (c) 2000, 2019 IBM Corporation and others.
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-v20.html/ SPDX-License-Identifier: EPL-2.0