CLANGD(1)

NAME
clangd - manual page for clangd 11

DESCRIPTION
OVERVIEW: clangd is a language server that provides IDE-like features to editors.

  It should be used via an editor plugin rather than invoked directly. For more information, see:

    https://clangd.llvm.org/ https://microsoft.github.io/language-server-protocol/

clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment variable.

USAGE: clangd [options]

OPTIONS:

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

clangd compilation flags options:

--compile-commands-dir=<string> - Specify a path to look for compile_commands.json. If path is invalid, clangd will look in the current directory and parent paths of each source file

--query-driver=<string> - Comma separated list of globs for white-listing gcc-compatible drivers that are safe to execute. Drivers matching any of these globs will be used to extract system includes. e.g. /usr/bin/**/clang-*,/path/to/repo/**/g++-*

clangd feature options:

--all-scopes-completion - If set to true, code completion will include index symbols that are not defined in the scopes (e.g. namespaces) visible from the code completion point. Such completions can insert scope qualifiers

--background-index - Index project code in the background and persist index on disk.

--clang-tidy - Enable clang-tidy diagnostics

--clang-tidy-checks=<string> - List of clang-tidy checks to run (this will override .clang-tidy files). Only meaningful when -clang-tidy flag is on

--completion-style=<value> - Granularity of code completion suggestions

=detailed
    - One completion item for each semantically distinct completion, with full type information

=bundled
    - Similar completion items (e.g. function overloads) are combined. Type information shown where possible

--cross-file-rename - Enable cross-file rename feature.

--fallback-style=<string> - clang-format style to apply by default when no .clang-format file is found

--header-insertion=<value> - Add #include directives when accepting code completions

=iwyu
    - Include what you use. Insert the owning header for top-level symbols, unless the header is already directly included or the symbol is forward-declared

=never
    - Never insert #include directives as part of code completion

--header-insertion-decorators - Prepend a circular dot or space before the completion label, depending on whether an include line will be inserted or not

--limit-results=<int> - Limit the number of results returned by clangd. 0 means no limit (default=100)

--recovery-ast - Preserve expressions in AST for broken code (C++ only).

--suggest-missing-includes - Attempts to fix diagnostic errors caused by missing includes using index

clangd miscellaneous options:

--enable-config                 - Read user and project configuration from YAML files.
    Project config is from a .clangd file in the project directory. User config is from clangd/config.yaml in the following directories:

Windows: %USERPROFILE%\AppData\Local
    Mac OS: ~/Library/Preferences/ Others: $XDG_CONFIG_HOME, usually ~/.config

    Configuration is documented at https://clangd.llvm.org/config.html

-j=<uint> - Number of async workers used by clangd. Background index also uses this many workers.

--pch-storage=<value> - Storing PCHs in memory increases memory usages, but may improve performance

=disk
    - store PCHs on disk

=memory
    - store PCHs in memory

clangd protocol and logging options:

--log=<value> - Verbosity of log messages written to stderr

=error
    - Error messages only

=info
    - High level execution tracing

=verbose
    - Low level details

--offset-encoding=<value> - Force the offsetEncoding used for character positions. This bypasses negotiation via client capabilities

=utf-8
    - Offsets are in UTF-8 bytes

=utf-16
    - Offsets are in UTF-16 code units

=utf-32
    - Offsets are in unicode codepoints

--path-mappings=<string> - Translates between client paths (as seen by a remote editor) and server paths (where clangd sees files on disk). Comma separated list of '<client_path>=<server_path>' pairs, the first entry matching a given path is used. e.g. /home/project/incl=/opt/include,/home/project=/workarea/project

--pretty - Pretty-print JSON output