From 4f6266ddefa3a621d1208cc3ff538bf30319aecc Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Tue, 13 Feb 2024 18:07:25 +0200 Subject: Deleted un-needed file, implemented select action, includes prev/next, for prev/next implemented wrap around --- .../kyren223/harpoonforjb/HarpoonSelectAction.kt | 31 ++++++++++++++++------ 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'src/main/kotlin/me/kyren223/harpoonforjb/HarpoonSelectAction.kt') diff --git a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonSelectAction.kt b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonSelectAction.kt index d63b6f7..3c196b8 100644 --- a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonSelectAction.kt +++ b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonSelectAction.kt @@ -2,22 +2,37 @@ package me.kyren223.harpoonforjb import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.PlatformDataKeys +import com.intellij.openapi.fileEditor.FileEditorManager class HarpoonSelectAction : AnAction() { override fun actionPerformed(e: AnActionEvent) { + val project = e.project ?: return val actionId = e.actionManager.getId(this) - if (actionId == NEXT) { - println("Next") - } else if (actionId.equals(PREV)) { - println("Previous") - } else { - val index = getIndex(actionId) - println("Goto $index") + var index = when (actionId) { + NEXT -> { + val current = HarpoonState.getIndexOfFile(project, e.getData(PlatformDataKeys.VIRTUAL_FILE)) + if (current == -1) return + current + 1 + } + PREV -> { + val current = HarpoonState.getIndexOfFile(project, e.getData(PlatformDataKeys.VIRTUAL_FILE)) + if (current == -1) return + current - 1 + } + else -> { + getIndex(actionId) + } } + + val count = HarpoonState.getFileCount(project) + index = ((index % count) + count) % count + val file = HarpoonState.selectFile(project, index) ?: return + FileEditorManager.getInstance(project).openFile(file, true) } private fun getIndex(actionId: String): Int { - return actionId.substring("HarpoonGoto".length).toInt() + return actionId.substring(SELECT.length).toInt() - 1 } companion object { -- cgit v1.3.1