ReSharper 2016.2 Help

Context Actions

Alt+Enter
ReSharper_AltEnter

Context actions are code transformations helpers available right in the editor. In contrast to quick-fixes, context actions do not aim to resolve a problem or improve your code, instead, they allow you to quickly introduce minor changes like changing access modifiers, generating a code that checks for null, convert 'foreach' to 'for', etc.

ReSharper provides hundreds of context actions in all supported languages. You can find all of them in the ReSharper options. For example, here is the full list of context actions in C#: ReSharper | Options | Code Editing | C# | Context Actions.

In this topic:

Applying context actions

As soon as a context action becomes available for the current caret position, ReSharper displays the corresponding action indicator Coding_Assistance__Context_Actions__icon_editing to the left of the caret. Sometimes, however, ReSharper provides several contextually available features for the current caret position. In this case, the action indicator corresponding to the action with the highest priority is shown, and all other actions only appear when you expand the action list by clicking on the action indicator or pressing Alt+Enter Context actions have the lowest priority, therefore, they often appear in the bottom of the action list:

Action list

In most cases, a context action is applied immediately. However, some actions require user interaction to chose how exactly they transform your code. In these cases, a Hot Spot Session is deployed in the editor, where you can select one of the suggested values or provide your own values in the active input positions.

For example, here is what happens when you apply the Iterate collection via 'foreach' context action:

Coding_Assistance__Context_Actions__foreach_01

After creating the foreach statement, a hot spot session helps you complete editable parameters of the generated statement:

Coding_Assistance__Context_Actions__foreach_02

To complete the hot spot session:

  • If ReSharper suggests some values for the current parameter, use Up and Down arrow keys to navigate through the list of suggested values, or just type in a desired value.
  • Press Tab or Enter to accept the value and move to the input position of the next parameter. If this is the last parameter, the hot spot session completes and the caret moves to the end position defined for the session.
  • Press Shift+Tab to move the input focus to the input position of the previous parameter.
  • Press Esc to exit the hot spot session. In this case, all session parameters will be initialized with default values.

Configuring Context Actions

By default, most of the context actions are enabled, but you can easily disable those that you consider unhelpful.

To enable or disable specific context actions

  1. In the main menu, choose ReSharper | Options.
  2. Use the search box in the Options dialog to find specific context action.
    Alternatively, open the Code Editing | Context Actions or Code Editing | [language] | Context Actions pages and look for the context actions that you want to disable.
  3. Clear the check box next to a context action to disable it.
  4. Click Save to apply the modifications and let ReSharper choose where to save them, or save the modifications to a specific settings layer using the Save To drop-down list. For more information, see Managing and Sharing ReSharper Settings.

Applying context actions in wider scope

Some context actions can automatically find and change similar code items in a larger scope - in the current file, in the current project or in the whole solution. These context actions work the same as Fix in Scope. For example, you can move all types from the current file to new matching files:

Applying context action in a wider scope

The full list of context actions that can be applied in wider scopes includes:

TypeScript

  • Move to '.ts'

C#

  • Move to '.cs'
  • Remove region/endregion directives Remove region/endregion directives
  • Use 'var'
  • Specify type explicitly

This feature is supported in the following languages/technologies:

C# VB.NET C++ HTML ASPX Razor JavaScript TypeScript CSS XML XAML RESX Build Scripts Protobuf JSON
Feature available Feature available Feature available Feature available Feature available Feature available Feature available Feature available Feature available Feature available Feature available Feature available Feature available Feature not available Feature available

The instructions and examples given here address the use of the feature in C#. For details specific to other languages, see corresponding topics in the ReSharper by Language section.

See Also

Last modified: 15 December 2016