Giter Club home page Giter Club logo

ataman-intellij's People

Contributors

anatolyrugalev avatar mishkun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ataman-intellij's Issues

Config file per IDE/Project

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.

Multiple actions for one binding

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 }

Atama reload config not working

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).

Make config parsing exceptions more user-friendly

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)

Some chars can not be bound

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

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)

Exception in the JavaScript project in IntellijIDEA

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)

Any plans to introduce repetitive commands?

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".

RunClass actionId weird behavior

Since i've updated from PHPStorm 2021.3.3 to 2022.1 the RunClass action has different behaviour when executed through Ataman.
It shows a popup instead of running the actual class or test function I'm at. When I run :action RunClass it works as expected.

This is the popup it shows:
image

keyboard reads too slow?

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).

Vertically align key descriptions to reduce visual noise

Since the editor font is proportional, the description labels are not vertically aligned.
It looks quite jittery (especially when using i as one of the bindings.

It would be great to vertically align the descriptions to make it look more like a table, and less like flowing text.

Screenshot 2023-08-16 at 10 36 44

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.