CLion Starts 2019.2 EAP: Parameter Hints, Go to Address in Memory View, Code Assistance for ClangFormat Config Files, and More

Posted on by

Hi,

We’re launching the Early Access Program for CLion 2019.2! As usual, the EAP builds are free to use and no license is required. Get early access to the upcoming changes and enhancements and give us your feedback! We want to test it in all kinds of non-standard or unusual environments you may have set up, and collect and fix as many issues and regressions as possible. So, please try these builds and let us know what you think!

Note you can install any EAP build in parallel with a stable CLion release such as 2019.1.

As usual, you can download build 192.4205.36 from our site, use the Toolbox App, or a snap package (if you are using Ubuntu).

Download CLion 2019.2 EAP

This EAP build polishes lots of features first introduced in the recent v2019.1, but also brings some new enhancements. The main highlights include:

Parameter name hints

Parameter hints are now displayed in the editor in line with your code, to increase its readability. They can help you understand the function call without exploring the function signature (which you still can do with the parameter info tooltip or by navigating to a function declaration). They show the names of function parameters for passed arguments.



Arguments passed by non-const reference show the hint &: to indicate the fact they can be modified:



Note: Parameter hints require Clagd-based engine running (on by default).

Hints are displayed in the following cases:

For function calls, lambdas, constructors, initializer lists, and macro expressions.

For argument literals and expressions with more than one operand.

For a constructor invoked through emplace_back -like functions.

-like functions. Hints for initializers are not shown when the argument is used as a designated initializer.

To show/hide parameter hints in particular cases or globally, use Settings/Preferences | Editor | General | Appearance. Use Configure dialog to adjust the parameter hints settings. Or just right-click on any parameter hint in the editor:

This is a work in progress, and we are aware of several issues (for example, see subtasks of CPP-12452).

Go to address in Memory view

In CLion 2019.1, we’ve introduced Memory View. When you debug your application, it’s possible to review the memory behind the pointer by simply calling Show in Memory View (Ctrl+Enter on Windows/Linux, ⌘Enter on macOS) on a pointer in the Variables view in the debug toolwindow.

We’ve updated Memory View and added ‘Go to address’ functionality:



You can enter a hex number representing an address, a pointer variable, or call the address ( & ) of any variable you are interested in. Code completion will help you with the known symbols:

We also plan to have Go to address in the Disassembly View, to navigate to the function’s assembly code for example (currently it’s implemented only for global symbols CPP-16323). Stay tuned!

Code assistance for .clang-format files

There’s one more enhancement for ClangFormat: if you have your customized .clang-format config files in the project, you can now benefit from code assistance when you update them. This includes:

The Quick Documentation popup for options in .clang-format config files:

Code completion for options and their values:

Options description in the code completion popup. Highlighting for option values that don’t match the allowed value set.



Wondering how this works? CLion simply validates the .clang-format config YAML file against the JSON Schema that we build specially for ClangFormat.

Move refactoring: an ongoing update

We never stop working to improve CLion’s refactorings. In 2019.1, we focused on Rename and Extract refactorings and now it’s time to, err, move forward with the Move refactoring!

While the work is still in the very beginning (CPP-1166), we’d just like to briefly highlight the main improvement. The update Move refactoring dialog consists of the following parts:

As before, you can move a member to a file (existing or new).

Now you can also move a member to a namespace (existing or new).

A preview for the change is available right in the dialog.

The conflicts, like other members dependent on the one you move, are shown in the dialog.

As a nice addition, code completion helps you with select files and namespaces in the dialog:



Naming convention: new settings

CLion 2019.1 respects the naming scheme you provide. You can inherit one of the existing schemes, or create and customize your own.

The settings to describe the naming convention have been reworked to become more flexible and provide more opportunities:

First, let me assure you that all your current naming settings will be migrated smoothly from 2019.1 to 2019.2. (If you notice any issue of that kind in the EAP build, please report immediately so that we can fix it before the release.)

The rule can now address several entity kinds at a time – just add as many as you need by clicking to the entity kind field of the selected rule, or select none to specify a rule for any entity kind:



If there are several rules applicable to one entity kind in the given code location, the last one in the list will be used in practice.

Settings like Visibility (Public, Private, or Protected) and Specifier (Const or Static) are shown only for the entity kinds for which these settings can be applied. For example, for member function you can configure both, while for namespaces none of these work.

Now try the settings and please let us know what you think about the updated UI.

Platform changes

JetBrains Runtime

All our IntelliJ-based IDEs are now available with the bundled customized JBR11 (the fork of OpenJDK 11 with fixes from the JetBrains team). This transition addresses a whole bunch of issues and hopefully will make your experience with our IDEs much more pleasant.

However, builds with JBR8 are still provided on our site for your convenience. Also, as before, you can switch the boot JDK in the Switch Boot JDK dialog (use the Maintenance dialog (Shift+Ctrl+Alt+/ on Linux/Windows, ⌥⇧⌘/ on macOS) to find it).

Statistics Sending Change

In Early Access Program (only!), we are enabling sending usage statistics by default. This means that we’ll be receiving anonymous data about features and plugins used, configuration, etc. This will not include personal data or any sensitive information, such as source code or file names. The data sent complies with the JetBrains Privacy Policy. You may disable this at any time under Settings/Preferences | Appearance & Behavior | System Settings | Data Sharing.

Note: This change affects EAP builds only. In a stable release the data sharing will remain OFF by default.

The full release notes are here.

Download CLion 2019.2 EAP

Your CLion Team

JetBrains

The Drive to Develop