void (@NotNull Project project, @NotNull ExecutionResult executionResult) { final String filePath = FileUtil.toSystemDependentName(new File(myConfig.getInputFile()).getAbsolutePath()); final ProcessHandler processHandler = executionResult.getProcessHandler(); processHandler.addProcessListener(new ProcessAdapter() { @Override public void startNotified(@NotNull ProcessEvent event) { processHandler.notifyTextAvailable(INPUT_FILE_MESSAGE + filePath + "\n", ProcessOutputTypes.SYSTEM); } @Override public void processTerminated(@NotNull ProcessEvent event) { processHandler.removeProcessListener(this); } }); final ExecutionConsole console = executionResult.getExecutionConsole(); if (console instanceof ConsoleView) { ((ConsoleView)console).addMessageFilter(new Filter() { @Nullable @Override public Result applyFilter(@NotNull String line, int entireLength) { int position = line.indexOf(INPUT_FILE_MESSAGE); if (position >= 0) { VirtualFile file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(filePath)); if (file == null) { return null; } return new Result(entireLength - filePath.length() - 1, entireLength, new OpenFileHyperlinkInfo(new OpenFileDescriptor(project, file))); } return null; } }); } }