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

Anastasia Kazakova

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

Comments below can no longer be edited.

52 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:

    May 23, 2019

    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:

      May 23, 2019

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

  2. Martin Pecka says:

    May 23, 2019

    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:

      May 24, 2019

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

      • Anastasia Kazakova says:

        May 24, 2019

        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.

        • Remigius Stalder says:

          August 14, 2019

          Is there a way to reset this to the old appearance? On one hand, the menu portion of the title bar cannot be used to move the window any more, abnd on the other hand the project title is now hardly visible, which is awkward when multiple projects are open simultaneously.

  3. Roman Popov says:

    May 24, 2019

    Are there any major performance improvements in this release?

    • Anastasia Kazakova says:

      May 24, 2019

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

      • Roman Popov says:

        May 25, 2019

        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?”

        • Edoardo Luppi says:

          May 25, 2019

          Consider having different work-trees instead of switching branches! They work great.

          • Anastasia Kazakova says:

            May 26, 2019

            work-trees is indeed a great thing and really helps. +1 to the idea.

          • Roman Popov says:

            May 27, 2019

            Looks like Clion does not have GUI support for worktrees yet.

          • Roman says:

            May 28, 2019

            Well, I’ve expected that there should be a GUI to switch between worktrees. Also build and run configurations should migrate automatically.
            Probably I’m doing something wrong, but I don’t see how I do this.

        • Roman Popov says:

          May 25, 2019

          Submitted https://youtrack.jetbrains.com/issue/CPP-16352

  4. Alexander says:

    May 24, 2019

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

    • Anastasia Kazakova says:

      May 24, 2019

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

  5. Sebastian says:

    May 24, 2019

    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?

    • Anastasia Kazakova says:

      May 24, 2019

      For now, you can use compilation database for all of such project models. This is a simple tutorial on dealing with Makefiles: https://www.jetbrains.com/help/clion/managing-makefile-projects.html

      There is some smoother support for Makefiles (just automation for current compilation database flow) and a general project model API in plans for this year also.

  6. Kirill Sapozhnikov says:

    May 24, 2019

    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.

    • Anastasia Kazakova says:

      May 24, 2019

      Thanks for your feedback.
      I see the compatible version of TFS plugin here: https://plugins.jetbrains.com/plugin/4578-tfs/versions.

      Regarding the issue, unfortunately, it’s a bit postponed due to many other things with higher priority, but we’ll check again if we can fit it. Thanks for pinging

      • Kirill Sapozhnikov says:

        May 24, 2019

        Regarding TFS:
        “Plugin ‘TFS’ is incompatible with this installation”
        End of quote.

        • Anastasia Kazakova says:

          May 24, 2019

          Ah, seems for 192 branch it’s just a few particular builds, not matching the one for CLion. I’ll check with the authors

          • Anastasia Kazakova says:

            May 24, 2019

            The plugin compatible with the EAP build will be uploaded later today. Sorry for the inconvenience

        • Anastasia Kazakova says:

          May 24, 2019

          Compatible version is now available.

  7. Anton says:

    May 24, 2019

    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:

      May 24, 2019

      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.

      • Anton says:

        May 24, 2019

        I thought you were aware of it since you even released the 2019.3 update because of performance issues.
        Just created the issue. The cpu snapshot is made on i5. Thanks.
        https://youtrack.jetbrains.com/issue/CPP-16341

    • Tano says:

      May 24, 2019

      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:

    May 24, 2019

    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:

      May 24, 2019

      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:

        May 24, 2019

        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:

          May 24, 2019

          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:

          May 27, 2019

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

            May 30, 2019

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

    May 24, 2019

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

    • Anastasia Kazakova says:

      May 24, 2019

      yes, it’s in development now. Hope to finish before 2019.2

  10. Dado says:

    May 25, 2019

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

    • Anastasia Kazakova says:

      May 26, 2019

      Thank you!

  11. Lawrence Millar-Madigan says:

    May 29, 2019

    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:

      May 29, 2019

      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:

        May 29, 2019

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

        • Anastasia Kazakova says:

          May 29, 2019

          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:

            May 29, 2019

            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:

              May 29, 2019

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

          • Edoardo Luppi says:

            May 29, 2019

            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:

              May 29, 2019

              We discussed that. Thanks.

  12. blackj0221 says:

    June 7, 2019

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

    • Anastasia Kazakova says:

      June 7, 2019

      yes, all IntelliJ-platform changes are available in CLion 2019.2 EAP.

  13. Elias says:

    November 21, 2019

    Hello! Is it possible to apply coding style (naming convention) to existing code whether in CLion or C++ Resharper (at least, in semi-automatic mode)? For example, batch renaming class fields: someField -> m_some_field?

Subscribe

Subscribe for updates