Early Access Program

IntelliJ IDEA 2020.1 EAP4: In-place Rename and Change Signature

IntelliJ IDEA 2020.1 EAP was updated today. This update provides an easier and more discoverable way to perform the Rename and Change Signature refactorings.

You no longer need to deal with a cumbersome modal dialog to change the signature of a method or a class. Simply edit the parameters of a class or a method, and then use the new gutter icon or an intention action (Alt+Enter) to review and apply the changes to the class / method declaration and all of its usages:

If you added new parameters, you will be offered to enter default values for them:

Check out the animation below for a better understanding of how the new Rename and Change Signature refactorings can help you update classes and methods:

Similarly, you can now simply change the name of a method or a class, and the IDE will give you a gutter icon that suggests renaming all its usages:

The new feature already works for Java in the newest v2020.1 EAP, and support for Kotlin is coming shortly. Stay tuned!

Check out the full release notes for the list of closed tickets in this EAP build.

Happy Developing!

Comments below can no longer be edited.

18 Responses to IntelliJ IDEA 2020.1 EAP4: In-place Rename and Change Signature

  1. Avatar

    HappyUser says:

    February 13, 2020

    This is awesome! Will it support Scala too?

    • Avatar

      HappyUser says:

      February 27, 2020

      Bumping question, this is a really welcome feature, are there any plans to introduce it to Scala code too (besides Java and Kotlin support)?

      • Avatar

        Artem Sarkisov says:

        March 2, 2020

        This feature won’t make it to the Scala plugin any time around v2020.1, but our Scala team do plan to support it in one of the future releases.

      • Avatar

        Luke says:

        April 13, 2020

        In Scala, I press Shift + F6, which highlights value or method, and it’s edited everywhere in the code (I’ve been doing this for Java as well)

  2. Avatar

    Mark Y says:

    February 13, 2020

    I’ve wanted this for years. Yay!

  3. Avatar

    abc says:

    February 13, 2020

    IntelliJ crashng on opne after update now, stopped working

  4. Avatar

    Charlie Hayes says:

    February 13, 2020

    It would be nice to have color or formatting in those tooltips

  5. Avatar

    Alexey Neupokoev says:

    February 14, 2020

    I can’t compile my project anymore because of NPE:

    at java.io.DataOutputStream.writeUTF(DataOutputStream.java:347)
    at java.io.DataOutputStream.writeUTF(DataOutputStream.java:323)
    at org.jetbrains.jps.javac.ast.api.JavacFileData.writeJavacRef(JavacFileData.java:207)
    at org.jetbrains.jps.javac.ast.api.JavacFileData.access$000(JavacFileData.java:19)
    at org.jetbrains.jps.javac.ast.api.JavacFileData$1.execute(JavacFileData.java:112)
    at org.jetbrains.jps.javac.ast.api.JavacFileData$1.execute(JavacFileData.java:108)
    at gnu.trove.TObjectIntHashMap.forEachEntry(TObjectIntHashMap.java:400)
    at org.jetbrains.jps.javac.ast.api.JavacFileData.saveRefs(JavacFileData.java:108)

    and so on.

    Seems like it is fixed here: http://git.jetbrains.org/?p=idea/community.git;a=commit;h=9d0e3e09bef36a8d16d7a54bdb3f9ed176a8efe3
    but this commit is not merged in EAP4.

    Is there any workaround for this NPE instead if reverting to EAP3 ?

  6. Avatar

    Sebastian says:

    February 14, 2020

    Hi, the “in-place” stuff is awsome! Thanks 🙂

    Unfortunately, there are still errors using play!1 projects (as already reported, see [1]).

    Don’t know if the previously reported bugs are fixed (as said in [1]) because this time, they look different:

    java.lang.Throwable: Unneeded kind: METHOD. Element: LightMethodBuilder:XXX; class: class com.intellij.play.utils.beans.PlayLightMethodBuilder; text: null
    at com.intellij.openapi.diagnostic.Logger.error(Logger.java:146)
    at org.jetbrains.plugins.groovy.lang.resolve.processors.KindsResolverProcessor.executeInner(KindsResolverProcessor.kt:52)
    at org.jetbrains.plugins.groovy.lang.resolve.processors.KindsResolverProcessor.execute(KindsResolverProcessor.kt:64)
    at com.intellij.psi.scope.DelegatingScopeProcessor.execute(DelegatingScopeProcessor.java:27)
    at org.jetbrains.plugins.groovy.lang.resolve.processors.JavaResolverProcessor.execute(JavaResolverProcessor.java:50)
    at org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.processElement(ResolveUtil.java:223)
    at com.intellij.play.utils.processors.ControllerMethodsProcessor.processElement(ControllerMethodsProcessor.java:18)
    at com.intellij.play.utils.PlayUtils.processPlayDeclarations(PlayUtils.java:63)

    It would be so great to get them fixed, as after clearing them in the event log, the re-appear (i.e. happen) after a short time and the warning icon is really annoying 🙂


    [1] https://blog.jetbrains.com/idea/2020/01/intellij-idea-2020-1-eap/#comment-513448

    • Avatar

      Sebastian says:

      February 15, 2020

      Just a quick follow up, the previous errors still exist and (re-)appear quickly editing/viewing files in a play!1 project:

      java.lang.Throwable: Unexpected element. Element: Specific implicit variable: XXX; class: class com.intellij.play.utils.processors.PlayImplicitVariablesFactory$2$1$1; text: XXX
      See org.jetbrains.plugins.groovy.lang.resolve.NonCodeMembersContributor docs.
      at com.intellij.openapi.diagnostic.Logger.error(Logger.java:146)
      at org.jetbrains.plugins.groovy.lang.resolve.processors.BaseMethodProcessor.execute(BaseMethodProcessor.kt:37)
      at com.intellij.psi.scope.DelegatingScopeProcessor.execute(DelegatingScopeProcessor.java:27)
      at com.intellij.play.utils.processors.PlayImplicitVariablesFactory$2$1.execute(PlayImplicitVariablesFactory.java:56)
      at com.intellij.psi.impl.PsiClassImplUtil.processCachedMembersByName(PsiClassImplUtil.java:548)

  7. Avatar

    Tim van der Leeuw says:

    February 14, 2020

    The latest EAP builds look very interesting but unfortunately they break a number of plugins which I use frequently!
    That puts me off trying them out as I will probably not stay on them for very long…

    Most of those plugins are from 3d parties (such as .ignore, BitBucket Linky, BashSupport) but others are JetBrains plugins (Rust).

    • Avatar

      Arseniy Pendryak says:

      February 16, 2020

      Could you please provide more details what exactly doesn’t work in Rust plugin?

  8. Avatar

    Brice says:

    February 14, 2020

    I’m really hoping to be able to open a simple folder without the extra scanning, fingers crossed !


  9. Avatar

    Edoardo Luppi says:

    February 14, 2020

    Would love to have IDEA-161927 implemented finally in this 2020 round 🙂

  10. Avatar

    Yosef says:

    February 15, 2020

    And maybe you can add to toolbox the button which will create and update PATH automatically?

    Andrei Mishchenko says:
    February 4, 2020 at 11:29 pm
    There is already this option in Toolbox, open settings of installation in toolbox

    Yosef says:
    February 10, 2020 at 11:38 am
    Privet Andrei

    How to activate it? Maybe you can refer me to documentation?

    When I trying to run: idea from command line:
    ‘idea’ is not recognized as an internal or external command,
    operable program or batch file.

  11. Avatar

    Pierre says:

    February 19, 2020

    Can’t wait for an update. UI freeze nearly every third click for ~40 seconds.

    Freeze in EDT for 40 seconds
    Sampled time: 34000ms, sampling rate: 100ms, GC time: 63ms (0%), Class loading: 0%, load average: 3,56

    at java.desktop@11.0.6/sun.font.SunLayoutEngine.shape(Native Method)

    Of course I always send the error. But I really have to use an other version for now. It’s impossible to work like that.

  12. Avatar

    Ilya Zinoviev says:

    February 21, 2020

    Thanks a lot for this!
    I was using this EAP for only one day and ‘In-place Rename’ is the most used feature for me!

  13. Avatar

    Charles Monteiro says:

    March 20, 2020

    in place editing would be greatly appreciated for Groovy !

Discover more