From c7c164564c55fd170b1cb5cac8e7c32b0db40a7c Mon Sep 17 00:00:00 2001 From: shiraji <isogai.shiraji@gmail.com> Date: Wed, 20 Mar 2024 17:56:45 +0900 Subject: [PATCH] Use UpToDateLineNumberProviderImpl to calculate current line --- .../action/ListPullRequestToggleAction.kt | 12 ++++++++++-- .../ListPullRequestTextAnnotationGutterProvider.kt | 9 +++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/com/github/shiraji/findpullrequest/action/ListPullRequestToggleAction.kt b/src/main/kotlin/com/github/shiraji/findpullrequest/action/ListPullRequestToggleAction.kt index 98795d8..1601f51 100644 --- a/src/main/kotlin/com/github/shiraji/findpullrequest/action/ListPullRequestToggleAction.kt +++ b/src/main/kotlin/com/github/shiraji/findpullrequest/action/ListPullRequestToggleAction.kt @@ -25,6 +25,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer import com.intellij.openapi.vcs.ProjectLevelVcsManager import com.intellij.openapi.vcs.VcsException +import com.intellij.openapi.vcs.impl.UpToDateLineNumberProviderImpl import com.intellij.openapi.vfs.VirtualFile import com.intellij.util.ui.UIUtil import git4idea.GitRevisionNumber @@ -167,8 +168,15 @@ class ListPullRequestToggleAction : ToggleAction() { } ApplicationManager.getApplication().invokeLater { - val provider = - ListPullRequestTextAnnotationGutterProvider(map, virtualFile, fileAnnotation, model, repository) + val upToDateLineNumberProvider = UpToDateLineNumberProviderImpl(editor.document, project) + val provider = ListPullRequestTextAnnotationGutterProvider( + map, + virtualFile, + fileAnnotation, + model, + repository, + upToDateLineNumberProvider + ) editor.gutter.registerTextAnnotation(provider, provider) } } diff --git a/src/main/kotlin/com/github/shiraji/findpullrequest/annotation/ListPullRequestTextAnnotationGutterProvider.kt b/src/main/kotlin/com/github/shiraji/findpullrequest/annotation/ListPullRequestTextAnnotationGutterProvider.kt index 1f03b0a..da5f1d8 100644 --- a/src/main/kotlin/com/github/shiraji/findpullrequest/annotation/ListPullRequestTextAnnotationGutterProvider.kt +++ b/src/main/kotlin/com/github/shiraji/findpullrequest/annotation/ListPullRequestTextAnnotationGutterProvider.kt @@ -19,12 +19,13 @@ import git4idea.repo.GitRepository import java.awt.Color import java.awt.Cursor -class ListPullRequestTextAnnotationGutterProvider constructor( +class ListPullRequestTextAnnotationGutterProvider( private val gitHashesMap: HashMap<String, GitPullRequestInfo>, val virtualFile: VirtualFile, private val fileAnnotation: FileAnnotation, private val model: FindPullRequestModel, - private val repository: GitRepository + private val repository: GitRepository, + private val upToDateLineNumberProvider: UpToDateLineNumberProviderImpl, ) : TextAnnotationGutterProvider, EditorGutterAction { override fun getPopupActions(line: Int, editor: Editor?): MutableList<AnAction> { @@ -36,7 +37,6 @@ class ListPullRequestTextAnnotationGutterProvider constructor( } override fun getLineText(line: Int, editor: Editor?): String? { - val upToDateLineNumberProvider = UpToDateLineNumberProviderImpl(editor?.document, editor?.project) val currentLine = upToDateLineNumberProvider.getLineNumber(line) if (currentLine < 0) return "" val hash = fileAnnotation.getLineRevisionNumber(currentLine)?.asString() ?: "" @@ -62,7 +62,8 @@ class ListPullRequestTextAnnotationGutterProvider constructor( override fun doAction(lineNum: Int) { object : Task.Backgroundable(fileAnnotation.project, "Opening Pull Request...") { override fun run(indicator: ProgressIndicator) { - val hash = fileAnnotation.getLineRevisionNumber(lineNum)?.asString() ?: "" + val currentLine = upToDateLineNumberProvider.getLineNumber(lineNum) + val hash = fileAnnotation.getLineRevisionNumber(currentLine)?.asString() ?: "" val gitPullRequestInfo = gitHashesMap[hash] ?: return val hostingService = gitPullRequestInfo.hostingServices ?: return val webRepoUrl = model.createWebRepoUrl(repository) ?: return