C
Zed 本身就支持 C 语言。
- Tree-sitter: tree-sitter/tree-sitter-c
- 语言服务器: clangd/clangd
Clangd:强制检测为 C
Clangd 默认假定为混合 C++/C 项目。如果你的项目仅包含 C 代码,你可能希望指示 clangd 将所有文件视为 C 文件,使用 -xc
标志。 为此,请在项目的根目录中创建一个 .clangd
文件,内容如下:
CompileFlags:
Add: [-xc]
默认情况下,clang 和 gcc 会将 *.C
和 *.H
(大写扩展名) 识别为 C++ 而不是 C,Zed 也遵循此约定。 如果你正在处理一个仅包含 C 代码的项目 (可能是一个具有像 FILENAME.C
这样的传统大写路径的项目),你可以通过将此内容添加到你的设置来覆盖此行为:
{
"file_types": {
"C": ["C", "H"]
}
}
格式化
默认情况下,Zed 将使用 clangd
语言服务器来格式化 C 代码。 Clangd 与 clang-format
CLI 工具相同。 要配置它,你可以添加一个 .clang-format
文件。 例如:
---
BasedOnStyle: GNU
IndentWidth: 2
---
有关选项的完整列表,请参阅 Clang-Format 样式选项。
你可以通过 cmd-shift-i|ctrl-shift-i 或命令面板中的 editor: format
操作触发格式化,或者将 format_on_save
添加到你的 Zed 设置中
"languages": {
"C": {
"format_on_save": "on",
"tab_size": 2
}
}
有关选项的完整列表,请参阅 Clang-Format 样式选项。
编译命令
对于某些项目,Clangd 需要一个 compile_commands.json
文件才能正确分析你的项目。 此文件包含编译数据库,该数据库告诉 clangd 你的项目应如何构建。
CMake 编译命令
使用 CMake,你可以通过将以下行添加到你的 CMakeLists.txt
中来自动生成 compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
构建项目后,CMake 将在构建目录中生成 compile_commands.json
文件,并且 clangd 将自动拾取它。