IntelliJ IDEA
IntelliJ IDEA – the Leading Java and Kotlin IDE, by JetBrains
IntelliJ IDEA 2018.3 Early Access Program is open!
Today we’re starting our Early Access Program for IntelliJ IDEA 2018.3 and we invite you to download the first EAP build of IntelliJ IDEA 2018.3! Be the first to try out the new features we have been cooking up for you fresh out of the oven: better project and IDE navigation, revamped plugin preferences page, Run Anything, multiline TODO comments, delegate run & build actions to Maven, VCS improvements, and much more!
Search Everywhere
The upcoming IntelliJ IDEA 2018.3 introduces a better way to navigate over the project and the IDE – please welcome the new Search Everywhere dialog! It has a nicer UI, and it’s resizable and movable. Actually, it’s much more than just Search Everywhere now as it incorporates Go to class, Go to file, Go to symbol, and Find action!
You can use the TAB key to switch between the tabs in this new dialog. All the shortcuts still work, and Double Shift will take you to the Search Everywhere tab. Press Cmd-Shift-A on macOS / Ctrl-Shift-A on Windows and Linux to go to the Action tab.
You’ll notice that the search is much faster now, and if we were to take a peek under the hood, we would see it’s asynchronous.
One of the main goals that led us to completely rewrite the old Search Everywhere was the desire to tackle and confront the dozens of different problems and bugs that kept cropping up in this old dialog. The new Search Everywhere doesn’t lose focus, the size of the dialog doesn’t depend on the contents, it’s size doesn’t change unexpectedly, and there are many more fixes that have come about as a result including IDEA-170407, IDEA-117031, IDEA-130670, and IDEA-142909.
Run Anything
Speaking of universal actions, IntelliJ IDEA 2018.3 introduces a new Run Anything action (Double Ctrl) – a new centralized way to run a command in the IDE. Launch any run configuration, including of course Maven and Gradle, or even run a Gradle task using new action, or use it to run terminal commands.
From the Run Anything dialog you can select a recent command and a preconfigured run configuration. On top of this, with the new Run Anything dialog, you can also reopen recent projects: just type “Open” and select the desired project from the list.
While you are in the Run Anything dialog, you can hold down the Shift key and it will switch to the Debug Anything mode, letting you run a debug configuration.
Multiline TODO comments
The upcoming IntelliJ IDEA 2018.3 has the long-awaited support for multiline TODO comments!
Previously, only the first line of a multiline todo comment was handled as a todo comment.
In the upcoming IntelliJ IDEA 2018.3, the first and all subsequent todo comment lines can be highlighted in the editor and listed in the TODO Tool Window.
Just add an indent starting from the second line of your multiline TODO comment so the IDE will differentiate it from an ordinary comment.
By the way, the IDE also supports multiline TODO comments for any type of comment: single line comment(//) , multi-line comment (/* */), and Javadoc (/** */) .
Plugins page
We have completely reworked our Plugins page in Preferences/Settings. It’s now much easier to manage, install, uninstall, and update plugins.
You can now search not only by name, but also by tags! Even better, you can also sort the results by downloads, name, rating, featured, or updates.
In the upcoming IntelliJ IDEA 2018.3, you can view all the new and updated plugins, top downloaded plugins, and top-rated plugins – right inside the IDE.
The IDE also shows all the downloaded and bundled plugins in the different areas, in the Installed tab. You can even view all the plugins that need updating together in the Updates tab.
Structural Search
The upcoming IntelliJ IDEA 2018.3 comes with new simplified Structural Search & Replace dialogs. We’ve improved these dialogs in a number of ways. For a start, the IDE auto-completes the predefined templates in the search field. Also, the drop-down menu under the search icon will display the search history. Scope configuration is now easier and more flexible, too.
Most importantly though, you can now edit variables/filters right from the Structural Search & Replace dialogs. The complicated Edit Variables dialog has been replaced by a Filters panel right in the dialog. There, only the constraints that are applicable to the variable are now available, depending on the role the variable has in the pattern. So, for example, the Type constraint will not be available for a method name variable.
JVM Debugger
The upcoming IntelliJ IDEA 2018.3 comes with various debugger improvements. For a start, you can now attach to Java processes that were started without a debug agent. The IDE shows all the processes that are available for attaching in the “Attach with Java Debugger To” action list. Keep in mind that the processes have to be started with JDK, and not JRE, version 5-8 (9+ is not supported yet). Please check out this issue if you are experiencing any problems attaching to a Java process.
You’ll be able to see the current thread’s state, variable values, and use the memory view. There are some limitations, for instance currently, you can’t step, set breakpoints, or do evaluations.
If you want to attach the debugger to your local process, you can use the handy new Attach Debugger action, which is available in the Run Tool Window.
IntelliJ IDEA 2018.3 will also come with support for async stack traces in remote JVMs.
To use the agent remotely:
- copy /lib/rt/debugger-agent.jar to the remote machine.
- add -javaagent:debugger-agent.jar to the remote JVM options.
Now you can define your own Async annotations in the Async Annotations Configuration dialog.
Previously Async annotations were hardcoded as org.jetbrains.annotations.Async.*, as they required a dependency on the IntelliJ annotations lib. Now you can create your own annotations (using Async.java as a reference) and then add them to the configuration.
To access the Async Annotations Configuration dialog, go to Preferences/Settings | Build, Execution, Deployment | Debugger | Async Stack Traces and click the Configure annotations button.
There is a new Auto restart option for the remote debug configurations. So now while you are debugging a remote process, the IDE can restart a configuration automatically.
We have also fixed loads of different bugs in the debugger, one of the most important of which is that you can now debug JMockit, PowerMock, and Mockito tests.
Maven
With IntelliJ IDEA 2018.3, you can now delegate all your build and run actions to Maven. Enable the new option, Delegate IDE build / run actions to maven, by going to Preferences / Settings | Build, Execution, Deployment | Build Tools | Maven | Runner.
Editor
You can now configure the default indent for your projects on the Tabs and Indents tab in Preferences / Settings | Editor | Code Style | Java. (Previously, when a file’s indentation didn’t match the current settings of a project, the IDE only showed a notification.)
In the upcoming IntelliJ IDEA 2018.3, there is a new status bar indicator which will point out if the current file indentation differs from the project’s default. You can now choose actions that control the current indentation right from the status bar popup.
Note that if the current indent options match the ones that are configured for the project, there will be no status bar indicator.
Java
The first EAP build of IntelliJ IDEA 2018.3 comes with a bunch of new Java inspections and quick-fixes.
We have continued improving the inspection support for Java Stream API. IntelliJ IDEA now detects cases where there are redundant sorted calls made before the subsequent min call. As min call doesn’t depend on the sort order, the IDE provides a quick-fix to remove the unnecessary sorted call.
IntelliJ IDEA now recognizes reversed usage in max and min and provides a quick-fix to simplify the Comparator constructs without a reversed call.
The nullability analysis for stream chains now checks against element-level nullability annotations. toArray(), toList(), and toSet() collectors are supported. Method reference is also supported if the method nullability can be inferred or explicitly specified.
The IDE now suggest simplification for String.join with Stream as an argument.
The IDE detects more cases with stream API call chains which can be simplified, as for example Map.entrySet().stream().map(Entry::getKey).
With the upcoming IntelliJ IDEA 2018.3, you will be able to convert streams into loops when the downstream collector is collection-based (toSet/toList/toMap/toCollection/groupingBy) and can be processed by itself, and the finisher function is anything acceptable in other places (in particular, no multiline lambda).
Now the IDE allows you to completely remove static import with * and add qualifiers to the usages in the code instead.
Run Configurations
IntelliJ IDEA now supports macros in run configurations. You can enter one of the predefined macros in the Program arguments field. For now, the IDE only supports the “Application” and “npm” run configurations. If you want to use macros in other run configurations types – please file a ticket in our issue tracker!
You can now use a text/log file as input. In the Run/Debug Configurations dialog, simply enable the Redirect input from option and specify the path to the file that has your input data.
Version Control Systems
The upcoming IntelliJ IDEA 2018.3 comes with further enhancements for its integration with Git. We have significantly improved Show History for Revision and actually renamed it to History Up to Here. Previously, the IDE only showed file history up to the selected commit, but now it can display the full history, if you simply switch “Show All Branches” on the toolbar. This new action can be especially useful if the file was deleted later, as it is no easy task to find out about such occurrences.
As you may recall, we have significantly improved the resolution of merge conflicts in IntelliJ IDEA 2018.2; with the upcoming v2018.3 we are taking it a little bit further. Now the IDE allows you to ignore whitespace changes while merging. In the Merge Revisions for … dialog, there is a new Ignore drop-down menu with options to hide or trim whitespace changes on merge.
The Annotations context menu now includes a new Ignore Whitespaces option, along with other options such as code movement detections. The Ignore Whitespaces option is enabled by default.
IntelliJ IDEA 2018.3 will use the Native Git SSH Executable by default. The IDE will correctly handle the passphrase and other prompts from the native SSH.
In the upcoming IntelliJ IDEA 2018.3, you can easily copy a file from one Git branch to another, as we have added the new Get from Branch action to the Files tab of the Compare branches dialog.
A compare action has been added to the branch popup menu for Mercurial.
Сommitting from the IDE now respects the Git Hooks that add additional files to the commit. Previously, such files would be left uncommitted, but now the IDE includes them into the commit.
Improvements are also coming for the Kubernetes plugin, including Helm support. We’ll publish a dedicated blogpost very soon to give you more details. Stay tuned!
Well, that’s probably about it! You can find the list of all addressed issues in the Release notes. Update, don’t delay! Speaking of which, IntelliJ IDEA 2018.3 supports batch mode update for sequential updates! This means that when sequential updates are available (e.g. 2018.3 EAP1 -> 2018.3 EAP2 -> 2018.3 EAP3), the IDE can now chain them and patch itself in a single pass.
Try the cool new features of the upcoming IntelliJ IDEA v2018.3, and let us know what you think: discussion forum, issue tracker, Twitter, and the comments.
Happy Developing!