ReSharper Ultimate 2016.2 EAP: Builds 3 and 4

In recent weeks, we’ve published builds 3 and 4 of the ReSharper 2016.2 EAP, and we have a lot to share with you, including a couple of new features, as well as the usual round of issues being fixed.

So, what’s new?

ReSharper

First up is continued improvement to our support for .NET Core RC2 projects, with a number of issues fixed.

Secondly is a new feature we’re formally calling Structural Navigation, but is also known as “tab navigation”. The idea of this feature is to allow you to use the Tab and Shift+Tab keys to quickly move the text selection to the next or previous code element without having to use the cursor keys, allowing you to quickly navigate to the next important piece of code you need to edit.

For example, when editing a method call, repeatedly hitting Tab will select each argument in turn.

Structural Navigation navigating method arguments

Or when editing a  for statement, Tab will select the initialiser statement, then the terminating condition and then the iterator statement. Shift+Tab will do the same, but in reverse.

Structural Navigation navigating for loop elements

Of course, Tab will continue to handle template expansion, and will also indent (and Shift+Tab will outdent) when the text caret is placed at the start of a line. But when the text caret is placed with a code element, Tab and Shift+Tab will start navigating and selecting the structure of your code. You can change this behaviour in the options.

We really welcome your feedback on this feature – we’re finding it useful for quickly copying and altering code, or working with elements in string interpolation. This currently works with C#, HTML, XML and XAML as well as Razor files, and we’ll be adding support for other languages as the EAP continues.

SSR patterns can now be suppressed with a standard comment. A Structural Search and Replace pattern can be used to create your own ReSharper inspections, declaratively (see the web help for more details).

These highlights are treated just like ReSharper’s own inspections, with one big exception – until now, it’s not been possible to suppress an inspection with the standard // ReSharper disable once ... style comment.

EAP3 includes a new field in the SSR dialog, called “Suppression key” where you can specify the text that will be used and recognised in the comment.

Suppress SSR pattern with comment

C# support gets a number of new features:

  • Check all parameters of a method for  null (or empty strings) from a single Alt+Enter menu.
    Context action to add guard clauses for all arguments at once
  • You can now uncomment or even delete a comment straight from Alt+Enter.
    Uncomment or delete a comment from the Alt + Enter menu
  • We’ve added new quick-fixes for string literals containing invalid escape characters, to either replace with a verbatim string, or escape the characters.
    Quick-fixes for invalid characters in string literals
  • And interpolated strings get support for localisation, with a highlight to suggest converting the interpolated string to a resource, as well as both a quick-fix and a refactoring to automate the process.

Visual Basic gets some love:

  • String interpolation suggestions, quick-fixes and context actions for VB.NET to convert  String.Format method calls to string interpolation, as well as context actions to convert a string literal to an interpolated string, or insert an interpolated argument.
    Convert VB string concatenation to string interpolation
    Note that this requires  Option Strict to be enabled to ensure correctness of the converted expression.

And the JavaScript, TypeScript and JSON support gets updated:

  • TypeScript support gets a couple of fixes in this build, with the most notable being how we resolve definition files referenced by JSPM (RSRP-458759), by parsing details directly from calls to  System.config().
  • JavaScript rename refactorings will now update JSDoc items.
  • JSON value helpers allow you to tell ReSharper to provide code completion or validation for your own JSON files, either complementing an existing schema, or if the file doesn’t have a schema.
    You can add a helper in the JSON Value Helpers options page, matching based on a filename mask and/or schema match, and providing a path to the JSON property (such as /compilerOptions/rootDir), and the type of helper to apply – regular expression, file path or even license.
    Value helper options
    And then, in the JSON file itself, the value will now get code completion:
    Value helper showing code completion for a file path
    These value helpers are saved by default to the global settings, but using the Save To button in the options dialog, can be saved to a  .sln.dotSettings file that can be checked in and shared with the whole team.
  • Custom JSON schema catalogs can be added in the JSON options. These can be either a file, or a URL, which will be downloaded in the background, and periodically updated. More details can be found in the “Public API” section on schemastore.org.
  • Another very useful fix in this version is the return of autocomplete of package version in bower.json files, for all versions of Visual Studio.Code completion for bower packages and versions

