Eclipse または Eclipse-plugin-dev の回答になるかどうかはわかりません。
オープンソースの Nodeclipseプロジェクトplugin.xmlでは、.coffee ファイルcoffee
を、coffee --compile
またはNode with monitor
( 3 つの LaunchShortcuts が定義されています)として起動できることが定義されています。
最初は正常に動作しますが、その後の起動では以前の LaunchType のみが繰り返されます。保存された LaunchConfiguration を削除すると (Run -> Run Configurations から)、再度実行できることがわかりました (そして、このタイプとしてのみ)。
問題のコードは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 を追加しても違いはありません。