我正在尝试为Intellij开发一个将使用调试器的插件。
我以这个仓库为例,但就我而言,doExecute从未执行过。
因此仅在我的文件中执行[
public class StudioScriptDebuggerRunner extends DefaultProgramRunner {
@NotNull
@Override
public String getRunnerId() {
return "StudioScriptDebuggerRunner";
}
@Override
public boolean canRun(@NotNull String executorId, @NotNull RunProfile profile) {
return executorId.equals(DefaultDebugExecutor.EXECUTOR_ID) && profile instanceof StudioDebuggerRunConfiguration;
}
@Override
protected RunContentDescriptor doExecute(@NotNull RunProfileState state, @NotNull ExecutionEnvironment env) throws ExecutionException {
FileDocumentManager.getInstance().saveAllDocuments();
return super.doExecute(state, env);
}
@Override
public void execute(@NotNull ExecutionEnvironment environment) throws ExecutionException {
FileDocumentManager.getInstance().saveAllDocuments();
Project[] projects = ProjectManager.getInstance().getOpenProjects();
StudioConfigurationProvider config = StudioConfigurationProvider.getInstance(projects[0]);
RunContentDescriptor descriptor = XDebuggerManager.getInstance(environment.getProject()).startSession(environment, new XDebugProcessStarter() {
@NotNull
public XDebugProcess start(@NotNull XDebugSession session) throws ExecutionException {
final SDAPIClient client = new SDAPIClient(config.getHostname(), config.getUsername(), config.getPassword(), "StudioDebuggerClient");
client.createSession();
return new StudioDebuggerProcess(session, client);
}
}).getRunContentDescriptor();
environment.setContentToReuse(descriptor);
}
}
plugin.xml
<programRunner id="StudioScriptDebuggerRunner" implementation="com.binarysushi.studio.debugger.StudioScriptDebuggerRunner" order="last"/>