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!

This entry was posted in EAP Releases and tagged , . Bookmark the permalink.

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

  1. HappyUser says:

    This is awesome! Will it support Scala too?

    • HappyUser says:

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

      • Artem Sarkisov says:

        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.

      • Luke says:

        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. Mark Y says:

    I’ve wanted this for years. Yay!

  3. abc says:

    IntelliJ crashng on opne after update now, stopped working

  4. Charlie Hayes says:

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

  5. Alexey Neupokoev says:

    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. Sebastian says:

    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 :)

    Thanks,
    Sebastian

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

    • Sebastian says:

      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. Tim van der Leeuw says:

    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).

  8. Brice says:

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

    https://youtrack.jetbrains.com/issue/IDEA-230540

  9. Edoardo Luppi says:

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

  10. Yosef says:

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

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

    Reply
    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. Pierre says:

    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

    com.intellij.diagnostic.Freeze
    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. Ilya Zinoviev says:

    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. Charles Monteiro says:

    in place editing would be greatly appreciated for Groovy !

Leave a Reply

Your email address will not be published. Required fields are marked *