Java

Java 11

IntelliJ IDEA 2018.2 brings support for the upcoming Java 11. The IDE now supports local-variable syntax for lambda parameters according to the JEP 323, so you can use the var keyword in lambda expressions.

Learn more

Preview data flow information in the editor

The IDE can display known data flow information right inside the editor. To see it, simply invoke the Expression type action (Ctrl+Shift+P) a second time.

Learn more

Type hints for long method chains

IntelliJ IDEA displays type hints for long method chains. This is especially useful when you want to see the type of each call as a type hint for long method chains with generics.

Configure Quick Documentation to pop-up together with autocompletion

It’s now possible to configure Quick Documentation to pop-up together with autocompletion. Simply enable the Show the documentation pop-up in… option in Preferences/Settings | Editor | General | Code Completion. Previously, the documentation pop-up could be configured to be shown only with explicitly invoked completion.

New preview panel for Extract Method

IntelliJ IDEA 2018.2 introduces a new preview panel for the Extract Method refactoring. It lets you see what the results of your refactoring will look like, before confirming the changes. This can be very useful when you refactor code fragments with duplicates.

New @Contract annotation return values

IntelliJ IDEA supports the @Contract annotation, which allows you to specify a method reaction when a particular parameter is passed. The contract information is available for various inspections and actions, which use it to produce better warnings and remove false-positives.

In version 2018.2, we’ve extended the @Contract annotation to support more return values:

  • new – every time the method is executed, it returns a non-null new object.
  • this – the method returns non-null this reference.
  • paramX – the method returns its X-th argument.

Learn more

Smarter Join Line action

We’ve upgraded the Join Lines action (Ctrl+Shift+J on Linux/Windows/macOS). Now, on any method call where the return type is the same as the qualifier type, the action will merge multiple method calls into a chained call. This also works on a declaration or assignment line with a subsequent call.

Join Lines now produces a cleaner result with a nested if, and when you are joining lines with an unnecessary 0.

Improved Stream API support

In IntelliJ IDEA 2018.2, we’ve improved support for Stream API so now it detects sorted streams that collect an unsorted collection. This indicates that either the sorting is unnecessary or that using the collector or collection is wrong.

In addition, there is a new warning about a redundant distinct() call before collect(toSet()), because when collecting to a Set, the result is always distinct anyway.

Editor

Jump outside closing bracket/quote with Tab

Now, while typing, you can use Tab to navigate outside the closing brackets or closing quotes. This works in Java, Kotlin, Groovy, SQL, PHP, JavaScript, and Python files. To enable this Tab behavior, go to Preferences/Settings | Editor | General | Smart keys and select Jump outside closing brackets/quote with Tab.

Underlining reassigned local variables and reassigned parameters

IntelliJ IDEA now underlines reassigned local variables and reassigned parameters, by default. The attributes for all the languages supporting this feature, which for now include Java and Groovy, can be changed in Preferences/Settings | Editor | Color Scheme | Language Defaults | Identifiers | Reassigned.

For and while keywords highlighted

When you place the caret at the break or continue keyword, IntelliJ IDEA highlights the for or while keyword of the corresponding loop.

User Interface

MacBook Touch Bar support

IntelliJ IDEA 2018.2 comes with support for the MacBook Touch Bar! Run, build, and debug your project, commit changes, and update the project right from the Touch Bar. IntelliJ IDEA buttons are displayed in the app-specific area in the middle of the Touch Bar interface, and they are dependent on the context or which modifier keys you press.

All available Touch Bar contexts can be customized on the Touch Bar page in Preferences | Appearance & Behavior | Menus and Toolbars.

Dark window headers

It's now possible to make the IntelliJ IDEA title bars darker on macOS. Go to Preferences | Appearance & Behavior | Appearance and select Use dark window headers.

New Icons

We’ve rolled out some brand new icons! New cleaner and simpler icons on the IDE toolbar and tool windows reduce visual clutter and ensure better readability. We believe that a clearer UI will help to maintain focus and productivity. Read the story behind the recently updated UI icons.

Updated IntelliJ theme on Linux

We’ve made the IntelliJ theme on Linux look more modern. The appearance of UI elements such as buttons, radio buttons, checkboxes, text fields, select controls, spinner, and tabs have been updated.

Version Control

Easier resolve of merge conflicts

When working with Git, now it's much easier to find files with merge conflicts. For each changelist, the IDE groups such files under a new Merge Conflicts node. Click the Resolve action link to open the Files Merged with Conflicts dialog.

Also, IntelliJ IDEA now displays Git branch names in the Files Merged with Conflicts dialog when you perform a pull, merge, or rebase. This updated dialog allows you to group files by directory, which should come in handy if there are multiple files merged with conflicts.

Enhancements in VCS Log tab

You can now delete a Git tag from a commit right from the context menu of the Log tab.

