diff --git a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java index 6f47e5b79ef9..3ed2ae188039 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.java @@ -27,6 +27,7 @@ import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.actionSystem.EmptyAction; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.command.undo.UndoUtil; import com.intellij.openapi.editor.*; import com.intellij.openapi.editor.colors.EditorColorsManager; @@ -45,7 +46,6 @@ import com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl; import com.intellij.openapi.fileTypes.SyntaxHighlighter; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.registry.Registry; @@ -262,12 +262,9 @@ public class LanguageConsoleImpl extends ConsoleViewImpl implements LanguageCons } private void setPromptInner(@Nullable final String prompt) { - UIUtil.invokeAndWaitIfNeeded(new Runnable() { - @Override - public void run() { - if (!myConsoleEditor.isDisposed()) { - myConsoleEditor.setPrefixTextAndAttributes(prompt, myPromptAttributes.getAttributes()); - } + UIUtil.invokeAndWaitIfNeeded((Runnable)() -> { + if (!myConsoleEditor.isDisposed()) { + myConsoleEditor.setPrefixTextAndAttributes(prompt, myPromptAttributes.getAttributes()); } }); } @@ -453,18 +450,7 @@ public class LanguageConsoleImpl extends ConsoleViewImpl implements LanguageCons @Nullable @Override public Object getData(@NonNls String dataId) { - Object data = super.getData(dataId); - if (data != null) { - return data; - } - else if (OpenFileDescriptor.NAVIGATE_IN_EDITOR.is(dataId)) { - return myConsoleEditor; - } - else if (getProject().isInitialized()) { - Caret caret = myConsoleEditor.getCaretModel().getCurrentCaret(); - return FileEditorManagerEx.getInstanceEx(getProject()).getData(dataId, myConsoleEditor, caret); - } - return null; + return super.getData(dataId); } private void installEditorFactoryListener() { @@ -555,12 +541,7 @@ public class LanguageConsoleImpl extends ConsoleViewImpl implements LanguageCons @NotNull public PsiFile getFile() { - return ApplicationManager.getApplication().runReadAction(new Computable() { - @Override - public PsiFile compute() { - return PsiUtilCore.getPsiFile(project, virtualFile); - } - }); + return ReadAction.compute(() -> PsiUtilCore.getPsiFile(project, virtualFile)); } @NotNull @@ -591,12 +572,26 @@ public class LanguageConsoleImpl extends ConsoleViewImpl implements LanguageCons EditorSettings editorSettings = editor.getSettings(); editorSettings.setAdditionalLinesCount(1); editorSettings.setAdditionalColumnsCount(1); + + DataManager.registerDataProvider(editor.getComponent(), (dataId) -> getEditorData(editor, dataId)); } @NotNull PsiFile getFileSafe() { return file == null || !file.isValid() ? file = getFile() : file; } + + @Nullable + protected Object getEditorData(@NotNull EditorEx editor, String dataId) { + if (OpenFileDescriptor.NAVIGATE_IN_EDITOR.is(dataId)) { + return editor; + } + else if (project.isInitialized()) { + Caret caret = editor.getCaretModel().getCurrentCaret(); + return FileEditorManagerEx.getInstanceEx(project).getData(dataId, editor, caret); + } + return null; + } } private class MyLayout extends AbstractLayoutManager {