User: joe Date: 26 Feb 23 11:51 Revision: 77d8bb6ec6db97fbcd81938e9a0cda0033808b62 Summary: Merge branch '2022.3' into 2023.1 # Conflicts: # src/main/kotlin/platform/mcp/actions/SrgActionBase.kt TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=8324&personal=false Index: build.gradle.kts =================================================================== --- build.gradle.kts (revision 3645531914a65bb0da1df8a6b0504fc3331e29d4) +++ build.gradle.kts (revision 77d8bb6ec6db97fbcd81938e9a0cda0033808b62) @@ -80,7 +80,6 @@ implementation(files(gradleToolingExtensionJar)) - implementation(libs.templateMakerFabric) implementation(libs.mappingIo) implementation(libs.bundles.asm) @@ -155,10 +154,11 @@ "maven", "gradle", "Groovy", + "Kotlin", "org.toml.lang:$pluginTomlVersion", "ByteCodeViewer", - // needed dependencies for unit tests "properties", + // needed dependencies for unit tests "junit" ) Index: gradle/libs.versions.toml =================================================================== --- gradle/libs.versions.toml (revision 3645531914a65bb0da1df8a6b0504fc3331e29d4) +++ gradle/libs.versions.toml (revision 77d8bb6ec6db97fbcd81938e9a0cda0033808b62) @@ -10,7 +10,6 @@ coroutines-jdk8 = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8", version.ref = "coroutines" } coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "coroutines" } -templateMakerFabric = "com.extracraftx.minecraft:TemplateMakerFabric:0.4.1" mappingIo = "net.fabricmc:mapping-io:0.2.1" # GrammarKit Index: src/main/kotlin/platform/mcp/actions/SrgActionBase.kt =================================================================== --- src/main/kotlin/platform/mcp/actions/SrgActionBase.kt (revision 3645531914a65bb0da1df8a6b0504fc3331e29d4) +++ src/main/kotlin/platform/mcp/actions/SrgActionBase.kt (revision 77d8bb6ec6db97fbcd81938e9a0cda0033808b62) @@ -31,6 +31,7 @@ import com.intellij.ui.awt.RelativePoint import java.awt.Point import javax.swing.JComponent +import org.apache.commons.lang.StringEscapeUtils abstract class SrgActionBase : AnAction() { @@ -108,8 +109,9 @@ } fun showSuccessBalloon(editor: Editor, element: PsiElement, text: String) { + val escapedText = StringEscapeUtils.escapeHtml(text) val balloon = JBPopupFactory.getInstance() - .createHtmlTextBalloonBuilder(text, null, LightColors.SLIGHTLY_GREEN, null) + .createHtmlTextBalloonBuilder(escapedText, null, LightColors.SLIGHTLY_GREEN, null) .setHideOnAction(true) .setHideOnClickOutside(true) .setHideOnKeyOutside(true) Index: src/main/kotlin/util/utils.kt =================================================================== --- src/main/kotlin/util/utils.kt (revision 3645531914a65bb0da1df8a6b0504fc3331e29d4) +++ src/main/kotlin/util/utils.kt (revision 77d8bb6ec6db97fbcd81938e9a0cda0033808b62) @@ -30,6 +30,7 @@ import com.intellij.openapi.util.Computable import com.intellij.openapi.util.Condition import com.intellij.openapi.util.Ref +import com.intellij.openapi.util.text.StringUtil import com.intellij.pom.java.LanguageLevel import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiFile @@ -52,31 +53,26 @@ } } -inline fun Project.runWriteTaskInSmartMode(crossinline func: () -> T): T { - if (ApplicationManager.getApplication().isReadAccessAllowed) { - return runWriteTask { func() } - } - +inline fun Project.runWriteTaskInSmartMode(crossinline func: () -> Unit) { val dumbService = DumbService.getInstance(this) - val ref = Ref() - while (true) { - dumbService.waitForSmartMode() - val success = runWriteTask { + lateinit var runnable: Runnable + runnable = Runnable { - if (isDisposed) { - throw ProcessCanceledException() - } + if (isDisposed) { + throw ProcessCanceledException() + } + runWriteTask { + if (isDisposed) { + throw ProcessCanceledException() + } if (dumbService.isDumb) { - return@runWriteTask false + dumbService.runWhenSmart(runnable) + } else { + func() } - ref.set(func()) - return@runWriteTask true } - if (success) { - break - } + } + dumbService.runWhenSmart(runnable) - } +} - return ref.get() -} fun invokeAndWait(func: () -> T): T { val ref = Ref() @@ -310,6 +306,9 @@ .joinToString("") } +fun String.toJavaClassName() = StringUtil.capitalizeWords(this, true) + .replace(" ", "").toJavaIdentifier(allowDollars = false) + fun String.toPackageName(): String { if (this.isEmpty()) { return "_"