idea-which-key icon indicating copy to clipboard operation
idea-which-key copied to clipboard

Which-Key fails to init with IdeaVim-EAP (1.11.0-eap.1)

Open heliumbrain opened this issue 2 years ago • 3 comments

Hello!

Since GoLand 2022.2 (and probably other IDEs) there's been an annoying exception in IdeaVIM (YouTrack VIM-2693).

This issue was fixed in IdeaVim 1.11.0-eap.1. However, using that version of IdeaVim, Which-Key fails to even load. Not sure what's going on, please see attached stacktrace.txt.

heliumbrain avatar Aug 04 '22 13:08 heliumbrain

This is most probably a compatibility issue regarding the version. The 1.11.0-eap.1 has a minimum requirement of 2022.2.+ and I already got some warnings about using deprecated and soon to remove code but haven't found the time to tackle that so far :see_no_evil:

It is only an assumption but I guess you have to stay on a former version if you want/need to use Which-Key. I will see if I can investigate and maybe solve this in the upcoming days

TheBlob42 avatar Aug 04 '22 14:08 TheBlob42

Yeah that sounds likely. I can try to have a look as well if I find the time.

Yeah, staying on the "old" IdeaVim for now, with silenced exceptions. My goldfish brain really appreciates having a which key and Intellimacs + Which-Key is the closest I've come to replicating my nvim environment in a IDE :)

heliumbrain avatar Aug 04 '22 14:08 heliumbrain

Most of the issues seem easily resolvable, but there is one change in the IdeaVIM plugin which would affect Which-Key and would make it impossible to get custom descriptions for any entry. I have opened an issue with Jetbrains and hope that this can either be fixed or that there is another solution for this problem, but this currently blocks any further work and testing :frowning_face:

See the open issue here

TheBlob42 avatar Aug 06 '22 08:08 TheBlob42

I don't want to hijack your ticket, but I think it's related. Just updated my IdeaVim to 1.11.1 and it also stopped working for me:

java.lang.ExceptionInInitializerError at eu.theblob42.idea.whichkey.WhichKeyTypeActionHandler.beforeExecute(WhichKeyTypeActionHandler.kt:39) at com.intellij.openapi.editor.actionSystem.TypedAction.beforeActionPerformed(TypedAction.java:193) at com.intellij.openapi.editor.impl.EditorImpl.processKeyTypedImmediately(EditorImpl.java:1321) at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:1306) at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:3475) at com.intellij.openapi.editor.impl.EditorImpl$7.keyTyped(EditorImpl.java:1145) at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247) at java.desktop/java.awt.Component.processKeyEvent(Component.java:6603) at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2899) at java.desktop/java.awt.Component.processEvent(Component.java:6425) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5022) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854) at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1964) at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:886) at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1166) at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1023) at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:849) at com.intellij.ide.IdeKeyboardFocusManager.lambda$dispatchEvent$0(IdeKeyboardFocusManager.java:48) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:604) at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.java:48) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4903) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2802) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:754) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:752) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:751) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898) at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:807) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:740) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:439) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:791) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:438) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:604) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:436) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:881) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:484) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92) Caused by: java.lang.ClassCastException: class com.maddyhome.idea.vim.newapi.IjVimActionsInitiator cannot be cast to class com.maddyhome.idea.vim.handler.ActionBeanClass (com.maddyhome.idea.vim.newapi.IjVimActionsInitiator and com.maddyhome.idea.vim.handler.ActionBeanClass are in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @79388e9e) at eu.theblob42.idea.whichkey.config.MappingConfig.extractVimActions(MappingConfig.kt:62) at eu.theblob42.idea.whichkey.config.MappingConfig.extractVimActions(MappingConfig.kt:57) at eu.theblob42.idea.whichkey.config.MappingConfig.<clinit>(MappingConfig.kt:39) ... 55 more

justin-nl1 avatar Aug 12 '22 11:08 justin-nl1

Yes this is for sure related to this issue here, parts of that stacktrace look oddly familiar to me :smile:

With version 1.11.1 of the IdeaVIM plugin Jetbrains implemented the missing feature for me to make WhichKey work again. I am currently in the process of adapting and local testing. Once that is done I will push to a dedicated branch and would ask for some external testing :pray: if everything works out fine I can finally prepare the release

TheBlob42 avatar Aug 12 '22 19:08 TheBlob42

I pushed my latest changes to the develop branch. I will do some testing over the weekend but I would highly appreciate it if you could install the plugin manually and check if this also works for you (I can only test Intellij Community) before releasing the plugin via the marketplace

TheBlob42 avatar Aug 12 '22 22:08 TheBlob42

Wow, thanks for the quick work!

I built it manually and installed it on GoLand 2022.2.1 with IdeaVim 1.11.1 - everything working so far after few minutes of normal usage. Will let you know if I see any errors during the weekend.

heliumbrain avatar Aug 13 '22 00:08 heliumbrain

Thank you for the quick work!

justin-nl1 avatar Aug 13 '22 09:08 justin-nl1

So far it looks good on my own setup as well :slightly_smiling_face: Still highly appreciate testing on other Jetbrains products, but never the less I would plan the release for tomorrow

Please take note that Jetbrains is evaluating every release and they need to confirm it before it goes live in the marketplace, so it might take till mid next week before you can download the newest version from there.

TheBlob42 avatar Aug 13 '22 16:08 TheBlob42

New version is released here on Github and ready for review on the Jetbrains marketplace. You can already download the jar and manually install if you can not wait :wink:

TheBlob42 avatar Aug 14 '22 12:08 TheBlob42

Looks good on my machine as well. Great job!

justin-nl1 avatar Aug 15 '22 09:08 justin-nl1

The new version is now also available in the Jetbrains marketplace :slightly_smiling_face:

TheBlob42 avatar Aug 19 '22 18:08 TheBlob42