mishkun / ataman-intellij Goto Github PK
View Code? Open in Web Editor NEWLeader key for IntelliJ-based IDE's. Now IdeaVim-friendly!
License: MIT License
Leader key for IntelliJ-based IDE's. Now IdeaVim-friendly!
License: MIT License
I use two Intellij IDEA based IDE, IDEA itself, and RIder. The problem is there are some Rider and IDEA specific actions absents in other IDE but .atamanrc file is common due to it's placed in the %home% directory.
The solution could be add IDE settings key for the path to the rc file, in conjuction with having the default one in the %home% directory.
PS. pretty sure that other 10 IDE's based on IDEA also have specific actions.
Right now, if I want to format the code and cleanup the code in PHPStorm I need to bind two keys to an action. For something like this it would be nice to be able to add a sequence of actions to one key. For example:
f {actionIds: [ReformatCode, SilentCodeCleanup], description: Format & Cleanup }
When I add a new keybind and trigger the "reload ~/.atamanrc.config File" action, nothing changes. Restarting the IDE works for changing keybinds (although it’s slow).
Accidentely closed an IDE when config file has invalid state, on opening a project got this exception and plugin won't work.
java.lang.NullPointerException: null cannot be cast to non-null type kotlin.String
at io.github.mishkun.ataman.AtamanConfig.buildBindingsTree(AtamanConfig.kt:107)
at io.github.mishkun.ataman.AtamanConfig.updateConfig(AtamanConfig.kt:56)
at io.github.mishkun.ataman.PluginStartup.runActivity(AtamanConfig.kt:19)
at com.intellij.ide.startup.impl.StartupManagerImpl.runStartupActivity(StartupManagerImpl.kt:311)
at com.intellij.ide.startup.impl.StartupManagerImpl.runActivityAndMeasureDuration(StartupManagerImpl.kt:292)
at com.intellij.ide.startup.impl.StartupManagerImpl.runActivityAndMeasureDuration$default(StartupManagerImpl.kt:287)
at com.intellij.ide.startup.impl.StartupManagerImpl$runPostStartupActivities$1$1.run(StartupManagerImpl.kt:247)
at com.intellij.openapi.project.DumbServiceImpl.runWithWaitForSmartModeDisabled(DumbServiceImpl.java:645)
at com.intellij.ide.startup.impl.StartupManagerImpl$runPostStartupActivities$1.accept(StartupManagerImpl.kt:246)
at com.intellij.ide.startup.impl.StartupManagerImpl$runPostStartupActivities$1.accept(StartupManagerImpl.kt:61)
at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processWithPluginDescriptor(ExtensionPointImpl.java:299)
at com.intellij.openapi.extensions.ExtensionPointName.processWithPluginDescriptor(ExtensionPointName.java:144)
at com.intellij.ide.startup.impl.StartupManagerImpl.runPostStartupActivities(StartupManagerImpl.kt:241)
at com.intellij.ide.startup.impl.StartupManagerImpl.access$runPostStartupActivities(StartupManagerImpl.kt:61)
at com.intellij.ide.startup.impl.StartupManagerImpl$projectOpened$3$1.run(StartupManagerImpl.kt:190)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:624)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:698)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:646)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:623)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)
at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:277)
at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:255)
at com.intellij.ide.startup.impl.StartupManagerImpl$projectOpened$3.run(StartupManagerImpl.kt:190)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1426)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
First off, thanks for this awesome plugin! It has helped me embrace ideaVim completely.
As I'm going through setting up my bindings I found out that binding some special chars does not work.
Given the following config:
bindings {
"." {
description: "+Collapse"
bindings {
"/" {actionId: CollapseAllRegions, description: Collapse All Regions}
"?" {actionId: ExpandAllRegions, description: Expand All Regions}
"." {actionId: CollapseRegion, description: Collapse region}
">" {actionId: ExpandRegion, description: Expand Region}
}
}
}
Only te .
and /
bindings work. >
and ?
are listed as a child from .
but are not beging executed.
After some testing it seems that all special chars that require me to use the shift key (except capital letters) do not work.
I've tested ~
, |
, :
and >
But I have a hunch there are more that do not work.
java.lang.NullPointerException: action must not be null
at io.github.mishkun.ataman.LeaderListStep.onChosen$lambda-0(AtamanAction.kt:119)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
at com.intellij.ui.popup.AbstractPopup.lambda$dispose$18(AbstractPopup.java:1511)
at com.intellij.util.ui.EdtInvocationManager.invokeLaterIfNeeded(EdtInvocationManager.java:101)
at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:186)
at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:140)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:175)
at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.doWhenFocusSettlesDown(IdeFocusManagerImpl.java:36)
at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1508)
at com.intellij.ui.popup.WizardPopup.dispose(WizardPopup.java:164)
at com.intellij.ui.popup.list.ListPopupImpl.dispose(ListPopupImpl.java:326)
at com.intellij.openapi.util.ObjectTree.runWithTrace(ObjectTree.java:136)
at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:166)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:155)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:143)
at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:268)
at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:270)
at com.intellij.ui.popup.list.ListPopupImpl.handleNextStep(ListPopupImpl.java:433)
at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:405)
at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:356)
at io.github.mishkun.ataman.LeaderPopup$1$1.actionPerformed(AtamanAction.kt:180)
at com.intellij.ui.popup.WizardPopup.proceedKeyEvent(WizardPopup.java:380)
at com.intellij.ui.popup.WizardPopup.dispatch(WizardPopup.java:365)
at com.intellij.ui.popup.PopupDispatcher.dispatchKeyEvent(PopupDispatcher.java:112)
at com.intellij.ui.popup.PopupDispatcher.dispatch(PopupDispatcher.java:148)
at com.intellij.ide.IdePopupManager.dispatch(IdePopupManager.java:101)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:724)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:447)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:818)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:446)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:498)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
java.lang.Throwable: Slow operations are prohibited on EDT. See SlowOperations.assertSlowOperationsAreAllowed javadoc.
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:182)
at com.intellij.util.SlowOperations.assertSlowOperationsAreAllowed(SlowOperations.java:102)
at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:784)
at com.intellij.util.indexing.FileBasedIndexEx.processExceptions(FileBasedIndexEx.java:244)
at com.intellij.util.indexing.FileBasedIndexEx.processValueIterator(FileBasedIndexEx.java:349)
at com.intellij.util.indexing.FileBasedIndexEx.processValuesInScope(FileBasedIndexEx.java:318)
at com.intellij.util.indexing.FileBasedIndexEx.processValues(FileBasedIndexEx.java:223)
at com.intellij.psi.search.FilenameIndex.getVirtualFilesByName(FilenameIndex.java:210)
at com.intellij.psi.search.FilenameIndex.getVirtualFilesByName(FilenameIndex.java:57)
at com.intellij.lang.typescript.psi.TypeScriptDeclarationMappingsImpl.getFilesByName(TypeScriptDeclarationMappingsImpl.java:365)
at com.intellij.lang.typescript.psi.TypeScriptDeclarationMappingsImpl.getDeclarationFileCandidatesByName(TypeScriptDeclarationMappingsImpl.java:349)
at com.intellij.lang.typescript.psi.TypeScriptDeclarationMappingsImpl.getDeclarationElements(TypeScriptDeclarationMappingsImpl.java:104)
at com.intellij.lang.javascript.findUsages.JavaScriptFindUsagesHandlerFactory.createFindUsagesHandler(JavaScriptFindUsagesHandlerFactory.java:119)
at com.intellij.find.findUsages.FindUsagesHandlerFactory.createFindUsagesHandler(FindUsagesHandlerFactory.java:28)
at com.intellij.find.findUsages.FindUsagesManager.getFindUsagesHandler(FindUsagesManager.java:160)
at com.intellij.find.findUsages.FindUsagesManager.findUsages(FindUsagesManager.java:192)
at com.intellij.find.impl.FindManagerImpl.findUsages(FindManagerImpl.java:916)
at com.intellij.find.impl.FindManagerImpl.findUsages(FindManagerImpl.java:906)
at com.intellij.find.actions.FindUsagesAction.startFindUsages(FindUsagesAction.java:65)
at com.intellij.find.actions.FindUsagesAction$1.handlePsi(FindUsagesAction.java:58)
at com.intellij.find.actions.PsiTargetVariant.handle(resolver.kt:73)
at com.intellij.find.actions.ResolverKt.findShowUsages(resolver.kt:51)
at com.intellij.find.actions.FindUsagesAction.actionPerformed(FindUsagesAction.java:44)
at io.github.mishkun.ataman.LeaderListStep.executeAction(AtamanAction.kt:157)
at io.github.mishkun.ataman.LeaderListStep.onChosen$lambda-0(AtamanAction.kt:119)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
at com.intellij.ui.popup.AbstractPopup.lambda$dispose$18(AbstractPopup.java:1511)
at com.intellij.util.ui.EdtInvocationManager.invokeLaterIfNeeded(EdtInvocationManager.java:101)
at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:186)
at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:140)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:175)
at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.doWhenFocusSettlesDown(IdeFocusManagerImpl.java:36)
at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1508)
at com.intellij.ui.popup.WizardPopup.dispose(WizardPopup.java:164)
at com.intellij.ui.popup.list.ListPopupImpl.dispose(ListPopupImpl.java:326)
at com.intellij.openapi.util.ObjectTree.runWithTrace(ObjectTree.java:136)
at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:166)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:169)
at com.intellij.openapi.util.Disposer.dispose(Disposer.java:157)
at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:268)
at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:270)
at com.intellij.ui.popup.list.ListPopupImpl.handleNextStep(ListPopupImpl.java:433)
at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:405)
at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:356)
at io.github.mishkun.ataman.LeaderPopup$1$1.actionPerformed(AtamanAction.kt:180)
at com.intellij.ui.popup.WizardPopup.proceedKeyEvent(WizardPopup.java:380)
at com.intellij.ui.popup.WizardPopup.dispatch(WizardPopup.java:365)
at com.intellij.ui.popup.PopupDispatcher.dispatchKeyEvent(PopupDispatcher.java:112)
at com.intellij.ui.popup.PopupDispatcher.dispatch(PopupDispatcher.java:148)
at com.intellij.ide.IdePopupManager.dispatch(IdePopupManager.java:101)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:724)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:447)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:818)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:446)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:498)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
I mean if I set up "Go to next error" using ataman it's still not easy to press, say, Ctrl+E E(error) N(next) several times in a row.
I have no idea is it even possible, because, if I got it right, Ataman works by capturing a keyboard focus to it's "menu".
In my very short 5 minutes usage, when i hit <leader><character 1><character 2>
in quick succession it usually interpreted this as <leader><character 2>
so some how <character 1>
was lost. If the expectation is to hit leader and wait then hit the remaining command characters then I wouldn't be able to use this plugin. However it's very possible that I have some configuration causing it to be slow, so any pointers here to aid in debugging how the character was lost.
I do like the idea for this plugin rather than customizing all my own. I've learned about this repository via JetBrains/ideavim#345 (comment).
I selected some text and want to refactor this. But the menu doesn't show, instead, the caret moves right.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.