JetBrains Rider 2021.1 Help

Using Clang-Format

What is Clang-Format and how does JetBrains Rider support it?

Clang-Format is a widely-used C++ code formatter. As it provides an option to define code style options in YAML-formatted files — named .clang-format or _clang-format — these files often become a part of your project where you keep all code style rules. To see the full list of Clang-Format style options and examples of configuration files, check out the Clang-Format documentation.

If your project happens to have its code styles configured in Clang-Format files, JetBrains Rider's code formatting engine will automatically use most of these styles for formatting C++ files, and some of them in JavaScript and TypeScript files.

Clang-Format in your solution

By default, Clang-Format properties are enabled; they will override preferences defined in JetBrains Rider settings as well as EditorConfig styles. If you want JetBrains Rider to ignore Clang-Format styles for code formatting and code syntax, clear the corresponding checkbox on the Editor | Code Style page of JetBrains Rider settings.

When Clang-Format support is enabled and there are .clang-format or _clang-format files that affect the current file, JetBrains Rider will help you understand which Clang-Format styles are applied and where these settings come from:

  • On JetBrains Rider formatting options pages for C++, JavaScript, and TypeScript, you will see a yellow warning if at least one preference on the page is overridden by Clang-Format styles for the current file, each overridden preference will also be highlighted with yellow. For example:

    Code formatting options overridden by Clang-Format styles

Export code style settings to Clang-Format

If you are going to share code style settings via Clang-Format, you may want to export the styles already configured in JetBrains Rider to the .clang-format file.

  1. Press Ctrl+Alt+S or choose File | Settings (Windows and Linux) or JetBrains Rider | Preferences (macOS) from the menu, then choose Editor | Code Style on the left.

  2. In the Clang-Format" section, click Export. This will open the Export to .clang-format dialog.

  3. By default, JetBrains Rider writes the settings to a new .clang-format file in the root directory of the current solution. If one or more .clang-format files exist, JetBrains Rider will use the closest file in the directory hierarchy to save the settings. If necessary, you can change the destination file using the path selector at the top of the dialog.

  4. If there is an existing .clang-format file in the specified location, there could be conflicts between values of properties that exist there and the ones that JetBrains Rider is about to save. Such properties will be shown in red and if you proceed with saving, the conflicts will be resolved in favor of the newly generated ones.

  5. Click Export. JetBrains Rider will create or update the .clang-format file in the specified location.

You can also save formatting styles to Clang-Format after contextual configuration of formatting rules.

Supported Clang-Format Options

BasedOnStyle
AlignConsecutiveAssignments
AlignConsecutiveDeclarations
AlignAfterOpenBracket
AlignOperands
AlignTrailingComments
AllowShortCaseLabelsOnASingleLine
AlwaysBreakAfterDefinitionReturnType
AlwaysBreakAfterReturnType
AlwaysBreakTemplateDeclarations
BinPackArguments
BinPackParameters
BreakBeforeBraces (except for Custom and class definition in Linux)
BreakBeforeTernaryOperators
BreakConstructorInitializersBeforeComma
ColumnLimit
ConstructorInitializerAllOnOneLineOrOnePerLine
IncludeBlocks
IncludeCategories
IncludeIsMainRegex
IndentCaseLabels
IndentWidth
IndentWrappedFunctionNames
MaxEmptyLinesToKeep
NamespaceIndentation
PointerAlignment
SortIncludes
SpaceAfterCStyleCast
SpaceAfterTemplateKeyword
SpaceBeforeParens
SpacesInAngles
SpacesInParentheses
SpacesInSquareBrackets
TabWidth
UseTab
Last modified: 08 March 2021