用于记录方法参数的Idea实时模板

q9yhzks0  于 2022-10-07  发布在  其他
关注(0)|答案(3)|浏览(131)

我希望能够按照JetBrain的想法创建一个活动模板来记录方法的参数。我们就叫它“大块头”吧。它的工作原理如下:

public void get(String one, String two) {
    larg<tab>

创造

public void get(String one, String two) {
    log.info("get: one = " + one + " two = " + two);

我可以输入方法名,但还不知道如何引入方法参数。有什么主意吗?

bihw5rsg

bihw5rsg1#

我晚了4年,但是预定义的模板soutp基本上是使用groovyscript变量来完成的。

这是一个很棒的脚本,它可以实现您想要的功能

groovyScript("'"' + _1.collect { it + ' = [" + ' + it + ' + "]'}.join(', ') + '"'", methodParameters())
0wi1tuuw

0wi1tuuw2#

看起来目前使用活动模板是不可能的。

Jetbrain's forum

There is no predefined live template function to do this for you automatically.
You can write a plugin that would provide such a function.
ibrsph3r

ibrsph3r3#

这是我最棒的脚本

groovyScript("import com.intellij.psi.*;import com.intellij.psi.util.PsiTreeUtil; def file = PsiDocumentManager.getInstance(_editor.project).getPsiFile(_editor.document); PsiMethod method = PsiTreeUtil.findElementOfClassAtOffset(file, _editor.caretModel.offset, PsiMethod.class, false); PsiParameter[] parameters = method == null ? PsiParameter.EMPTY_ARRAY : method.parameterList.parameters; return parameters.size() == 0 ? '' : '"' + method.name + ' : ' + parameters.collect { def prefix = it.name + ' = '; def type = it.type; return type instanceof PsiArrayType ? type.componentType instanceof PsiPrimitiveType ? prefix + '" + java.util.Arrays.toString(' + it.name + ')' : prefix + '" + java.util.Arrays.deepToString(' + it.name + ')' : prefix + '" + ' + it.name }.join(' + ", ')", methodParameters())

相关问题