Skip to content

Instantly share code, notes, and snippets.

@antoni
Forked from Uflex/clang-format_config.md
Last active August 30, 2015 08:08
Show Gist options
  • Save antoni/45fe322fb38b3a977788 to your computer and use it in GitHub Desktop.
Save antoni/45fe322fb38b3a977788 to your computer and use it in GitHub Desktop.
Configuration of clang-format for QtCreator

Clang-format in QtCreator

Edit: QtCreator 3.1 introduced a new plugin called Beautifier that supports clang-format. You still have to install the clang tools separately but you don't have to add them as external tools anymore. The plugin can be configured in the options dialog under the beautifier tab > Clang Format. Add a new style and copy the configuration below without the curly braces.

QtCreator doesn't allow using clang-format by default. Watch QTCREATORBUG-10111 for a better integration. As of today, you should use it as an external tool, either replacing your selection or the entire file. If you choose to replace the file, you will have to save it before launching the tool and QtCreator will reload the file, making it impossible to undo/redo afterwards. If you choose to replace your selection, you often have to select the whole function, otherwise you will lose the indentation; clang-format doesn't seem to keep the leading spaces. When you run clang-format on your selection, Creator marks the whole selection as changed, even if nothing moved. This is a minor inconvenience and anyway the "Auto-indent Selection" built-in with Creator does the same thing.

Installation

For Windows, download LLVM from http://llvm.org/builds/. You don't need to add it to the PATH, you can use it with the absolute path.

EDIT: It seems that there are now official builds for most OSes on the download page: http://llvm.org/releases/download.html

Configuration

In QtCreator, add an external tool (Tools > Options... > Environment > External Tools > Add > Add Tool).

  • Arguments:
    -style="{BasedOnStyle: llvm, AccessModifierOffset: -4, BreakBeforeBinaryOperators: true, ColumnLimit: 80, Standard: Cpp11, IndentWidth: 4, BreakBeforeBraces: Linux}"
  • Working dir: %{CurrentProject:Path} (seems to be optional, works without it)
  • Output: replace selection
  • Error output: show in pane
  • Don't tick the "Modifies current document" (this will ask you to save the document before running the tool)
  • Input: %{CurrentDocument:Selection}

If you want to correct the whole file, leave the input field empty, tick the "Modifies current document", set the output to "Show in Pane" and add -i %{CurrentDocument:FilePath} to the arguments.

See these links for all possible parameters and enum values (that are not listed in the -help option):

You can assign a shortcut to that command (I personally use Ctrl+Shift+I on Windows and ⌘⌥I on Mac to keep the built-in formatting tool accessible). Go to Tools > Options... > Environment > Keyboard and at the very bottom there is the Tools category.

Enjoy! :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment