Skip to content

Commit

Permalink
Ensure somethingIsWrong() is only invoked on EDT
Browse files Browse the repository at this point in the history
  • Loading branch information
InSyncWithFoo committed Oct 15, 2024
1 parent 948da4a commit 37212bc
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 10 deletions.
23 changes: 23 additions & 0 deletions src/main/kotlin/insyncwithfoo/ryecharm/Application.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package insyncwithfoo.ryecharm

import com.intellij.openapi.application.Application
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.editor.EditorFactory
import com.intellij.openapi.fileEditor.FileDocumentManager


internal val application: Application
get() = ApplicationManager.getApplication()


internal val fileDocumentManager: FileDocumentManager
get() = FileDocumentManager.getInstance()


internal val editorFactory: EditorFactory
get() = EditorFactory.getInstance()


internal fun invokeLater(action: () -> Unit) {
application.invokeLater(action)
}
4 changes: 0 additions & 4 deletions src/main/kotlin/insyncwithfoo/ryecharm/IntentionActions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,6 @@ import com.intellij.openapi.project.Project
import com.intellij.psi.PsiFile


internal val fileDocumentManager: FileDocumentManager
get() = FileDocumentManager.getInstance()


internal fun FileDocumentManager.saveAllDocumentsAsIs() {
unsavedDocuments.forEach { saveDocumentAsIs(it) }
}
Expand Down
8 changes: 6 additions & 2 deletions src/main/kotlin/insyncwithfoo/ryecharm/Notifications.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,16 @@ private const val INFORMATION_GROUP_ID = "insyncwithfoo.ryecharm.information"
private val ICON = RyeIcons.TINY_16


private val notificationGroupManager: NotificationGroupManager
get() = NotificationGroupManager.getInstance()


internal val errorNotificationGroup: ErrorNotificationGroup
get() = NotificationGroupManager.getInstance().getNotificationGroup(ERROR_GROUP_ID)
get() = notificationGroupManager.getNotificationGroup(ERROR_GROUP_ID)


internal val informationNotificationGroup: InformationNotificationGroup
get() = NotificationGroupManager.getInstance().getNotificationGroup(INFORMATION_GROUP_ID)
get() = notificationGroupManager.getNotificationGroup(INFORMATION_GROUP_ID)


private fun Notification.prettify() = this.apply {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import com.intellij.psi.util.startOffset
import com.intellij.testFramework.LightVirtualFile
import com.jetbrains.python.psi.PyFile
import insyncwithfoo.ryecharm.RootDisposable
import insyncwithfoo.ryecharm.editorFactory
import insyncwithfoo.ryecharm.fileEditorManager
import insyncwithfoo.ryecharm.message
import insyncwithfoo.ryecharm.paste
Expand Down Expand Up @@ -73,9 +74,8 @@ private val PyFile.injectedPEP723Fragment: TomlFile?

private fun Editor.addReleaseListener(project: Project, listener: (Document) -> Unit) {
val parentDisposable = RootDisposable.getInstance(project)
val factory = EditorFactory.getInstance()

factory.addEditorFactoryListener(object : EditorFactoryListener {
editorFactory.addEditorFactoryListener(object : EditorFactoryListener {
override fun editorReleased(event: EditorFactoryEvent) {
if (event.editor === this@addReleaseListener) {
listener(event.editor.document)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import com.jetbrains.python.black.BlackFormattingService
import insyncwithfoo.ryecharm.Command
import insyncwithfoo.ryecharm.configurations.ruff.RuffTimeouts
import insyncwithfoo.ryecharm.configurations.ruff.ruffConfigurations
import insyncwithfoo.ryecharm.editorFactory
import insyncwithfoo.ryecharm.errorNotificationGroup
import insyncwithfoo.ryecharm.isSupportedByRuff
import insyncwithfoo.ryecharm.message
Expand Down Expand Up @@ -126,7 +127,7 @@ internal class RuffFormatter : AsyncDocumentFormattingService() {
}

private fun String.getOneBasedRange(offsetRange: TextRange): OneBasedRange {
val document = EditorFactory.getInstance().createDocument(this)
val document = editorFactory.createDocument(this)
return document.getOneBasedRange(offsetRange)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import insyncwithfoo.ryecharm.configurations.HasTimeouts
import insyncwithfoo.ryecharm.configurations.changeGlobalUVConfigurations
import insyncwithfoo.ryecharm.configurations.uv.UVTimeouts
import insyncwithfoo.ryecharm.configurations.uv.globalUVConfigurations
import insyncwithfoo.ryecharm.invokeLater
import insyncwithfoo.ryecharm.isSuccessful
import insyncwithfoo.ryecharm.message
import insyncwithfoo.ryecharm.somethingIsWrong
Expand Down Expand Up @@ -126,7 +127,7 @@ internal class VenvCreator(private val uvExecutable: Path, private val projectPa
val output = command.run(timeout) // FIXME: Run this properly

when (val newVenvName = extractNewVenvName(output)) {
null -> somethingIsWrong(message("messages.uvReportedError.body"))
null -> invokeLater { somethingIsWrong(message("messages.uvReportedError.body")) }
else -> venvDirectoryName = newVenvName
}
}
Expand Down

0 comments on commit 37212bc

Please sign in to comment.