diff --git a/platform/lang-api/src/com/intellij/ide/util/EditSourceUtil.java b/platform/lang-api/src/com/intellij/ide/util/EditSourceUtil.java index a5dfbc435f81..98f515de0ae5 100644 --- a/platform/lang-api/src/com/intellij/ide/util/EditSourceUtil.java +++ b/platform/lang-api/src/com/intellij/ide/util/EditSourceUtil.java @@ -1,11 +1,13 @@ // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.util; +import com.intellij.ide.ui.UISettings; import com.intellij.navigation.NavigationItem; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.roots.GeneratedSourcesFilter; import com.intellij.openapi.util.UserDataHolder; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.vfs.VFileProperty; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; @@ -45,6 +47,9 @@ public final class EditSourceUtil { } OpenFileDescriptor desc = new OpenFileDescriptor(navigationElement.getProject(), virtualFile, offset); desc.setUseCurrentWindow(FileEditorManager.USE_CURRENT_WINDOW.isIn(navigationElement)); + if (UISettings.getInstance().getOpenInPreviewTabIfPossible() && Registry.is("editor.preview.tab.navigation")) { + desc.setUsePreviewTab(true); + } return desc; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/ide.kt b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/ide.kt index 0b1f52c9cd5e..fc98046de609 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/ide.kt +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/ide.kt @@ -9,6 +9,7 @@ import com.intellij.codeInsight.lookup.LookupManager import com.intellij.codeInsight.navigation.impl.NavigationRequestor import com.intellij.codeInsight.navigation.impl.gtdTargetNavigatable import com.intellij.ide.IdeEventQueue +import com.intellij.ide.ui.UISettings import com.intellij.idea.ActionsBundle import com.intellij.lang.LanguageNamesValidation import com.intellij.navigation.NavigationRequest @@ -58,7 +59,11 @@ internal fun navigateRequest(project: Project, request: NavigationRequest) { when (request) { is SourceNavigationRequest -> { // TODO support pure source request without OpenFileDescriptor - OpenFileDescriptor(project, request.file, request.offset).navigate(true) + val openFileDescriptor = OpenFileDescriptor(project, request.file, request.offset) + if (UISettings.getInstance().openInPreviewTabIfPossible && Registry.`is`("editor.preview.tab.navigation")) { + openFileDescriptor.isUsePreviewTab = true + } + openFileDescriptor.navigate(true) } is RawNavigationRequest -> { request.navigatable.navigate(true) diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index 7e6747409c21..37ab2dbd6a40 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -2239,5 +2239,8 @@ ide.ui.wrap.colors.description=Wrap UI colors to colors with name ide.gutter.update.free.markers.on.hover=true ide.gutter.update.free.markers.on.hover.description=Make VCS gutter wider when hovering mouse +editor.preview.tab.navigation=true +editor.preview.tab.navigation.description=Use preview tabs also when Goto Declaration is used + # please leave this note as last line # TODO please use EP com.intellij.registryKey for plugin/product specific keys