From b5e20e88929a546aabb2ee968be847f16bf3cb91 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 25 Jul 2019 11:54:28 +0200 Subject: [PATCH] let groovyScript in live templates use the plugin of the language under caret (IDEA-218938) GitOrigin-RevId: c89810fc3bbe0b5cbeaa1241b5dfecee98579b66 --- .../codeInsight/template/macro/GroovyScriptMacro.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/macro/GroovyScriptMacro.java b/platform/lang-impl/src/com/intellij/codeInsight/template/macro/GroovyScriptMacro.java index 791deafe7415..1327b26b5e2d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/macro/GroovyScriptMacro.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/macro/GroovyScriptMacro.java @@ -19,7 +19,10 @@ import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.codeInsight.template.*; +import com.intellij.lang.Language; +import com.intellij.openapi.editor.Editor; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.util.PsiUtilBase; import com.intellij.util.containers.ContainerUtil; import groovy.lang.Binding; import groovy.lang.GroovyShell; @@ -59,12 +62,15 @@ public class GroovyScriptMacro extends Macro { } private static Object runIt(Expression[] params, ExpressionContext context) { + Editor editor = context.getEditor(); + Language language = editor == null ? null : PsiUtilBase.getLanguageInEditor(editor, context.getProject()); + try { Result result = params[0].calculateResult(context); if (result == null) return null; String text = result.toString(); - GroovyShell shell = new GroovyShell(); + GroovyShell shell = new GroovyShell(language == null ? null : language.getClass().getClassLoader()); File possibleFile = new File(text); Script script = possibleFile.exists() ? shell.parse(possibleFile) : shell.parse(text); Binding binding = new Binding(); @@ -80,7 +86,7 @@ public class GroovyScriptMacro extends Macro { binding.setVariable("_"+i, value); } - binding.setVariable("_editor", context.getEditor()); + binding.setVariable("_editor", editor); script.setBinding(binding);