Skip to content

Instantly share code, notes, and snippets.

@dkandalov
dkandalov / plugin.kts
Last active May 2, 2024 13:01
Prototype of "suppress until commit" IntelliJ mini-plugin (to be executed via https://github.com/dkandalov/live-plugin)
import Plugin.SuppressInspectionTillCommit.Companion.resetSuppressions
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer
import com.intellij.codeInspection.InspectionSuppressor
import com.intellij.codeInspection.ProblemDescriptor
import com.intellij.codeInspection.SuppressQuickFix
import com.intellij.lang.LanguageExtensionPoint
import com.intellij.openapi.extensions.DefaultPluginDescriptor
import com.intellij.openapi.extensions.PluginId
import com.intellij.openapi.project.Project
@dkandalov
dkandalov / plugin.kts
Created October 14, 2022 08:36
Example of ReferencerContributor added via LivePlugin (https://github.com/dkandalov/live-plugin/issues/146)
import com.intellij.openapi.extensions.DefaultPluginDescriptor
import com.intellij.openapi.extensions.PluginId
import com.intellij.openapi.paths.WebReference
import com.intellij.openapi.util.TextRange
import com.intellij.patterns.PlatformPatterns
import com.intellij.psi.*
import com.intellij.psi.impl.source.resolve.reference.PsiReferenceContributorEP
import com.intellij.util.ProcessingContext
import org.jetbrains.kotlin.psi.KtStringTemplateExpression
@dkandalov
dkandalov / plugin.groovy
Last active February 2, 2024 20:12
IntelliJ plugin to find all recursive methods in project (can be executed using https://github.com/dkandalov/live-plugin). This is a follow up for this talk http://skillsmatter.com/podcast/nosql/using-graphs-for-source-code-analysis
import com.intellij.internal.psiView.PsiViewerDialog
import com.intellij.openapi.project.Project
import com.intellij.psi.JavaRecursiveElementVisitor
import com.intellij.psi.PsiFileSystemItem
import com.intellij.psi.PsiJavaFile
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiMethodCallExpression
import static liveplugin.PluginUtil.*
import com.intellij.application.subscribe
import com.intellij.ide.ui.LafManagerListener
import com.intellij.ui.Gray
import com.intellij.ui.JBColor
import com.intellij.util.ui.JBInsets
import javax.swing.UIManager
fun fixUI() {
// You can find more constants in:
// - https://github.com/JetBrains/intellij-community/blob/master/platform/util/ui/src/com/intellij/util/ui/JBUI.java
@dkandalov
dkandalov / plugin.groovy
Created July 11, 2013 18:25
Example of adding completion contributor at runtime
import com.intellij.codeInsight.completion.*
import com.intellij.codeInsight.lookup.LookupElementBuilder
import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.extensions.PluginDescriptor
import com.intellij.openapi.util.KeyedExtensionCollector
import com.intellij.patterns.ElementPattern
import com.intellij.patterns.PlatformPatterns
import com.intellij.util.ProcessingContext
import org.jetbrains.annotations.NotNull
import org.picocontainer.PicoContainer
@dkandalov
dkandalov / long_running_exec.rb
Last active June 2, 2023 14:37
Ruby method to execute and continuously print output of long-running shell command
#!/usr/bin/ruby
require "open4"
def shell_exec(command)
puts("> " + command + "\n")
pid, stdin, stdout, stderr = Open4::popen4(command)
while Process::waitpid(pid, Process::WNOHANG).nil? do
stdout.each_line { |line| puts line }
stderr.each_line { |line| puts line }
sleep(1)
(ns plugin.clj
(:use clojure.contrib.import-static)
(:import [liveplugin PluginUtil])
(:import [groovy.lang Closure]))
(import-static liveplugin.PluginUtil show registerAction runDocumentWriteAction currentEditorIn)
; This action inserts new line above current line.
; It's a follow-up for these posts:
; http://martinfowler.com/bliki/InternalReprogrammability.html
; http://nealford.com/memeagora/2013/01/22/why_everyone_eventually_hates_maven.html
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiModifier
import com.intellij.psi.util.PsiTreeUtil
import static liveplugin.PluginUtil.*
def findContextClass = { project ->
def editor = currentEditorIn(project);
import com.intellij.diagnostic.MessagePool
// A mini-plugin to disable all internal IDE errors
MessagePool.getInstance().addListener {
MessagePool.getInstance().clearErrors()
}
import com.intellij.ide.ui.LafManager
import com.intellij.ide.ui.LafManagerListener
import com.intellij.openapi.application.ApplicationManager
import com.intellij.ui.Gray
import com.intellij.ui.JBColor
import com.intellij.util.ui.JBInsets
import liveplugin.PluginUtil
import org.jetbrains.annotations.NotNull
import javax.swing.UIManager
import static liveplugin.PluginUtil.*