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.
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.
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.
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.
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()
towithContext(DefaultDispatcher)
.async(ctx){ }.await()
towithContext(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.
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.