C
C support is available natively in Zed.
- Tree Sitter: tree-sitter/tree-sitter-c
- Language Server: clangd/clangd
Clangd: Force detect as C
Clangd out of the box assumes mixed C++/C projects. If you have a C-only project you may wish to instruct clangd to all files as C using the -xc
flag. To do this, create a .clangd
file in the root of your project with the following:
CompileFlags:
Add: [-xc]
By default clang and gcc by will recognize *.C
and *.H
(uppercase extensions) as C++ and not C and so Zed too follows this convention. If you are working with a C-only project (perhaps one with legacy uppercase pathing like FILENAME.C
) you can override this behavior by adding this to your settings:
{
"file_types": {
"C": ["C", "H"]
}
}
Formatting
By default Zed will use the clangd
language server for formatting C code. The Clangd is the same as the clang-format
CLI tool. To configure this you can add a .clang-format
file. For example:
---
BasedOnStyle: GNU
IndentWidth: 2
---
See Clang-Format Style Options for a complete list of options.
You can trigger formatting via cmd-shift-i|ctrl-shift-i or the editor: format
action from the command palette or by adding format_on_save
to your Zed settings:
"languages": {
"C": {
"format_on_save": "on",
"tab_size": 2
}
}
See Clang-Format Style Options for a complete list of options.