mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-7 store element range marker in source navigation request for further usage
GitOrigin-RevId: 0e8b8b86a1b121946b8162642cc2d2aca4d46bd8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
2f66683e48
commit
6e71daf3a7
@@ -30,7 +30,7 @@ interface NavigationRequest {
|
||||
@RequiresBackgroundThread
|
||||
@JvmStatic
|
||||
fun sourceNavigationRequest(project: Project, file: VirtualFile, offset: Int): NavigationRequest? {
|
||||
return NavigationRequests.getInstance().sourceNavigationRequest(project, file, offset)
|
||||
return NavigationRequests.getInstance().sourceNavigationRequest(project, file, offset, elementRange = null)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -42,7 +42,12 @@ interface NavigationRequest {
|
||||
@JvmStatic
|
||||
fun sourceNavigationRequest(file: PsiFile, elementRange: TextRange): NavigationRequest? {
|
||||
val virtualFile = file.virtualFile ?: return null
|
||||
return NavigationRequests.getInstance().sourceNavigationRequest(file.project, virtualFile, offset = elementRange.startOffset)
|
||||
return NavigationRequests.getInstance().sourceNavigationRequest(
|
||||
file.project,
|
||||
virtualFile,
|
||||
offset = elementRange.startOffset,
|
||||
elementRange,
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+2
-1
@@ -3,6 +3,7 @@ package com.intellij.platform.backend.navigation
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.pom.Navigatable
|
||||
import com.intellij.psi.PsiDirectory
|
||||
@@ -22,7 +23,7 @@ interface NavigationRequests {
|
||||
|
||||
@RequiresReadLock
|
||||
@RequiresBackgroundThread
|
||||
fun sourceNavigationRequest(project: Project, file: VirtualFile, offset: Int): NavigationRequest?
|
||||
fun sourceNavigationRequest(project: Project, file: VirtualFile, offset: Int, elementRange: TextRange?): NavigationRequest?
|
||||
|
||||
@RequiresReadLock
|
||||
@RequiresBackgroundThread
|
||||
|
||||
+11
-2
@@ -5,7 +5,9 @@ import com.intellij.codeInsight.navigation.NavigationUtil.shouldOpenAsNative
|
||||
import com.intellij.ide.util.EditSourceUtil
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.editor.LazyRangeMarkerFactory
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.platform.backend.navigation.NavigationRequest
|
||||
import com.intellij.platform.backend.navigation.NavigationRequests
|
||||
@@ -18,7 +20,7 @@ import com.intellij.psi.util.PsiUtilCore
|
||||
|
||||
internal class NavigationRequestsImpl : NavigationRequests {
|
||||
|
||||
override fun sourceNavigationRequest(project: Project, file: VirtualFile, offset: Int): NavigationRequest? {
|
||||
override fun sourceNavigationRequest(project: Project, file: VirtualFile, offset: Int, elementRange: TextRange?): NavigationRequest? {
|
||||
ApplicationManager.getApplication().assertReadAccessAllowed()
|
||||
ApplicationManager.getApplication().assertIsNonDispatchThread()
|
||||
if (!file.isValid) {
|
||||
@@ -31,7 +33,13 @@ internal class NavigationRequestsImpl : NavigationRequests {
|
||||
else {
|
||||
null
|
||||
}
|
||||
return SourceNavigationRequest(file, offsetMarker)
|
||||
val elementRangeMarker = if (elementRange != null) {
|
||||
FileDocumentManager.getInstance().getDocument(file, project)?.createRangeMarker(elementRange)
|
||||
}
|
||||
else {
|
||||
null
|
||||
}
|
||||
return SourceNavigationRequest(file, offsetMarker, elementRangeMarker)
|
||||
}
|
||||
|
||||
override fun directoryNavigationRequest(directory: PsiDirectory): NavigationRequest? {
|
||||
@@ -77,6 +85,7 @@ internal class NavigationRequestsImpl : NavigationRequests {
|
||||
navigationElement.project,
|
||||
virtualFile,
|
||||
navigationElement.textOffset, // this triggers decompiler if [virtualFile] corresponds to a .class file
|
||||
navigationElement.textRange,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.jetbrains.annotations.ApiStatus.Internal
|
||||
class SourceNavigationRequest internal constructor(
|
||||
val file: VirtualFile,
|
||||
val offsetMarker: RangeMarker?,
|
||||
val elementRangeMarker: RangeMarker?,
|
||||
) : NavigationRequest
|
||||
|
||||
@Internal
|
||||
|
||||
Reference in New Issue
Block a user