summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyren223 <ulmliad223@gmail.com>2024-02-23 23:11:09 +0200
committerKyren223 <ulmliad223@gmail.com>2024-02-23 23:11:09 +0200
commit5da72c7ec98edfab7fbebc335e1a9fba116988a5 (patch)
treeb44ff2e0a10c1f5c58c7da50c91efc1b7dd2be9d
parent1017f0d17aa1c745ec0af2de4239c37816d040eb (diff)
Added a new menu for path mappings to allow shortcuts like the built-in `...`
Note: need to rethink how normal paths are saved, they should potentially be saved raw (not absolute paths) and then the virtual file list needs to change to string and then dynamically on the fly replace with mappings of key -> value to make an absolute path that then will be used
-rw-r--r--build.gradle.kts2
-rw-r--r--settings.gradle.kts2
-rw-r--r--src/main/kotlin/me/kyren223/trident/AppendAction.kt (renamed from src/main/kotlin/me/kyren223/trident/TridentAppendAction.kt)2
-rw-r--r--src/main/kotlin/me/kyren223/trident/PathMappingsMenu.kt63
-rw-r--r--src/main/kotlin/me/kyren223/trident/PathMappingsMenuAction.kt11
-rw-r--r--src/main/kotlin/me/kyren223/trident/QuickMenu.kt (renamed from src/main/kotlin/me/kyren223/trident/TridentQuickMenu.kt)9
-rw-r--r--src/main/kotlin/me/kyren223/trident/QuickMenuSelectAction.kt (renamed from src/main/kotlin/me/kyren223/trident/TridentQuickMenuSelectAction.kt)2
-rw-r--r--src/main/kotlin/me/kyren223/trident/SelectAction.kt (renamed from src/main/kotlin/me/kyren223/trident/TridentSelectAction.kt)2
-rw-r--r--src/main/kotlin/me/kyren223/trident/SettingsConfigurable.kt (renamed from src/main/kotlin/me/kyren223/trident/AppSettingsConfigurable.kt)8
-rw-r--r--src/main/kotlin/me/kyren223/trident/SettingsState.kt (renamed from src/main/kotlin/me/kyren223/trident/AppSettingsState.kt)12
-rw-r--r--src/main/kotlin/me/kyren223/trident/ToggleQuickMenuAction.kt (renamed from src/main/kotlin/me/kyren223/trident/TridentToggleQuickMenuAction.kt)4
-rw-r--r--src/main/kotlin/me/kyren223/trident/TridentState.kt113
-rw-r--r--src/main/kotlin/me/kyren223/trident/Utils.kt12
-rw-r--r--src/main/resources/META-INF/plugin.xml30
14 files changed, 211 insertions, 61 deletions
diff --git a/build.gradle.kts b/build.gradle.kts
index 61b0d1f..273d005 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -5,7 +5,7 @@ plugins {
}
group = "me.kyren223"
-version = "1.0"
+version = "1.1"
repositories {
mavenCentral()
diff --git a/settings.gradle.kts b/settings.gradle.kts
index dc1ca73..c096433 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -5,5 +5,5 @@ pluginManagement {
}
}
-rootProject.name = "Trident (Harpoon)"
+rootProject.name = "Trident"
include("IdeaVIM") \ No newline at end of file
diff --git a/src/main/kotlin/me/kyren223/trident/TridentAppendAction.kt b/src/main/kotlin/me/kyren223/trident/AppendAction.kt
index 621b9cd..f058f86 100644
--- a/src/main/kotlin/me/kyren223/trident/TridentAppendAction.kt
+++ b/src/main/kotlin/me/kyren223/trident/AppendAction.kt
@@ -6,7 +6,7 @@ import com.intellij.openapi.actionSystem.PlatformDataKeys
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
-class TridentAppendAction : AnAction() {
+class AppendAction : AnAction() {
override fun actionPerformed(e: AnActionEvent) {
val project: Project = e.project ?: return
val file: VirtualFile = e.getData(PlatformDataKeys.VIRTUAL_FILE) ?: return
diff --git a/src/main/kotlin/me/kyren223/trident/PathMappingsMenu.kt b/src/main/kotlin/me/kyren223/trident/PathMappingsMenu.kt
new file mode 100644
index 0000000..d098323
--- /dev/null
+++ b/src/main/kotlin/me/kyren223/trident/PathMappingsMenu.kt
@@ -0,0 +1,63 @@
+package me.kyren223.trident
+
+import com.intellij.openapi.editor.LogicalPosition
+import com.intellij.openapi.ui.DialogWrapper
+import com.intellij.ui.EditorTextField
+import com.maddyhome.idea.vim.api.injector
+import com.maddyhome.idea.vim.newapi.vim
+import java.awt.event.FocusEvent
+import java.awt.event.FocusListener
+import javax.swing.JComponent
+
+class PathMappingsMenu(private val content: String) : DialogWrapper(true) {
+ private lateinit var editorTextField: EditorTextField
+
+ init {
+ val settings = SettingsState.instance
+ this.title = "Trident Path Mappings Menu"
+ setSize(settings.width, settings.height)
+ super.init()
+ }
+
+ override fun createCenterPanel(): JComponent {
+ val settings = SettingsState.instance
+ editorTextField = EditorTextField(this.content)
+ editorTextField.setOneLineMode(false)
+ editorTextField.addSettingsProvider {
+ it.setFontSize(settings.fontSize)
+ it.isInsertMode = true
+ it.caretModel.moveToLogicalPosition(LogicalPosition(0, 0))
+ it.settings.isLineNumbersShown = true
+ }
+
+ editorTextField.addFocusListener(object : FocusListener {
+ override fun focusGained(e: FocusEvent?) {
+ val editor = editorTextField.editor!!.vim
+ val context = injector.executionContextManager.onEditor(editor, null)
+ simulateKeyPress("<ESC>", editor, context)
+ }
+
+ override fun focusLost(e: FocusEvent?) { /* Do nothing */ }
+ })
+
+ return editorTextField
+ }
+
+ override fun getPreferredFocusedComponent(): JComponent {
+ return this.editorTextField
+ }
+
+ override fun doOKAction() {
+ TridentState.pathMappingsContent = editorTextField.text
+ super.doOKAction()
+ }
+
+ override fun doCancelAction() {
+ TridentState.pathMappingsContent = editorTextField.text
+ super.doCancelAction()
+ }
+
+ override fun createSouthPanel(): JComponent? {
+ return null
+ }
+}
diff --git a/src/main/kotlin/me/kyren223/trident/PathMappingsMenuAction.kt b/src/main/kotlin/me/kyren223/trident/PathMappingsMenuAction.kt
new file mode 100644
index 0000000..6b46f6a
--- /dev/null
+++ b/src/main/kotlin/me/kyren223/trident/PathMappingsMenuAction.kt
@@ -0,0 +1,11 @@
+package me.kyren223.trident
+
+import com.intellij.openapi.actionSystem.AnAction
+import com.intellij.openapi.actionSystem.AnActionEvent
+
+class PathMappingsMenuAction : AnAction() {
+ override fun actionPerformed(e: AnActionEvent) {
+ val project = e.project ?: return
+ TridentState.togglePathMappingsMenu(project)
+ }
+}
diff --git a/src/main/kotlin/me/kyren223/trident/TridentQuickMenu.kt b/src/main/kotlin/me/kyren223/trident/QuickMenu.kt
index e7903e0..3ef3871 100644
--- a/src/main/kotlin/me/kyren223/trident/TridentQuickMenu.kt
+++ b/src/main/kotlin/me/kyren223/trident/QuickMenu.kt
@@ -14,18 +14,18 @@ import java.awt.event.FocusEvent
import java.awt.event.FocusListener
import javax.swing.JComponent
-class TridentQuickMenu(private val content: String) : DialogWrapper(true) {
+class QuickMenu(private val content: String) : DialogWrapper(true) {
private lateinit var editorTextField: EditorTextField
init {
- val settings = AppSettingsState.instance
+ val settings = SettingsState.instance
this.title = "Trident Quick Menu"
setSize(settings.width, settings.height)
super.init()
}
override fun createCenterPanel(): JComponent {
- val settings = AppSettingsState.instance
+ val settings = SettingsState.instance
editorTextField = EditorTextField(this.content)
editorTextField.setOneLineMode(false)
editorTextField.addSettingsProvider {
@@ -48,9 +48,6 @@ class TridentQuickMenu(private val content: String) : DialogWrapper(true) {
return editorTextField
}
- private fun simulateKeyPress(key: String, editor: VimEditor, context: ExecutionContext.Editor) {
- KeyHandler.getInstance().handleKey(editor, injector.parser.parseKeys(key)[0], context)
- }
override fun getPreferredFocusedComponent(): JComponent {
return this.editorTextField
diff --git a/src/main/kotlin/me/kyren223/trident/TridentQuickMenuSelectAction.kt b/src/main/kotlin/me/kyren223/trident/QuickMenuSelectAction.kt
index f9db35a..0ae320a 100644
--- a/src/main/kotlin/me/kyren223/trident/TridentQuickMenuSelectAction.kt
+++ b/src/main/kotlin/me/kyren223/trident/QuickMenuSelectAction.kt
@@ -3,7 +3,7 @@ package me.kyren223.trident
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
-class TridentQuickMenuSelectAction : AnAction() {
+class QuickMenuSelectAction : AnAction() {
override fun actionPerformed(e: AnActionEvent) {
TridentState.quickMenuSelect()
}
diff --git a/src/main/kotlin/me/kyren223/trident/TridentSelectAction.kt b/src/main/kotlin/me/kyren223/trident/SelectAction.kt
index 3122650..2e09bb9 100644
--- a/src/main/kotlin/me/kyren223/trident/TridentSelectAction.kt
+++ b/src/main/kotlin/me/kyren223/trident/SelectAction.kt
@@ -5,7 +5,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.PlatformDataKeys
import com.intellij.openapi.fileEditor.FileEditorManager
-class TridentSelectAction : AnAction() {
+class SelectAction : AnAction() {
override fun actionPerformed(e: AnActionEvent) {
val project = e.project ?: return
var index = when (val actionId = e.actionManager.getId(this)) {
diff --git a/src/main/kotlin/me/kyren223/trident/AppSettingsConfigurable.kt b/src/main/kotlin/me/kyren223/trident/SettingsConfigurable.kt
index e04b3b8..3caaf4b 100644
--- a/src/main/kotlin/me/kyren223/trident/AppSettingsConfigurable.kt
+++ b/src/main/kotlin/me/kyren223/trident/SettingsConfigurable.kt
@@ -5,7 +5,7 @@ import com.intellij.openapi.options.Configurable
import com.intellij.openapi.util.NlsContexts.ConfigurableName
import javax.swing.JComponent
-class AppSettingsConfigurable : Configurable {
+class SettingsConfigurable : Configurable {
private var settings: SettingsData? = null
override fun getDisplayName(): @ConfigurableName String {
return "Trident Settings"
@@ -17,7 +17,7 @@ class AppSettingsConfigurable : Configurable {
}
override fun isModified(): Boolean {
- val settings = AppSettingsState.instance
+ val settings = SettingsState.instance
if (settings.width != this.settings!!.getWidth()) return true
if (settings.height != this.settings!!.getHeight()) return true
if (settings.fontSize != this.settings!!.getFontSize()) return true
@@ -26,7 +26,7 @@ class AppSettingsConfigurable : Configurable {
}
override fun apply() {
- val settings = AppSettingsState.instance
+ val settings = SettingsState.instance
settings.width = this.settings!!.getWidth()
settings.height = this.settings!!.getHeight()
settings.fontSize = this.settings!!.getFontSize()
@@ -34,7 +34,7 @@ class AppSettingsConfigurable : Configurable {
}
override fun reset() {
- val settings = AppSettingsState.instance
+ val settings = SettingsState.instance
if (this.settings == null) {
this.settings = SettingsData()
}
diff --git a/src/main/kotlin/me/kyren223/trident/AppSettingsState.kt b/src/main/kotlin/me/kyren223/trident/SettingsState.kt
index 6d61ea0..b0544f4 100644
--- a/src/main/kotlin/me/kyren223/trident/AppSettingsState.kt
+++ b/src/main/kotlin/me/kyren223/trident/SettingsState.kt
@@ -7,24 +7,24 @@ import com.intellij.openapi.components.Storage
import com.intellij.util.xmlb.XmlSerializerUtil
// Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
-@State(name = "me.kyren223.trident.AppSettingsState", storages = [Storage("SdkSettingsPlugin.xml")])
-class AppSettingsState : PersistentStateComponent<AppSettingsState?> {
+@State(name = "me.kyren223.trident.SettingsState", storages = [Storage("SdkSettingsPlugin.xml")])
+class SettingsState : PersistentStateComponent<SettingsState?> {
var enterToSelect = true
var width = 800
var height = 400
var fontSize = 20
- override fun getState(): AppSettingsState {
+ override fun getState(): SettingsState {
return this
}
- override fun loadState(state: AppSettingsState) {
+ override fun loadState(state: SettingsState) {
XmlSerializerUtil.copyBean(state, this)
}
companion object {
- val instance: AppSettingsState
- get() = ApplicationManager.getApplication().getService(AppSettingsState::class.java)
+ val instance: SettingsState
+ get() = ApplicationManager.getApplication().getService(SettingsState::class.java)
}
}
diff --git a/src/main/kotlin/me/kyren223/trident/TridentToggleQuickMenuAction.kt b/src/main/kotlin/me/kyren223/trident/ToggleQuickMenuAction.kt
index a3f8cc7..a8a78ab 100644
--- a/src/main/kotlin/me/kyren223/trident/TridentToggleQuickMenuAction.kt
+++ b/src/main/kotlin/me/kyren223/trident/ToggleQuickMenuAction.kt
@@ -6,7 +6,7 @@ import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.MappingMode
import com.maddyhome.idea.vim.key.MappingOwner
-class TridentToggleQuickMenuAction : AnAction() {
+class ToggleQuickMenuAction : AnAction() {
override fun actionPerformed(e: AnActionEvent) {
if (!remapped) remap()
if (e.project != null) {
@@ -15,7 +15,7 @@ class TridentToggleQuickMenuAction : AnAction() {
}
private fun remap() {
- if (!AppSettingsState.instance.enterToSelect) return
+ if (!SettingsState.instance.enterToSelect) return
val keys = injector.parser.parseKeys(":action TridentQuickMenuSelect<cr>")
val keyGroup = injector.keyGroup
keyGroup.putKeyMapping(MappingMode.NVO,
diff --git a/src/main/kotlin/me/kyren223/trident/TridentState.kt b/src/main/kotlin/me/kyren223/trident/TridentState.kt
index 57a47b8..1163789 100644
--- a/src/main/kotlin/me/kyren223/trident/TridentState.kt
+++ b/src/main/kotlin/me/kyren223/trident/TridentState.kt
@@ -8,10 +8,14 @@ import com.intellij.openapi.vfs.VirtualFile
object TridentState {
private var projectFiles: MutableMap<String, MutableList<VirtualFile>> = mutableMapOf()
+ private var pathMappings: MutableMap<String, MutableMap<String, String>> = mutableMapOf()
private const val TRIDENT_LIST_KEY = "TridentList"
- private var quickMenu: TridentQuickMenu? = null
+ private const val PATH_MAPPINGS_LIST_KEY = "PathMappings"
+ private var quickMenu: QuickMenu? = null
var quickMenuSelectedIndex: Int? = null
- var quickMenuContent: String? = ""
+ var quickMenuContent: String = ""
+ private var pathMappingsMenu: PathMappingsMenu? = null
+ var pathMappingsContent: String = ""
fun appendFile(project: Project, file: VirtualFile) {
if (!file.isValid) return
@@ -33,30 +37,49 @@ object TridentState {
if (project.name in projectFiles) return
val properties = PropertiesComponent.getInstance(project)
+ val pathMappingsList = properties.getList(PATH_MAPPINGS_LIST_KEY)
+ var map = mutableMapOf<String, String>()
+ if (pathMappingsList == null) {
+ map["..."] = project.basePath!!
+ } else {
+ for (entry in pathMappingsList) {
+ val split = entry.split("=")
+ if (split.size != 2) continue
+ map[split[0]] = split[1]
+ }
+ }
+ this.pathMappings[project.name] = map
+
val list = properties.getList(TRIDENT_LIST_KEY)
if (list == null) {
projectFiles[project.name] = mutableListOf()
- return
- }
- val fs = LocalFileSystem.getInstance()
- val files = list.stream()
+ } else {
+ val fs = LocalFileSystem.getInstance()
+ val files = list.stream()
.map { fs.findFileByPath(it) }
.toList()
.filterNotNull()
.filter { it.isValid }
.toMutableList()
- projectFiles[project.name] = files
+ projectFiles[project.name] = files
+ }
}
private fun saveProject(project: Project) {
if (project.name !in projectFiles) return
val files = projectFiles[project.name]
val properties = PropertiesComponent.getInstance(project)
+
val stringList = files!!.stream()
- .filter { it.isValid }
- .map { it.path }
- .toList()
+ .filter { it.isValid }
+ .map { it.path }
+ .toList()
properties.setList(TRIDENT_LIST_KEY, stringList)
+
+ val pathMappingsString = pathMappings[project.name]!!.entries
+ .joinToString("\n") { "${it.key}=${it.value}" }
+ .split("\n")
+ properties.setList(PATH_MAPPINGS_LIST_KEY, pathMappingsString)
}
fun getIndexOfFile(project: Project, data: VirtualFile?): Int {
@@ -79,11 +102,11 @@ object TridentState {
loadProject(project)
val content = getProjectContent(project)
- quickMenu = TridentQuickMenu(content)
+ quickMenu = QuickMenu(content)
val result = quickMenu!!.showAndGet()
- if (quickMenuContent != null && content != quickMenuContent) {
- retrieveProjectFiles(project, quickMenuContent!!)
+ if (content != quickMenuContent) {
+ retrieveProjectFiles(project, quickMenuContent)
saveProject(project)
}
@@ -100,25 +123,63 @@ object TridentState {
}
private fun getProjectContent(project: Project): String {
- val content = projectFiles[project.name]!!
- .joinToString("\n") { it.path }
- .replace(project.basePath!!, "...")
- .trim()
+ loadProject(project)
+ val map = pathMappings[project.name] ?: throw IllegalStateException("Path mappings not found")
+ println("map: $map")
+ var content = projectFiles[project.name]!!
+ .joinToString("\n") { it.path }
+ .trim()
+ println("content: $content")
+ for ((key, value) in map) {
+ println("key: $key | value: $value")
+ content = content.replace(value, key)
+ }
+ println("content: $content")
return content
}
private fun retrieveProjectFiles(project: Project, content: String) {
loadProject(project)
val files = content
- .split("\n")
- .asSequence()
- .map { it.trim() }
- .map { it.replace("...", project.basePath!!) }
- .filter { it.isNotBlank() }
- .map { LocalFileSystem.getInstance().findFileByPath(it) }
- .filterNotNull()
- .filter { it.isValid }
- .toMutableList()
+ .split("\n")
+ .asSequence()
+ .map { it.trim() }
+ .map { line ->
+ pathMappings[project.name]!!.entries.fold(line) { acc, (key, value) ->
+ acc.replace(key, value)
+ }
+ }
+// .map {
+// pathMappings[project.name]!!.entries.forEach { (key, value) -> it.replace(key, value) }
+// it
+// }
+ .filter { it.isNotBlank() }
+ .map { LocalFileSystem.getInstance().findFileByPath(it) }
+ .filterNotNull()
+ .filter { it.isValid }
+ .toMutableList()
projectFiles[project.name] = files
}
+
+ fun togglePathMappingsMenu(project: Project) {
+ if (pathMappingsMenu != null && pathMappingsMenu!!.isShowing) {
+ pathMappingsMenu!!.doCancelAction()
+ return
+ }
+
+ loadProject(project)
+ val content = pathMappings[project.name]!!.entries
+ .joinToString("\n") { "${it.key}=${it.value}" }
+ pathMappingsMenu = PathMappingsMenu(content)
+ pathMappingsMenu!!.showAndGet()
+
+ if (content != pathMappingsContent) {
+ pathMappingsContent.split("\n").forEach {
+ val split = it.split("=")
+ if (split.size != 2) return@forEach
+ this.pathMappings[project.name]!![split[0]] = split[1]
+ }
+ saveProject(project)
+ }
+ }
} \ No newline at end of file
diff --git a/src/main/kotlin/me/kyren223/trident/Utils.kt b/src/main/kotlin/me/kyren223/trident/Utils.kt
new file mode 100644
index 0000000..7ff2d58
--- /dev/null
+++ b/src/main/kotlin/me/kyren223/trident/Utils.kt
@@ -0,0 +1,12 @@
+package me.kyren223.trident
+
+import com.maddyhome.idea.vim.KeyHandler
+import com.maddyhome.idea.vim.api.ExecutionContext
+import com.maddyhome.idea.vim.api.VimEditor
+import com.maddyhome.idea.vim.api.injector
+
+fun simulateKeyPress(key: String, editor: VimEditor, context: ExecutionContext.Editor) {
+ KeyHandler.getInstance().handleKey(editor, injector.parser.parseKeys(key)[0], context)
+}
+
+
diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml
index 73b2fd2..f4c9bf1 100644
--- a/src/main/resources/META-INF/plugin.xml
+++ b/src/main/resources/META-INF/plugin.xml
@@ -37,10 +37,10 @@
<extensions defaultExtensionNs="com.intellij">
<applicationConfigurable
parentId="tools"
- instance="me.kyren223.trident.AppSettingsConfigurable"
- id="me.kyren223.trident.AppSettingsConfigurable"
+ instance="me.kyren223.trident.SettingsConfigurable"
+ id="me.kyren223.trident.SettingsConfigurable"
displayName="Trident Settings"/>
- <applicationService serviceImplementation="me.kyren223.trident.AppSettingsState"/>
+ <applicationService serviceImplementation="me.kyren223.trident.SettingsState"/>
</extensions>
<actions>
@@ -51,57 +51,63 @@
<!-- Trident Select Buffer -->
<action id="TridentSelect1"
- class="me.kyren223.trident.TridentSelectAction"
+ class="me.kyren223.trident.SelectAction"
text="Select Buffer 1">
<add-to-group group-id="me.kyren223.trident.mainGroup"/>
</action>
<action id="TridentSelect2"
- class="me.kyren223.trident.TridentSelectAction"
+ class="me.kyren223.trident.SelectAction"
text="Select Buffer 2">
<add-to-group group-id="me.kyren223.trident.mainGroup"/>
</action>
<action id="TridentSelect3"
- class="me.kyren223.trident.TridentSelectAction"
+ class="me.kyren223.trident.SelectAction"
text="Select Buffer 3">
<add-to-group group-id="me.kyren223.trident.mainGroup"/>
</action>
<action id="TridentSelect4"
- class="me.kyren223.trident.TridentSelectAction"
+ class="me.kyren223.trident.SelectAction"
text="Select Buffer 4">
<add-to-group group-id="me.kyren223.trident.mainGroup"/>
</action>
<!-- Select Previous & Next Buffer -->
<action id="TridentSelectPrev"
- class="me.kyren223.trident.TridentSelectAction"
+ class="me.kyren223.trident.SelectAction"
text="Select Previous Buffer">
<add-to-group group-id="me.kyren223.trident.mainGroup"/>
</action>
<action id="TridentSelectNext"
- class="me.kyren223.trident.TridentSelectAction"
+ class="me.kyren223.trident.SelectAction"
text="Select Next Buffer">
<add-to-group group-id="me.kyren223.trident.mainGroup"/>
</action>
<!-- Append -->
<action id="TridentAppend"
- class="me.kyren223.trident.TridentAppendAction"
+ class="me.kyren223.trident.AppendAction"
text="Append File">
<add-to-group group-id="me.kyren223.trident.mainGroup"/>
</action>
<!-- UI Actions -->
<action id="TridentToggleQuickMenu"
- class="me.kyren223.trident.TridentToggleQuickMenuAction"
+ class="me.kyren223.trident.ToggleQuickMenuAction"
text="Toggle Quick Menu">
<add-to-group group-id="me.kyren223.trident.mainGroup"/>
</action>
<action id="TridentQuickMenuSelect"
- class="me.kyren223.trident.TridentQuickMenuSelectAction"
+ class="me.kyren223.trident.QuickMenuSelectAction"
text="Quick Menu Select">
<add-to-group group-id="me.kyren223.trident.mainGroup"/>
</action>
+ <action id="TridentPathMappingsMenu"
+ class="me.kyren223.trident.PathMappingsMenuAction"
+ text="Toggle Path Mappings Menu">
+ <add-to-group group-id="me.kyren223.trident.mainGroup"/>
+ </action>
+
</actions>
</idea-plugin> \ No newline at end of file