不确定它是 Eclipse 还是 Eclipse-plugin-dev 答案。
在开源的 Nodeclipse项目plugin.xml 中定义了 .coffee 文件可以作为coffee
,coffee --compile
或Node with monitor
(有3 个定义的 LaunchShortcuts ) 启动。
第一次它工作正常,但随后的启动只重复以前的 LaunchType。我发现删除已保存的 LaunchConfiguration(从运行 -> 运行配置)将让它再次运行(然后仅作为这种类型再次运行)
有问题的代码是LaunchShortcut(见下面的代码片段),但是没有任何if
检查,所以这个行为应该在 Eclipse org.eclipse.debug 模块中更深入。
保存的 LaunchConfiguration 如何覆盖 LaunchType ?
/**
* Launch an file,using the file information, which means using default
* launch configurations.
*
* @param file
* @param mode
*/
private void launchFile(IFile file, String mode) throws CoreException {
// check for an existing launch config for the file
String path = file.getFullPath().toString();
ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
ILaunchConfigurationType type = launchManager.getLaunchConfigurationType(Constants.LAUNCH_CONFIGURATION_TYPE_ID);
ILaunchConfiguration configuration = createLaunchConfiguration(type, path, file);
DebugUITools.launch(configuration, mode);
// then execution goes in LaunchConfigurationDelegate.java launch() method
}
/**
* Create a new configuration and set useful data.
*
* @param type
* @param path
* @param file
* @return
* @throws CoreException
*/
private ILaunchConfiguration createLaunchConfiguration(ILaunchConfigurationType type, String path, IFile file) throws CoreException {
String configname = file.getFullPath().toString().replace('/', '-');
if(configname.startsWith("-")) {
configname = configname.substring(1);
}
ILaunchConfiguration[] configs = DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurations(type);
for(ILaunchConfiguration config : configs) {
if(configname.equals(config.getName())) {
return config;
}
}
// create a new configuration for the file
ILaunchConfigurationWorkingCopy workingCopy = type.newInstance(null, configname);
workingCopy.setAttribute(Constants.KEY_FILE_PATH, path);
setMoreAttributes(workingCopy);
return workingCopy.doSave();
}
protected void setMoreAttributes(ILaunchConfigurationWorkingCopy workingCopy) {
// stub for extension
}
帮助!代码片段可能不足以回答问题,但引用文件和所有内容都在 Github 存储库中。提出了这个问题,因为我不确定是否有可能为同一个文件设置多个运行配置。然后代码片段根本不重要。
更新:看了一段时间plugin.xml 定义了 .coffee 文件可以启动,我注意到我实际上<configurationType
id= "org.nodeclipse.debug.launch.LaunchConfigurationType" >
在所有 5 种情况下都使用相同的。但是,为每次启动添加唯一的 LaunchConfigurationType id 并没有什么区别。