CLANG-FORMAT(1)

πŸ“¦
version 15.0.7 Β· 3 versions
, in ubuntu jammy

πŸŽ€ clang-format β€” the manual page, bestie edition πŸŽ€

okay so. you opened clang-format(1), the User Commands one. this is that page. sit down, get a snack, we're doing this πŸ’–


✨ NAME ✨

clang-format β€” manual page for clang-format 15

(yeah it's a whole tool, section 1 of the manual, and she's iconic, no cap πŸ‘‘)


🌸 DESCRIPTION 🌸

OVERVIEW: A tool to format C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# code.

periodt. that's the whole job. she formats your code and she does it well.

so here's the vibe check on how she actually behaves, because the arguments you pass literally change everything:

  • no arguments at all? she reads your code from standard input and writes the result to standard output. little pipe girlie 🫢
  • you hand her some <file>s? she reformats those files.
  • you hand her <file>s and -i? the files get edited in-place. (yes, actually rewritten. hold onto your git stash 😭)
  • anything else? result goes to standard output.

USAGE:

clang-format [options] [<file> ...]

πŸ’… OPTIONS πŸ’…

πŸ¦‹ Clang-format options

  • --Werror β€” if set, changes formatting warnings into errors. she's not playing around anymore.
  • --Wno-error=<value> β€” if set, don't error out on the specified warning type.
    • =unknown β€” if set, unknown format options are only warned about.
this one can be used to enable formatting even if the configuration contains unknown (newer) options. Use with caution, as this might lead to dramatically differing format depending on an option being supported or not. ⚠️ like, dramatically. she said what she said.
  • --assume-filename=<string> β€” set filename used to determine the language and to find .clang-format file. Only used when reading from stdin. If this is not passed, the .clang-format file is searched relative to the current working directory when reading stdin. Unrecognized filenames are treated as C++.

supported, in all her glory:

  • CSharp: .cs
  • Java: .java
  • JavaScript: .mjs .js .ts
  • Json: .json
  • Objective-C: .m .mm
  • Proto: .proto .protodevel
  • TableGen: .td
  • TextProto: .textpb .pb.txt .textproto .asciipb
  • Verilog: .sv .svh .v .vh
  • --cursor=<uint> β€” the position of the cursor when invoking clang-format from an editor integration. (hi to everyone wiring this into their editor rn 😌)
  • --dry-run β€” if set, do not actually make the formatting changes. look, don't touch.
  • --dump-config β€” dump configuration options to stdout and exit. Can be used with -style option.
  • --fallback-style=<string> β€” the name of the predefined style used as a fallback in case clang-format is invoked with -style=file, but can not find the .clang-format file to use. Defaults to 'LLVM'. Use -fallback-style=none to skip formatting.
  • --ferror-limit=<uint> β€” set the maximum number of clang-format errors to emit before stopping (0 = no limit). Used only with --dry-run or -n.
  • --files=<string> β€” provide a list of files to run clang-format on.
  • -i β€” inplace edit <file>s, if specified.
  • --length=<uint> β€” format a range of this length (in bytes). Multiple ranges can be formatted by specifying several -offset and -length pairs. When only a single -offset is specified without -length, clang-format will format up to the end of the file. Can only be used with one input file.
  • --lines=<string> β€” <start line>:<end line> β€” format a range of lines (both 1-based). Multiple ranges can be formatted by specifying several -lines arguments. Can't be used with -offset and -length. Can only be used with one input file.
  • -n β€” alias for --dry-run.
  • --offset=<uint> β€” format a range starting at this byte offset. Multiple ranges can be formatted by specifying several -offset and -length pairs. Can only be used with one input file.
  • --output-replacements-xml β€” output replacements as XML.
  • --qualifier-alignment=<string> β€” if set, overrides the qualifier alignment style determined by the QualifierAlignment style flag.
  • --sort-includes β€” if set, overrides the include sorting behavior determined by the SortIncludes style flag.
  • --style=<string> β€” set coding style. <string> can be:
    1. A preset: LLVM, GNU, Google, Chromium, Microsoft, Mozilla, WebKit.
    2. 'file' to load style configuration from a .clang-format file in one of the parent directories of the source file (for stdin, see --assume-filename). If no .clang-format file is found, falls back to --fallback-style. --style=file is the default.
    3. 'file:<format_file_path>' to explicitly specify the configuration file.
    4. "{key: value, ...}" to set specific parameters, e.g.:
--style="{BasedOnStyle: llvm, IndentWidth: 8}"
  • --verbose β€” if set, shows the list of processed files.

🌈 Generic Options

  • --help β€” display available options (--help-hidden for more).
  • --help-list β€” display list of available options (--help-list-hidden for more).
  • --version β€” display the version of this program.

fr fr, that's every single flag. none skipped, none merged, none invented. she's thorough and you love that about her πŸ’œ

okay bestie that's the page 🫢 this was clang-format 15, dated July 2023, straight out of the manual. go format something gorgeous, you absolute main character πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from