Also, the Diff Preview Panel is now available in the VCS Log.

Additionally, you can open as many Log tabs as you like.

Favorite branches in Branch filter

We’ve added Favorite branches to the Branch filter in the Log tab, so you can now quickly filter commits by your favorite branches.

Browse repository at revision

If you use Git for version control, you can now explore the state of the repository based on any given revision. Use the new Browse Repository at Revision action, which is available from the context menu in the VCS Log or from the file history, to open the required repository state in the Project Tool Window.

Multiple GitHub accounts

With IntelliJ IDEA 2018.2, you can configure as many GitHub accounts as you need (in Preferences | Version Control | GitHub), and set the default GitHub account for each of your projects.

Skip the Push dialog

While using the Commit and Push action in IntelliJ IDEA 2018.2, you can skip the Push dialog completely, or only show this dialog when pushing to protected branches. Customize this behavior in Preferences | Version Control | Git.

JVM Debugger

New breakpoint intentions

For debugging Java projects, IntelliJ IDEA 2018.2 includes several new handy breakpoint intention actions. No need to set up the properties of a particular breakpoint by hand anymore – simply press Alt+Enter and the IDE will offer you the new breakpoint intentions, along with all the other available intentions.

Ability to filter a breakpoint hit by the caller method.

In IntelliJ IDEA 2018.2, you can stop at a breakpoint if a certain condition applies to the call stack.

The new Caller filter allows you to only stop at a breakpoint if it’s called from the specified method. Or, vice versa, it will not stop at a breakpoint if it’s called from that method.

Gradle

Auto-discovery of the included buildSrc Gradle project

IntelliJ IDEA 2018.2 links Gradle’s buildSrc sources and their usages in a build, so you can now navigate from the build scripts to the buildSrc source.

Debug the Gradle DSL blocks

You can now debug a Gradle script in IntelliJ IDEA. Previously, you could debug a build.gradle file only as a Groovy script. With IntelliJ IDEA 2018.2, you can now set a breakpoint not only at the top level of the Gradle build script, but also in the Gradle DSL blocks.

Configuration

Project Configuration

In IntelliJ IDEA 2018.2, you can exclude some of the transitive dependencies when adding a new repository library. Click the new Configure action link in the library properties editor. In the new Configure Transitive Dependencies dialog that opens, select only the necessary transitive dependencies you want to add to your current project.

IDE configuration

With IntelliJ IDEA 2018.2, you can assign shortcuts to actions right from the Find Action dialog. Simply select the needed action, press Alt+Enter, and enter a shortcut.

Differences Viewer

Compare any text sources

In IntelliJ IDEA 2018.2, you can open an empty Differences Viewer and paste any text you want to compare in its left and right panels. The new Open Blank Diff Viewer action can be found in the Find Action dialog.

Kotlin

The bundled Kotlin plugin has been updated to Kotlin 1.2.51

Runnable Kotlin scratch files

Now you can run Kotlin Script scratch files and see the results right in the editor. Also, Kotlin Script scratch files can use the declarations from the code in the project.

Also, you can now create new Kotlin Script scratch files right from the Project view.

Convert end-of-line comments into block ones and vice versa.

Now there’s a handy intention via Alt+Enter to convert end-of-line comments into block comments, and vice versa.

Unused Deferred result

We’ve improved our support for kotlinx.coroutines: the IDE now reports unused Deferred results.

Merge call chain to kotlinx.coroutines.experimental.withContext

The IDE detects redundant async calls that are immediately followed by an await call, and suggests two new intentions to merge the call chain into kotlinx.coroutines.experimental.withContext:

  • async {}.await() to withContext(DefaultDispatcher).
  • async(ctx){ }.await() to withContext(ctx) { }.

Scala

Improved display of implicit conversions and arguments

The Scala plugin now can show implicit conversions and arguments as inline hints. These provide navigation and extended information in a tooltip. They are shown in the editor even when an implicit argument is used explicitly.

Inline hints can work in the editor mode. To enable this, press Ctrl + Alt + Shift + “+”. Also:

  • If you press this shortcut again, it will expand all foldings
  • Press Ctrl + Alt + Shift + “-” to collapse all foldings or disable the mode

Missing and ambiguous implicit arguments hints

We have also reworked the way errors are highlighted for ambiguous and missing implicit parameters. In addition, the Parameter Info tooltip shows both explicit and implicit parameters.

The implicit arguments popup (Cmd + Shift + P on macOS / Ctrl + Shift + P on Windows and Linux) shows the type, structure, and location of arguments.

Improved autocompletion for type annotation and pattern matching

The Scala plugin now generates an exhaustive match for sealed types with inheritors, Java Enums, and Scala Enumerations.

In pattern matching completion the Scala plugin suggests a list of typed patterns for applicable classes and interfaces, while autocompletion with TAB updates the name and type.

