References for the Refactoring Gilded Rose Kata at JAX London 2022:
- Gilded Rose Refactoring Kata
- Branch with the solution from the JAX talk
- Strong-style pairing
- Duncan's YouTube and Twitter
- Dmitry's YouTube and Twitter
References for the Refactoring Gilded Rose Kata at JAX London 2022:
import com.intellij.openapi.actionSystem.* | |
val newElementActionGroup = ActionManager.getInstance().getAction(IdeActions.GROUP_NEW) as DefaultActionGroup | |
val newKotlinFileAction = ActionManager.getInstance().getAction("Kotlin.NewFile") as AnAction | |
newElementActionGroup.remove(newKotlinFileAction) | |
newElementActionGroup.add(newKotlinFileAction, Constraints.FIRST) |
import com.intellij.lang.ASTNode | |
import com.intellij.lang.LanguageExtensionPoint | |
import com.intellij.lang.folding.CustomFoldingBuilder | |
import com.intellij.lang.folding.FoldingBuilder | |
import com.intellij.lang.folding.FoldingDescriptor | |
import com.intellij.lang.folding.LanguageFolding | |
import com.intellij.openapi.editor.Document | |
import com.intellij.openapi.extensions.DefaultPluginDescriptor | |
import com.intellij.openapi.extensions.PluginId | |
import com.intellij.openapi.project.DumbAware |
import com.intellij.ui.EditorNotificationsImpl | |
import liveplugin.show | |
import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingSuspendNotificationProvider | |
// depends-on-plugin org.jetbrains.kotlin | |
EditorNotificationsImpl.EP_PROJECT.getPoint(project!!) | |
.unregisterExtension(KotlinHighlightingSuspendNotificationProvider::class.java) | |
if (!isIdeStartup) show("Disabled notification 'Highlighting is temporary suspended for file due to internal error'") |
import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction | |
import com.intellij.openapi.editor.Editor | |
import com.intellij.openapi.project.Project | |
import com.intellij.psi.PsiElement | |
import com.intellij.psi.util.parentOfType | |
import com.intellij.sql.psi.SqlSelectStatement | |
import liveplugin.PluginUtil.openInBrowser | |
import liveplugin.editor | |
import liveplugin.registerAction | |
import liveplugin.registerIntention |
fun interface Action { | |
fun run() | |
} | |
fun schedule(action: Action) = action.run() | |
fun scheduleFun(action: () -> Unit) = action.invoke() | |
fun f(): Unit = println("foo") | |
fun main() { |
import com.intellij.codeInsight.navigation.actions.GotoDeclarationHandler | |
import com.intellij.lang.LanguageAnnotators | |
import com.intellij.lang.LanguageExtensionPoint | |
import com.intellij.lang.annotation.Annotator | |
import com.intellij.lang.annotation.HighlightSeverity.INFORMATION | |
import com.intellij.openapi.application.ApplicationManager | |
import com.intellij.openapi.editor.Editor | |
import com.intellij.openapi.editor.colors.CodeInsightColors.INACTIVE_HYPERLINK_ATTRIBUTES | |
import com.intellij.openapi.extensions.DefaultPluginDescriptor | |
import com.intellij.openapi.util.TextRange |
import com.intellij.codeInspection.LocalQuickFix | |
import com.intellij.codeInspection.ProblemDescriptor | |
import com.intellij.codeInspection.ProblemHighlightType.WEAK_WARNING | |
import com.intellij.codeInspection.ProblemsHolder | |
import com.intellij.lang.ASTFactory | |
import com.intellij.openapi.project.Project | |
import com.intellij.psi.PsiElement | |
import com.intellij.psi.PsiElementVisitor | |
import com.intellij.psi.PsiWhiteSpace | |
import liveplugin.registerInspection |
import com.intellij.codeInspection.LocalQuickFix | |
import com.intellij.codeInspection.ProblemDescriptor | |
import com.intellij.codeInspection.ProblemsHolder | |
import com.intellij.openapi.project.Project | |
import com.intellij.psi.PsiClass | |
import com.intellij.psi.PsiElementVisitor | |
import com.intellij.psi.PsiEnumConstant | |
import com.intellij.psi.util.parentOfType | |
import liveplugin.registerInspection | |
import liveplugin.show |
import com.intellij.execution.filters.ConsoleInputFilterProvider | |
import com.intellij.execution.filters.InputFilter | |
import com.intellij.execution.ui.ConsoleViewContentType | |
import com.intellij.openapi.Disposable | |
import com.intellij.openapi.extensions.Extensions | |
import com.intellij.openapi.extensions.LoadingOrder | |
import com.intellij.openapi.project.Project | |
import com.intellij.openapi.util.Pair | |
import org.jetbrains.annotations.NotNull |