如何在IntelliJ Live Template内部使用?

时间:2018-10-12 07:40:29

标签: intellij-idea groovy jetbrains-ide live-templates

我正在尝试编写一个简单的Groovy脚本来连接字符串。 该Groovy脚本旨在用作IntelliJ Live模板中的变量并生成一些代码。

当我将 $ variableResolvedWithGroovyScript $ 设置为以下值时:

groovyScript("def elements=[\"firstElem\",\"secondElem\",\"thirdElem\"];  
          String result=\"\";  
          for (String element : elements) {      
              result=result+element;        
          }        
          return result;"
, clipboard())

我遇到以下错误:

startup failed:
Script1.groovy: 1: expecting EOF, found 'return' @ line 1, column 183.
   lt+element;         }         return res
                             ^

1 error

但是,如果我尝试删除括号( { } ),则无需任何操作问题:

groovyScript("def elements=[\"firstElem\",\"secondElem\",\"thirdElem\"];  
          String result=\"\";  
          for (String element : elements)      
              result=result+element;
          return result;"
, clipboard())

如果我使用上述脚本并在Groovy控制台中运行它,则可以正常工作,因此我认为这是Live Template问题。 我试图以与引号转义的方式相同的方式来使括号转义,但是没有任何运气。

如何在实时模板中编写for(包含多个指令)?

1 个答案:

答案 0 :(得分:1)

我设法通过从磁盘加载Groovy脚本来使其工作。因此,不是 $ variableResolvedWithGroovyScript $ 的值,是:

groovyScript("def elements=[\"firstElem\",\"secondElem\",\"thirdElem\"];  
      String result=\"\";  
      for (String element : elements) {      
          result=result+element;        
      }        
      return result;"
, clipboard())

我只是使用:

groovyScript("d:\\Some\\Path\\Concatenate.groovy" , clipboard())

d:\ Some \ Path \ Concatenate.groovy与花括号一起使用,我也能够定义新方法,等等。