Scalafmt as an alternative to the built-in formatter

The Scalafmt formatter, which used to be a standalone plugin, is now part of the Scala plugin. It can be configured at Preferences/Settings | Editor | Code Style | Scala.

Semantic Highlighting

Now, you can enable semantic highlighting for your project in Preferences/ Settings | Editor | Color Scheme | Scala, and assign distinct colors to a function’s parameter, local variable, variable in a pattern-matching case clause, or variable in a sequence comprehension. Then you can scan through a function to track the variable, with no distracting action, isolate one of the variables, or switch focus to another variable.

JavaScript & TypeScript

Extract and convert React component

Use the new Extract Component refactoring to create a new React component, by extracting the JSX code from the render method of an existing one. You can also convert React class components into functional components, and vice versa, by using new intentions.

Find unused code

You can now find unused JavaScript code (or TypeScript code) on your client-side, by using the new Code Coverage feature. Start a JavaScript Debug configuration with coverage in the IDE and interact with your app in Chrome. Then stop the configuration, and IntelliJ IDEA will show you the coverage report in the Coverage tool window. Info about the coverage of files and folders will display on the Project view.

New integrations with Angular CLI

In IntelliJ IDEA 2018.2, you can add new features to your Angular app thanks to the integration with ng add. Use the New… | Angular Dependency… action to install libraries that support installation with ng add without using the terminal.

To generate the code with Angular schematics, use the New… | Angular Schematic… action.

New JavaScript and TypeScript intentions

Lots of new JavaScript and TypeScript intentions are now available when you press Alt+Enter: Implement interface, Create derived class, Implement members of an interface or abstract class, Generate cases for 'switch', and Iterate with 'for..of'.

Spring Integration

IntelliJ IDEA 2018.2 supports Spring Integration 5.0. There is also a new Spring Integration Diagram that visualizes the components in the system. The new diagram shows the gateways, channels, bridges, etc. that have been configured for the application using XML or Java annotations.

Spring Boot

Spring Runtime Beans diagram

In IntelliJ IDEA 2018.2, you can select the new Diagram Mode option and visualize the dependencies between runtime beans of a Spring Boot application.

Start your application and click the new Diagram Mode icon in the right gutter of the Beans tab in the Run Dashboard. The IDE will display the Spring Runtime Beans diagram for the whole application.

Access HTTP requests mappings from the Run Dashboard

Manage your HTTP requests mappings from the Run Dashboard in IntelliJ IDEA 2018.2. After you run your application, select the request you need from the Mappings tab, and then either run your HTTP request straight away or open it in the editor-based REST client.

For GET methods, you have an additional option to open a HTTP request in the browser.

YAML

YAML code formatter

Now you can reformat YAML code with the Reformat Code action which is available from Code | Reformat Code or via a shortcut: Cmd + Alt + L on macOS / Ctrl + Alt + L on Windows and Linux. Moreover, you can customize YAML code style settings in Preferences / Settings | Editor | Code Style | YAML.

Smarter YAML with JSON Schemas

Code autocompletion now works for YAML data structures that have a JSON Schema file. IntelliJ IDEA automatically traces schemas from schemastore.org, and moreover, if you need to you can manually add and configure JSON schema files Preferences/Settings | Languages & Frameworks | Schemas and DTDs | JSON Schema Mappings.

Database Tools

SQL log

Now you can use the console output to view every query that IntelliJ IDEA runs. All queries from the IDE are now logged in a text file; you can open this file via Help | Show SQL log.

New SQL formatter

Now custom Code Style schemes can be used specifically for each data source. You can assign your Code Style schemes in the Options tab of the data source properties.

Running stored procedures

Now you can execute stored Oracle and PostgreSQL procedures in IntelliJ IDEA. You can either run a procedure by selecting the Execute action from the context menu of the procedure or by clicking the Run button in the toolbar when opening the source code.

Source code migrations

Now, it’s much easier to update the source code of any objects, you just double-click the objects and make changes, and then click Commit, and the migration dialog will preview the generated SQL code to update the source code.

Docker

Navigate from compose nodes and containers

The Docker plugin now lets you navigate from compose nodes and containers to the corresponding compose and dockerfile files.

Wrapping words in Docker logs

This update adds a new Use Soft Wraps action for wrapping words in Docker logs. The new action is available via the gutter icon in the Log tab of the Docker Tool Window.

New Context folder field

Now you can specify the base directory for executing a Docker build command for a dockerfile. To do this, use the new Context folder field in the Docker run configuration. By default, the Context folder field is set to the parent folder of the specified dockerfile.

File Watcher plugin

Global file watchers

You can now store the configured File Watchers in the IDE settings and use them in different projects, as it’s now possible to set a Global File Watcher and not just one per-project, as it was before. This will help to reduce setup redundancy for developers working with many projects.