ReSharper C++

ReSharper C++ also gets a set of new features:

  • Support for C++14 language features: variable templates and  decltype(auto).
  • Warning about usages of classes and functions marked with the [[deprecated]] / __declspec(deprecated) attribute:
    ReSharper showing highlight for deprecated C++ code
  • Support for the [[noreturn]]/ __declspec(noreturn) attribute in control flow inspections.
  • A code inspection and a quick-fix to replace zero constant with false in boolean context:
    C++ code converting constant expression to boolean
  • New code style options that control the format of generated include directives.
  • Inline Variable refactoring:
    C++ inline variable
  • A new formatter option to allow single line function and lambdas.
  • The mock function generator now supports the Trompeloeil framework.
  • Support for completion, find usages and rename of symbols in doxygen comments.

As ever, please download a fresh build from the EAP page, and if you encounter any issues, please raise an issue in ReSharper or ReSharper C++ issue tracker.

This entry was posted in How-To's and tagged , , , , . Bookmark the permalink.

21 Responses to ReSharper Ultimate 2016.2 EAP: Builds 3 and 4

  1. Pingback: ReSharper Ultimate 2016.2 – das ist neu - entwickler.de

  2. Vladimir Kozlov (aienabled) says:

    Great tab is really nice feature. However, the auto-complete for events is broken (“Great Tab” takes action instead). I’ve reported the issue https://youtrack.jetbrains.com/issue/RSRP-459427

  3. Urs Meili says:

    Please don’t overuse these GIF animations in your blog articles. It makes your site very nervous to look at and distracts from the text. At least provide a “stop” button to start/stop the animations individually.

    • Matt Ellis says:

      We had the same discussion internally. Animated gifs are a fine way to demonstrate a problem, but yes, too many can make it all too noisy. We now have a means for “click to play”, and will be using that in the future, when we have more than one or two gifs. Thanks for the feedback!

    • Funny that when I was reading this post I though what a great idea to use all these GIF animations to clearly explain how new features work.

  4. John Phillips says:

    Is there a target release date for .2 yet? Thank you!

  5. Absolutely love the Structural Navigation – I can see it quickly becoming one of my favourite ReSharper features.

    Does this EAP include the ability to run xunit tests in .NET Core within ReSharper’s unit test runner?

  6. Stuart says:

    Resharper for Typescript is still really buggy, please fix

    • Jura Gorohovsky says:

      Stuart, work on improving TypeScript support is ongoing. If you’re bothered by specific issues as opposed to an overall impression, please search and upvote them in the ReSharper issue tracker, or if they’re not yet logged, please do log them. Thanks

  7. James Majcen says:

    The structural navigation doesn’t work for me. Is this a C# only thing? When cursor is in the method, TAB just tabs the text out like it always did. Am I missing something?

    • Jura Gorohovsky says:

      James, structural navigation should be available at least in C#, HTML, XML, XAML, Razor markup. It’s not available in JavaScript and TypeScript AFAIK.

      You might want to go to ReSharper > Options > Environment > Editor > Editor Behavior and check your structural navigation settings.

  8. David West says:

    The Structural Navigation idea is nice, but I’m running into an issue when editing a string value – it won’t let me insert tabs in the string.

    • Jura Gorohovsky says:

      David, we’re looking to add an option to disable structural navigation in strings and comments in the next bug fix update (2016.2.1)

  9. Denis says:

    Suddenly, after an update, could not change indentation (with tab, shift + tab) in a simple assignment statement before “=” sign. Turned out it was because of Structural Navigation.

    Example,
    _destination {here}= destination;

    • Matt Ellis says:

      Yes, tab inside of an expression or statement will start structural navigation, and select the code. Indent/outdent can still be performed at the start of a line, or the behaviour can be changed in the ReSharper Options.

Leave a Reply

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