summaryrefslogtreecommitdiff
path: root/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt
diff options
context:
space:
mode:
authorKyren223 <ulmliad223@gmail.com>2024-02-13 22:22:12 +0200
committerKyren223 <ulmliad223@gmail.com>2024-02-13 22:22:12 +0200
commit3ab5bc95eb1e12837b804024cdad7ca1dcb6f1de (patch)
tree4e5566213ed3db17a7506803d5f2f83d2b65d4d2 /src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt
parent4f6266ddefa3a621d1208cc3ff538bf30319aecc (diff)
Implemented HarpoonQuickMenu, auto fuces, starts in normal mode, able to view current harpoon list, no functionality yet for navigating to a selected file or modifying the harpoon list
Diffstat (limited to 'src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt')
-rw-r--r--src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt
index fcb20a5..73c82b2 100644
--- a/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt
+++ b/src/main/kotlin/me/kyren223/harpoonforjb/HarpoonState.kt
@@ -1,6 +1,7 @@
package me.kyren223.harpoonforjb
import com.intellij.ide.util.PropertiesComponent
+import com.intellij.openapi.fileEditor.FileEditorManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.openapi.vfs.VirtualFile
@@ -8,6 +9,8 @@ import com.intellij.openapi.vfs.VirtualFile
object HarpoonState {
private var projectFiles: MutableMap<String, MutableList<VirtualFile>> = mutableMapOf()
private const val HARPOON_LIST_KEY = "HarpoonList"
+ private var quickMenuSelectedIndex: Int? = null
+ private var quickMenuContent: String? = ""
fun setFile(project: Project, index: Int, file: VirtualFile) {
if (index < 0) return
@@ -74,4 +77,24 @@ object HarpoonState {
loadProject(project)
return projectFiles[project.name]!!.size
}
+
+ fun toggleQuickMenu(project: Project) {
+ loadProject(project)
+ val content = projectFiles[project.name]!!
+ .joinToString("\n") { it.path }
+ .replace(project.basePath!!, "...")
+ .trim()
+
+ val quickMenu = HarpoonQuickMenu(content)
+ val result = quickMenu.showAndGet()
+
+ if (content != quickMenuContent) {
+ // Update the content
+ // TODO: Update the content
+ }
+
+ if (!result || quickMenuSelectedIndex == null) return
+ val file = selectFile(project, quickMenuSelectedIndex!!) ?: return
+ FileEditorManager.getInstance(project).openFile(file, true)
+ }
} \ No newline at end of file