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

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.

CLion 2019.2 EAP starts

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.
Parameter hints

Arguments passed by non-const reference show the hint &: to indicate the fact they can be modified:
Parameter hints 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.
  • 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:

Parameter hints settings

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:
Memory View

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:

Completion in memory view

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:

  1. The Quick Documentation popup for options in .clang-format config files:
    Quick Doc in Clang Format
  2. Code completion for options and their values:
    Completion in Clang Format
  3. Options description in the code completion popup.
  4. Highlighting for option values that don’t match the allowed value set.
    Clang Format inspection

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:
Move refactoring

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:

Naming settings

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:
Entity kinds in naming settings

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

This entry was posted in Announcement, Early Access Preview and tagged , , , , , , , . Bookmark the permalink.

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

  1. Paul Belanger says:

    Does the parameter hints through functions like emplace_back also mean that we can now show proper parameter hints for the parameters of things like std::make_shared<T> and std::make_unique<T>?

    • Anastasia Kazakova says:

      Before that there were no parameter hints at all. Now they are shown, for such cases as well.

  2. Martin Pecka says:

    I noticed the usual window title bar disappeared on windows. Was that also part of this update? I don’t see anything even in the verbose release notes.

    • Anastasia Kazakova says:

      Not sure what you mean. Could you please share a screenshot?

      • Anastasia Kazakova says:

        Oh, you probably mean that the product menu is now in the title bar itself, Do you? Then yes, it’s a platform change across all our IntelliJ-based tools.

  3. Roman Popov says:

    Are there any major performance improvements in this release?

    • Anastasia Kazakova says:

      There are some ongoing changes. But mostly still under development.

      • Roman Popov says:

        I think you should try allow working on project before building symbols is complete. For me, each index rebuild takes 20 minutes. I have to switch between git branches often, at some days 4-5 times per day. So 1 hour per day IDE is frozen.
        Also it would be nice if you can provide some statistics information why building symbols is so slow. Some .cpp files in my project are large and auto-generated. Since they have no effect on other files and I never edit them, I would prefer to switch off indexing for those files. Something like “Parsing this file took 5 minutes, do you want to disable parsing for it?”

  4. Alexander says:

    But, what about naming convention from. clang-tidy?

    • Anastasia Kazakova says:

      Do you mean readability-identifier-naming check? it’s off by default, but you can turn it on in the settings.

  5. Sebastian says:

    Hello Anastasia,

    could you share some insights on how far your team is with the decoupling efforts of the IDE and CMake and if we can expect to see other build systems such as plain Makefiles, Meson, Autotools etc. in 2019?

  6. Kirill Sapozhnikov says:

    Hi. Thanks for the EAP. Parameters hint is a killer-feature! And I want to ask a few questions:
    Will TFS plugin be available again? Manually downloading the latest version says that the plugin is not compatible.
    Any updates on CPP-13081? It’s the thing I use every day.

  7. Anton says:

    Guys, this is not funny anymore. Since the last “stable” version (2019.1), CLion became totally unusable due to its constant CPU loading. Typing is horrible than ever: periodic 3-5 second lags even when I just move the caret. Moreover, after all indexing is done CLion loads one CPU core at 100% when I just open a ~ 1000 LOC header file. The load stops after a couple of minutes but as soon as I change the header in any way (pressing Enter once is enough) it starts loading my CPU again. I can’t use CLion on i9 7900X with 32 GB RAM! Please, stop adding features and start fixing performance issues.

    • Anastasia Kazakova says:

      Performance is constantly under improvement. Please tell us – have you reported the CPU snapshots? Issue in the bug tracker? I’ll check once again what’s the state.

    • Tano says:

      This comment just won the internet, I also upgraded to 32GB and I think that clion became slower and slower, now I get lag even when typing in a cmake file.Please fix performance issues before new features
      I agree that this is not funny anymore.

  8. Mike says:

    Few issues with this EAP:
    1. I have a setting to make editor background color more yellowish (to reduce blue light). The setting was lost. Now all editors are white background.
    2. Editor background image -> also lost.
    3. I use gcc from cygwin. After upgrade cmake fails on first step: “Check for working C compiler: /usr/bin/cc”

    • Anastasia Kazakova says:

      1. Do you remember which option was that? Or maybe you can share your color scheme settings with us (you should have them in the previous version settings storage)
      2. Settings/Preferences | Appearance & Behavior | Appearance – UI Options – Background image – you can set it there.
      3. What error is shown? Can you maybe create a ticket in https://youtrack.jetbrains.com/issues/CPP and we’ll dig into details there?

      • Mike says:

        1 – looks like idea was switched to default schema. I switched back to mine and it works now.

        2 – I see in \config\options\other.xml lines:

        But dropdown list is shown empty in new CLion.
        As if those options is not read anymore.

        Anyways, I choose the image in CLIon, and it was applied fine.

        So it’s just frustrating that old configs are not migrated to new configs.
        Apart from that it works fine.

        3. – I fixed it by selecting cmake.exe from previous EAP. Looks like something wrong with new one.

        • Anastasia Kazakova says:

          Could I please kindly ask you to create a bug report in https://youtrack.jetbrains.com/issues/IDEA, we’ll check the settings migration in this case. Please attach there your previous settings (so that we can reproduce on your set).

          Regarding 3. Could you please share the idea.log (Help | Show log) with us? We haven’t seen the issue, so would be nice to reproduce.

        • Dmitry Kozhevnikov says:

          > 3. I use gcc from cygwin. After upgrade cmake fails on first step: “Check for working C compiler: /usr/bin/cc”

          Does the error persist if you execute “Reset cache and reload CMake”?

          • Mike says:

            > Does the error persist if you execute “Reset cache and reload CMake”?

            I don’t know what is “reset cache”. I did the following:
            I clicked -> “invalidate caches”. Then I closed CLion.
            Then I deleted CLion’s “system” folder completely.
            Then I deleted “cmake-build-debug” folder in the project.
            Then started CLion -> and cmake.exe hung.
            Change location to prev version and it was immediately good.

  9. Sergey says:

    Do you plan to make a normal switch between the header and source files?

  10. Dado says:

    Congratulations on the Parameter name hints feature, really well thought!

  11. Lawrence Millar-Madigan says:

    In my opinion, parameter hints should not be enabled by default. Many lines of code are now over the line limit, making me scroll the editor horizontally.

    In my opinion this is too far over the line of trying to compensate a language’s lack of features (named arguments) with a solution that isn’t very elegant.

    • Anastasia Kazakova says:

      Parameter name hints is a very popular solution here, but we’ll definitely consider all types of feedback before we decide if to enable/disable by default in the release. Thanks

      • Anton says:

        Personally, I think that it’s better to show hints only on mouse hover or even in a popup.

        • Anastasia Kazakova says:

          But that kills the whole idea. You can call Parameter info popup that shows that info, but parameter hints are especially shown in the editor, so that you don’t need to call anything explicitly to understand, for example, which overloaded function is used in this place.

          • Anton says:

            Well, for me the parameter hints feature has one single drawback: text lines go far beyond the maximum column which makes code unreadable. Probably this feature fits well for people, who don’t use two editors opened side by side.
            Also, to get the information popup I have to hold the control key while hovering the function name. This is good but I meant a different thing: you can make parameter hints visible (as they are implemented right now) only when the mouse pointer is over the function name (no additional modifier keys).

          • Anastasia Kazakova says:

            Thanks for a suggestion. We’ll discuss it.
            As a reminder, you can always turn them off, or limit the scope.

          • Edoardo Luppi says:

            There could also be a “switch” to turn them off per line basis when the total line lenght exceed the set right margin.

          • Anastasia Kazakova says:

            We discussed that. Thanks.

  12. blackj0221 says:

    Is borderless UI applied to 2019.2, like IntelliJ on Windows?

Leave a Reply to Dmitry Kozhevnikov Cancel reply

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