-
-
Notifications
You must be signed in to change notification settings - Fork 504
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(editors/intellij): IntelliJ Platform LSP #185
feat(editors/intellij): IntelliJ Platform LSP #185
Conversation
6171037
to
9234688
Compare
9234688
to
b9a4551
Compare
SecretsI am working on the Github workflows right now and to get this done, i need some Github secrets to release the plugin on Jetbrains Marketplace:
For more details about publishing a plugin: https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html#uploading-a-plugin-to-jetbrains-marketplace Workflow dispatchI also need to understand which workflow_dispatch's strategy is better for this workflow Can you explain how current release process works for vscode (how its triggered, version bump...)? |
Done. This info is stored in the environment
You might want to update this workflow: https://github.com/biomejs/biome/blob/main/.github/workflows/release_lsp.yml We have two kinds of releases: nightly (pre-release) and official releases:
We bump the version manually. We use even numbers for releases, and odd numbers for pre-releases (more here). Anything else you need to know? |
@ematipico Do you mind if for now i create a separated workflow file from release_lsp.yml? The release_lsp today also build and pack the biome binary into the vsix and for intellij its not necessary because the plugin resolve de binary from node_modules |
Ideally we would want to build also the binary, but I think we can skip for now, and focus on publishing the plugin via workflow. You might want to create the workflow in a different PR, so we can merge it, and we can use this PR to test the workflow by using the workflow dispatch. |
Huge thanks for the review @alexander-doroshko: LSP-related classes LGTM.
|
Ok, gonna do that About 1 and 2 I just created that files and override clientCapabilities for testing purpose, because i was investigating a bug with quickfixes (resolved by #248) 3 - Don't know exactly why this method is checking FileType.defultExtensions 💯 |
@ematipico I've just added the workflows |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left some feedback.
Could you update CONTRIBUTING.md
with some instructions on how to run the plugin locally? So we can help testing it
editors/intellij/src/main/kotlin/com/github/biomejs/intellijbiome/BiomeUtils.kt
Outdated
Show resolved
Hide resolved
editors/intellij/src/main/kotlin/com/github/biomejs/intellijbiome/BiomeUtils.kt
Outdated
Show resolved
Hide resolved
return GeneralCommandLine() | ||
.withWorkDirectory(project.basePath) | ||
.withExePath(binaryPath) | ||
.withParameters("--version") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the expected output of this function?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
createVersionCommandLine only creates the instance of GeneralCommandLine class (Used to run the biome --version
command)
I use it to extract the biome's version and use on the toolbar
But now i think the regex is not 100% right for semver
BTW, thank you for this amazing contribution! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Your work is really appreciated for supporting intellij plugin! This is many users wanted.
I reviewed and tested this plugin. I couldn't check the plugin work well by running./gradlew runIde
and setting biome bin path on my end. Do I need to do any additional steps?
And then, when checking the plugin, I got the following errors. These errors might be related?
java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. Please ensure you're using invokeLater/invokeAndWait with a correct modality state (not "any"). See TransactionGuard documentation for details.
java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. Please ensure you're using invokeLater/invokeAndWait with a correct modality state (not "any"). See TransactionGuard documentation for details. current modality=ModalityState:{[Biome is loading... 1406936926: running=false; canceled=false]} at com.intellij.openapi.diagnostic.Logger.error(Logger.java:370) at com.intellij.openapi.application.TransactionGuardImpl.assertWriteSafeContext(TransactionGuardImpl.java:151) at com.intellij.openapi.vfs.newvfs.RefreshSessionImpl.(RefreshSessionImpl.java:62) at com.intellij.openapi.vfs.newvfs.RefreshQueueImpl.createSession(RefreshQueueImpl.java:184) at com.intellij.openapi.vfs.newvfs.RefreshQueue.refresh(RefreshQueue.java:39) at com.intellij.openapi.vfs.newvfs.RefreshQueue.refresh(RefreshQueue.java:27) at com.intellij.openapi.vfs.newvfs.NewVirtualFile.refresh(NewVirtualFile.java:56) at com.intellij.openapi.vfs.VirtualFile.refresh(VirtualFile.java:675) at com.intellij.ide.plugins.DynamicPluginsFrameStateListener.applicationActivated(DynamicPluginVfsListener.kt:137) at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:699) at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:663) at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:422) at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:401) at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1) at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:460) at jdk.proxy2/jdk.proxy2.$Proxy161.applicationActivated(Unknown Source) at com.intellij.ide.ApplicationActivationStateManager.setActive(ApplicationActivationStateManager.java:105) at com.intellij.ide.ApplicationActivationStateManager.updateState(ApplicationActivationStateManager.java:48) at com.intellij.ide.IdeEventQueueKt.processAppActivationEvent(IdeEventQueue.kt:1031) at com.intellij.ide.IdeEventQueueKt.access$processAppActivationEvent(IdeEventQueue.kt:1) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:573) at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:992) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:992) at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405) at java.desktop/java.awt.SentEvent.dispatch(SentEvent.java:75) at java.desktop/java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:262) at java.desktop/java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:289) at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:439) at com.intellij.ide.IdeKeyboardFocusManager.access$dispatchEvent$s1569605750(IdeKeyboardFocusManager.kt:18) at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25) at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:992) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:992) at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:25) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4904) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2808) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855) at java.desktop/sun.awt.SunToolkit$1.run(SunToolkit.java:524) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733) 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:761) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:685) at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$10(IdeEventQueue.kt:589) at com.intellij.openapi.application.impl.ApplicationImpl.runWithoutImplicitRead(ApplicationImpl.java:1485) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:589) at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:992) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:992) at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405) at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.kt:721) at com.intellij.openapi.progress.util.ProgressWindow.lambda$startBlocking$4(ProgressWindow.java:217) at com.intellij.openapi.application.impl.ApplicationImpl.runUnlockingIntendedWrite(ApplicationImpl.java:887) at com.intellij.openapi.progress.util.ProgressWindow.lambda$startBlocking$5(ProgressWindow.java:212) at com.intellij.openapi.progress.util.ProgressWindow.executeInModalContext(ProgressWindow.java:193) at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:210) at com.intellij.openapi.progress.impl.ProgressRunner.lambda$execFromEDT$7(ProgressRunner.java:317) at java.base/java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:757) at java.base/java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:735) at java.base/java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2182) at com.intellij.openapi.progress.impl.ProgressRunner.execFromEDT(ProgressRunner.java:314) at com.intellij.openapi.progress.impl.ProgressRunner.submit(ProgressRunner.java:254) at com.intellij.openapi.progress.impl.ProgressRunner.submitAndGet(ProgressRunner.java:195) at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:445) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:523) at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:86) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:248) at com.github.biomejs.intellijbiome.widgets.BiomeWidgetPresentation.getSelectedValue(BiomeWidgetPresentation.kt:22) at com.intellij.openapi.wm.impl.status.MultipleTextValues.(IdeStatusBarImpl.kt:911) at com.intellij.openapi.wm.impl.status.IdeStatusBarImplKt.createComponentByWidgetPresentation(IdeStatusBarImpl.kt:816) at com.intellij.openapi.wm.impl.status.IdeStatusBarImplKt.wrap(IdeStatusBarImpl.kt:834) at com.intellij.openapi.wm.impl.status.IdeStatusBarImplKt.access$wrap(IdeStatusBarImpl.kt:1) at com.intellij.openapi.wm.impl.status.IdeStatusBarImpl$doInit$items$1$1$component$1$1.invoke(IdeStatusBarImpl.kt:298) at com.intellij.openapi.wm.impl.status.IdeStatusBarImpl$doInit$items$1$1$component$1$1.invoke(IdeStatusBarImpl.kt:297) at com.intellij.openapi.progress.CoroutinesKt.blockingContext(coroutines.kt:248) at com.intellij.openapi.progress.CoroutinesKt.blockingContext(coroutines.kt:199) at com.intellij.openapi.wm.impl.status.IdeStatusBarImpl$doInit$items$1$1$component$1.invokeSuspend(IdeStatusBarImpl.kt:297) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:193) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861) at com.intellij.openapi.application.impl.ApplicationImpl$4.run(ApplicationImpl.java:478) at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:79) at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:121) at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:792) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733) 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:761) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:685) at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$10(IdeEventQueue.kt:589) at com.intellij.openapi.application.impl.ApplicationImpl.runWithoutImplicitRead(ApplicationImpl.java:1485) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:589) at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:992) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:992) at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405) 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)
Java.util.NoSuchElementException: List is empty.
java.util.NoSuchElementException: List is empty. at kotlin.collections.CollectionsKt___CollectionsKt.first(_Collections.kt:214) at kotlin.collections.CollectionsKt___CollectionsKt.first(_Collections.kt:197) at com.github.biomejs.intellijbiome.widgets.BiomeWidgetPresentation.getTooltipText(BiomeWidgetPresentation.kt:32) at com.intellij.openapi.wm.impl.status.MultipleTextValues$1.invoke(IdeStatusBarImpl.kt:908) at com.intellij.openapi.wm.impl.status.MultipleTextValues$1.invoke(IdeStatusBarImpl.kt:908) at com.intellij.openapi.wm.impl.status.TextPanel.getToolTipText(TextPanel.kt:53) at java.desktop/javax.swing.JComponent.getToolTipText(JComponent.java:3100) at com.intellij.ide.IdeTooltipManager.isTooltipDefined(IdeTooltipManager.java:261) at com.intellij.ide.IdeTooltipManager.showForComponent(IdeTooltipManager.java:230) at com.intellij.ide.IdeTooltipManager.maybeShowFor(IdeTooltipManager.java:217) at com.intellij.ide.IdeTooltipManager.eventDispatched(IdeTooltipManager.java:140) at java.desktop/java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Toolkit.java:2202) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2094) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:2093) at java.desktop/java.awt.Toolkit.notifyAWTEventListeners(Toolkit.java:2050) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4933) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4954) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEnterExit(Container.java:4732) at java.desktop/java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:4710) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4561) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4522) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2808) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:794) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739) at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733) 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$4.run(EventQueue.java:766) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:764) 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:763) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:685) at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:633) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:588) at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:67) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:369) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:368) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:368) at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:363) at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:992) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113) at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:992) at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:363) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:861) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:405) 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)
...ellij/src/main/kotlin/com/github/biomejs/intellijbiome/settings/BiomeSettingsConfigurable.kt
Outdated
Show resolved
Hide resolved
Would like to extend thanks to @magnetardev for his preliminary work. @nissy-dev Hey, thank you for the review, really appreciate that!
Your CLI path point to a valid CLI? (if not, maybe we need some extra validations for invalid paths) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Your CLI path point to a valid CLI? (if not, maybe we need some extra validations for invalid paths)
I could confirm that the latest state of this branch is working fine!
What is the status of the format, the code about the format exists, but does it still need to be modified? Also, it would be helpful if you could format all code before committing it.
Are you talking about BiomeFormatterProvider? if yes, i think it is working
Do you mean format the kotlin code, right? |
Thanks! I can confirm it work well
I didn't mean that I wanted some new setting. All your codes are tab-indented while all others are space-indented, and I just wanted them to be consistent. I have already applied formatting on my end, so there is nothing in particular that I want you to commit. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍 Thank you for your patience!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's great! I left some comment/question, but we can follow up later with new PRs. I think we can merge it and see how the release goes.
Build and run the plugin requires: | ||
|
||
- Java development kit 17+ | ||
- IntelliJ IDEA (Ultimate edition or community edition) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does that mean that CLion, WebStorm, etc. wouldn't work for local development?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can remove this requirement,
The Intellij IDEA for testing purpose is automatically downloaded when you run ./gradlew runIde (i don't know if it's possible to use other IDE's)
For more details about IDE Development Instance
|
||
### From JetBrains IDEs | ||
|
||
- Press `⌘Сmd,` to open the IDE settings and then select Plugins. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Press `⌘Сmd,` to open the IDE settings and then select Plugins. | |
- Press <kbd title="Cmd">⌘</kbd>, to open the IDE settings and then select Plugins. |
- we should list
Ctrl
too for windows/linux users - I think there's some other key missing, only
Cmd
doesn't do anything in the IDE. - Also, suggesting a different way to render the key on markdown: check how they are rendered here: ⌘
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should list Ctrl too for windows/linux users
🪟🪟 Ok
I think there's some other key missing, only Cmd doesn't do anything in the IDE.
It's Cmd
+ ,
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cool. Each key should be wrapped using the tag, it will make things stand out
## Building and running the plugin | ||
|
||
Build and run the plugin requires: | ||
|
||
- Java development kit 17+ | ||
- IntelliJ IDEA (Ultimate edition or community edition) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is is this required for installing the plugin? I think it's only required for local development. Is there a minimum version for the IntelliJ IDEs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are right, this requirements are only needed for development, i think we can safely remove this, because it already exists on CONTRIBUTING.md.
About minimum version, the plugin template configure the minimum version to 2023.2, but we can easily change that on gradle.properties file
(Maybe we need to add the plugin version verifier to the github workflow, to ensure the biome plugin binary compatibility)
### Running the plugin on IDEA | ||
|
||
```shell | ||
./gradlew runIde | ||
``` | ||
|
||
### Build the plugin | ||
|
||
```shell | ||
./gradlew buildPlugin | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these paragraphs needed for the readme?
pluginGroup = com.github.biomejs.intellijbiome | ||
pluginName = Biome | ||
pluginRepositoryUrl = https://github.com/biomejs/biome |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a documentation page to learn about these properties? I went in https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html and couldn't find anything about pluginName
for example
Summary
Closes #93
Tasks