From 1e30fa7ded9939fa45a45f82f84c1e8cd95d68aa Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Thu, 9 May 2024 00:41:36 +0300 Subject: Refactored a lot of the code and added a bunch of features and settings. Not finished yet but committing, so I can push to GitHub --- .../me/kyren223/trident/actions/AppendAction.kt | 16 ++++++++ .../me/kyren223/trident/actions/SelectAction.kt | 44 ++++++++++++++++++++++ .../kyren223/trident/actions/TridentListAction.kt | 33 ++++++++++++++++ .../trident/actions/TridentListSelectAction.kt | 14 +++++++ .../trident/actions/TridentMappingsAction.kt | 12 ++++++ 5 files changed, 119 insertions(+) create mode 100644 src/main/kotlin/me/kyren223/trident/actions/AppendAction.kt create mode 100644 src/main/kotlin/me/kyren223/trident/actions/SelectAction.kt create mode 100644 src/main/kotlin/me/kyren223/trident/actions/TridentListAction.kt create mode 100644 src/main/kotlin/me/kyren223/trident/actions/TridentListSelectAction.kt create mode 100644 src/main/kotlin/me/kyren223/trident/actions/TridentMappingsAction.kt (limited to 'src/main/kotlin/me/kyren223/trident/actions') diff --git a/src/main/kotlin/me/kyren223/trident/actions/AppendAction.kt b/src/main/kotlin/me/kyren223/trident/actions/AppendAction.kt new file mode 100644 index 0000000..1b9a2b4 --- /dev/null +++ b/src/main/kotlin/me/kyren223/trident/actions/AppendAction.kt @@ -0,0 +1,16 @@ +package me.kyren223.trident.actions + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.PlatformDataKeys +import com.intellij.openapi.project.Project +import com.intellij.openapi.vfs.VirtualFile +import me.kyren223.trident.utils.TridentList + +class AppendAction : AnAction() { + override fun actionPerformed(e: AnActionEvent) { + val project: Project = e.project ?: return + val file: VirtualFile = e.getData(PlatformDataKeys.VIRTUAL_FILE) ?: return + TridentList.append(project, file) + } +} diff --git a/src/main/kotlin/me/kyren223/trident/actions/SelectAction.kt b/src/main/kotlin/me/kyren223/trident/actions/SelectAction.kt new file mode 100644 index 0000000..37617c4 --- /dev/null +++ b/src/main/kotlin/me/kyren223/trident/actions/SelectAction.kt @@ -0,0 +1,44 @@ +package me.kyren223.trident.actions + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.actionSystem.PlatformDataKeys +import com.intellij.openapi.fileEditor.FileEditorManager +import me.kyren223.trident.utils.TridentList + +class SelectAction : AnAction() { + override fun actionPerformed(e: AnActionEvent) { + val project = e.project ?: return + var index = when (val actionId = e.actionManager.getId(this)) { + NEXT -> { + val file = e.getData(PlatformDataKeys.VIRTUAL_FILE) ?: return + val current = TridentList.getIndexOfFile(project, file) ?: return + current + 1 + } + + PREV -> { + val file = e.getData(PlatformDataKeys.VIRTUAL_FILE) ?: return + val current = TridentList.getIndexOfFile(project, file) ?: return + current - 1 + } + + else -> { + getIndex(actionId!!) + } + } + + val file = TridentList.select(project, index) ?: return + FileEditorManager.getInstance(project).openFile(file, true) + } + + private fun getIndex(actionId: String): Int { + return actionId.substring(SELECT.length).toInt() - 1 + } + + companion object { + const val NEXT = "TridentSelectNext" + const val PREV = "TridentSelectPrev" + const val SELECT = "TridentSelect" + } +} + diff --git a/src/main/kotlin/me/kyren223/trident/actions/TridentListAction.kt b/src/main/kotlin/me/kyren223/trident/actions/TridentListAction.kt new file mode 100644 index 0000000..cef0bf2 --- /dev/null +++ b/src/main/kotlin/me/kyren223/trident/actions/TridentListAction.kt @@ -0,0 +1,33 @@ +package me.kyren223.trident.actions + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import com.maddyhome.idea.vim.api.injector +import com.maddyhome.idea.vim.command.MappingMode +import com.maddyhome.idea.vim.key.MappingOwner +import me.kyren223.trident.data.SettingsState +import me.kyren223.trident.ui.TridentListMenu + +class TridentListAction : AnAction() { + override fun actionPerformed(e: AnActionEvent) { + if (!remapped) remap() + val project = e.project ?: return + TridentListMenu.open(project) + } + + // TODO move the remap to somewhere else + private fun remap() { + if (!SettingsState.instance.enterToSelect) return + val keys = injector.parser.parseKeys(":action TridentQuickMenuSelect") + val keyGroup = injector.keyGroup + keyGroup.putKeyMapping(MappingMode.NVO, + injector.parser.parseKeys(""), + MappingOwner.Plugin.get("Trident"), keys, false + ) + remapped = true + } + + companion object { + var remapped = false + } +} diff --git a/src/main/kotlin/me/kyren223/trident/actions/TridentListSelectAction.kt b/src/main/kotlin/me/kyren223/trident/actions/TridentListSelectAction.kt new file mode 100644 index 0000000..d1dfd2d --- /dev/null +++ b/src/main/kotlin/me/kyren223/trident/actions/TridentListSelectAction.kt @@ -0,0 +1,14 @@ +package me.kyren223.trident.actions + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import me.kyren223.trident.ui.TridentListMenu +import me.kyren223.trident.utils.TridentList + +class TridentListSelectAction : AnAction() { + override fun actionPerformed(e: AnActionEvent) { + val project = e.project ?: return + TridentList.select(project, TridentListMenu.line) + } + +} diff --git a/src/main/kotlin/me/kyren223/trident/actions/TridentMappingsAction.kt b/src/main/kotlin/me/kyren223/trident/actions/TridentMappingsAction.kt new file mode 100644 index 0000000..b303c9e --- /dev/null +++ b/src/main/kotlin/me/kyren223/trident/actions/TridentMappingsAction.kt @@ -0,0 +1,12 @@ +package me.kyren223.trident.actions + +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import me.kyren223.trident.ui.TridentMappingsMenu + +class TridentMappingsAction : AnAction() { + override fun actionPerformed(e: AnActionEvent) { + val project = e.project ?: return + TridentMappingsMenu.open(project) + } +} -- cgit v1.3.1