Skip to content

Instantly share code, notes, and snippets.

@dkandalov
dkandalov / plugin.groovy
Last active August 29, 2015 13:56
Example of listening to VCS updates in IntelliJ (this is mini-plugin for https://github.com/dkandalov/live-plugin)
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.util.Pair
import com.intellij.openapi.vcs.ProjectLevelVcsManager
import com.intellij.openapi.vcs.VcsKey
import com.intellij.openapi.vcs.update.UpdateEnvironment
import com.intellij.openapi.vcs.update.UpdatedFilesListener
import com.intellij.openapi.vcs.update.UpdatedFilesReverseSide
import com.intellij.util.Consumer
import com.intellij.util.messages.MessageBusConnection
(?s)^((?!my text).)*$
^((?!my text).)+$ <-- won't match empty lines
^((?!my text).)*$ <-- this doesn't work :(
@dkandalov
dkandalov / gist:9737216
Last active August 29, 2015 13:57
draft of createJson_activeAndInactiveCommittersChart()
static String createJson_activeAndInactiveCommittersChart(List<FileChangeEvent> events, Closure checkIfCancelled = {}) {
Collection.mixin(CollectionUtil)
def commitEvents = events.groupBy{ it.revision }.entrySet().collect{
def fileEvent = it.value.first()
[author: fileEvent.author, revisionDate: fileEvent.revisionDate]
}
def committers = new HashSet()
commitEvents.each { committers.add(it.author) }
@dkandalov
dkandalov / plugin.groovy
Last active August 29, 2015 13:58
Example of filtering and changing console output in IntelliJ (this code is for https://github.com/dkandalov/live-plugin)
import com.intellij.execution.filters.ConsoleInputFilterProvider
import com.intellij.execution.filters.InputFilter
import com.intellij.execution.ui.ConsoleViewContentType as ContentType
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Pair
import org.jetbrains.annotations.NotNull
import static liveplugin.PluginUtil.*
import com.intellij.openapi.extensions.Extensions
import static com.intellij.execution.filters.ConsoleInputFilterProvider.*
@dkandalov
dkandalov / plugin.groovy
Last active August 29, 2015 14:00
Simplistic "compile and run haskell" IntelliJ action (see https://github.com/dkandalov/live-plugin)
import com.intellij.notification.*
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.progress.PerformInBackgroundOption
import static liveplugin.PluginUtil.*
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.fileEditor.FileDocumentManager
@dkandalov
dkandalov / plugin.groovy
Last active August 29, 2015 14:00
Draft of calling intellij actions from live-plugin
import com.intellij.debugger.actions.DebuggerAction
import com.intellij.debugger.actions.DebuggerActions
import com.intellij.execution.actions.StopAction
import com.intellij.execution.runners.FakeRerunAction
import com.intellij.execution.runners.RestartAction
import com.intellij.ide.DataManager
import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.openapi.actionSystem.ActionPlaces
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.DataContext
@dkandalov
dkandalov / plugin.groovy
Last active August 29, 2015 14:02
Find all transitive dependencies for modules in IDEA project (this is a mini plugin for https://github.com/dkandalov/live-plugin)
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.roots.CompilerModuleExtension
import com.intellij.openapi.roots.LibraryOrderEntry
import com.intellij.openapi.roots.ModifiableRootModel
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.roots.OrderRootType
import com.intellij.openapi.roots.libraries.Library
import com.intellij.openapi.roots.libraries.LibraryTable
import liveplugin.PluginUtil
import com.intellij.internal.psiView.PsiViewerDialog
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.editor.markup.HighlighterTargetArea
import com.intellij.openapi.editor.markup.TextAttributes
import com.intellij.psi.PsiCodeBlock
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiManager
import com.intellij.openapi.editor.markup.EffectType
import java.awt.*
import com.intellij.codeInsight.intention.IntentionAction
import com.intellij.codeInsight.intention.IntentionManager
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.openapi.project.ProjectManager
import com.intellij.psi.PsiFile
import com.intellij.util.IncorrectOperationException
import com.intellij.util.lang.UrlClassLoader
import org.jetbrains.annotations.NotNull