C

Zed 本身就支持 C 语言。

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 将自动拾取它。