Skip to content

Instantly share code, notes, and snippets.

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'")
@dkandalov
dkandalov / plugin.kts
Last active August 17, 2021 07:33
To run the code install https://github.com/dkandalov/live-plugin first and add a plugin from this gist
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
@dkandalov
dkandalov / fun-interface.kt
Created May 22, 2021 10:30
Kotlin fun interfaces and the type system
fun interface Action {
fun run()
}
fun schedule(action: Action) = action.run()
fun scheduleFun(action: () -> Unit) = action.invoke()
fun f(): Unit = println("foo")
fun main() {
@dkandalov
dkandalov / plugin.kts
Last active May 9, 2021 16:26
Markdown links with custom actions (see https://github.com/dkandalov/live-plugin)
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
@dkandalov
dkandalov / plugin.kts
Last active May 9, 2021 16:41
Kotlin space police inspection (see https://github.com/dkandalov/live-plugin)
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
@dkandalov
dkandalov / plugin.kts
Last active May 9, 2021 16:41
Kotlin inspection to import nested references (see https://github.com/dkandalov/live-plugin)
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
@dkandalov
dkandalov / plugin.groovy
Created October 15, 2020 09:45
Mini-plugin to remove from console java full path and exit status
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
@dkandalov
dkandalov / promotion-service-kata.kt
Created October 10, 2019 13:14
Promotion service kata
import com.natpryce.hamkrest.assertion.assertThat
import com.natpryce.hamkrest.equalTo
import org.junit.Test
/*
* The promotion service calculates discounts for promoted items.
* (It's a bit crazy because it's also reducing the tax 🙄)
* The Item class is classic DTO and its fields are not encapsulated.
*
* Make Item a rich object and encapsulate its fields 💪
@dkandalov
dkandalov / plugin.groovy
Created September 10, 2019 19:48
Plugin to create command line launcher for IJ (without using Toolbox)
import com.intellij.execution.ExecutionException
import com.intellij.execution.configurations.GeneralCommandLine
import com.intellij.execution.configurations.PathEnvironmentVariableUtil
import com.intellij.execution.process.ProcessOutput
import com.intellij.execution.util.ExecUtil
import com.intellij.ide.actions.CreateDesktopEntryAction
import com.intellij.ide.actions.CreateLauncherScriptAction
import com.intellij.openapi.application.ApplicationBundle
import com.intellij.openapi.application.ApplicationNamesInfo
import com.intellij.openapi.application.PathManager
@dkandalov
dkandalov / BootTidal.hs
Last active September 12, 2019 23:25
tidal for intellij
:set -XOverloadedStrings
:set prompt ""
:set prompt-cont ""
import Sound.Tidal.Context
-- total latency = oLatency + cFrameTimespan
tidal <- startTidal (superdirtTarget {oLatency = 0.1, oAddress = "127.0.0.1", oPort = 57120}) (defaultConfig {cFrameTimespan = 1/20})
:{