Skip to content

Configuration

clice 从工作区根目录的 clice.toml 中读取配置;若该文件不存在,则尝试 .clice/config.toml。配置也可以通过 LSP initializationOptions(JSON 格式)传入:initializationOptions 中的值会覆盖配置文件,合并后仍未设置的项再由默认值填充。

配置只在服务器启动时读取一次。修改配置(无论哪个文件)都需要重启服务器,没有热重载。

变量替换

字符串值中支持以下变量:

变量说明
${workspace}客户端提供的工作区目录

Project

project.clang_tidy

类型默认值
boolfalse

启用实验性的 clang-tidy 诊断。尚未接线——该选项会被解析,但当前没有任何效果。

project.cache_dir

类型默认值
string$XDG_CACHE_HOME/clice/<workspace>-<hash>${workspace}/.clice

统一磁盘缓存的存储目录(PCH、PCM 与索引产物都在这里)。默认使用 XDG_CACHE_HOME(或 ~/.cache)下以工作区目录名加短哈希命名的子目录,例如 ~/.cache/clice/myproject-1a2b3c4d。如果 XDG 目录无法创建,则回退到 ${workspace}/.clice。实际解析出的路径会在启动时的有效配置日志中打印(可在编辑器的 clice 输出面板查看)。

project.logging_dir

类型默认值
string${cache_dir}/logs

日志文件目录。每个服务器会话在其中创建独立的时间戳子目录;启动日志中的 Session log directory: 一行给出确切路径。

project.compile_commands_paths

类型默认值
array of string[]

搜索 compile_commands.json 文件的路径。可以是直接的文件路径,也可以是目录(会在其中查找 compile_commands.json)。为空(默认)时,clice 会先搜索工作区根目录,再依次搜索其各个直接子目录,使用找到的第一个 compile_commands.json

project.enable_indexing

类型默认值
booltrue

启用后台索引,用于跨 TU 功能(查找引用、工作区符号等)。

project.idle_timeout_ms

类型默认值
int3000

最后一次编辑后开始后台索引的空闲等待时间(毫秒)。

project.stateful_worker_count

类型默认值
uint322

有状态工作进程数量。这些进程在内存中持有 AST,服务查询(hover、semantic tokens 等)。

project.stateless_worker_count

类型默认值
uint32max(cores/2, 2)

启动时创建的无状态工作进程数量。处理临时任务(PCH/PCM 构建、补全、签名帮助)。

project.min_stateless_worker_count

类型默认值
uint320(自动)

无状态工作进程动态缩容的下限。0 表示自动确定最小值。

project.max_stateless_worker_count

类型默认值
uint320(自动)

无状态工作进程动态扩容的上限。0 表示使用 CPU 核心数。

project.worker_memory_limit

类型默认值
uint644294967296(4 GB)

每个工作进程的内存限制(字节)。尚未强制执行——该选项会被解析,但基于内存的淘汰/重启尚未实现。

Tracker

文件追踪器轮询编辑器之外发生的变化(git checkout、重新生成的 compile_commands.json、代码生成器写出的头文件),使服务器无需重启即可感知。将间隔设为 0 可禁用对应的轮询循环。

tracker.cdb_poll_seconds

类型默认值
uint323

重新检查编译数据库文件的间隔(秒)。

tracker.workspace_poll_seconds

类型默认值
uint3230

扫描工作区文件磁盘变化的间隔(秒)。

Rules

[[rules]] 是规则对象数组。规则按声明顺序匹配——后面的规则覆盖前面的。

[rules].patterns

类型默认值
array of string[]

匹配文件路径的 glob 模式:

  • * — 匹配路径段中的一个或多个字符
  • ? — 匹配路径段中的单个字符
  • ** — 匹配任意数量的路径段,包括零个
  • {} — 分组条件(如 **/*.{h,cpp}
  • [] — 字符范围(如 example.[0-9]
  • [!...] — 排除字符范围

[rules].append

类型默认值
array of string[]

追加到编译命令的标志。例如:["-std=c++20", "-DNDEBUG"]

[rules].remove

类型默认值
array of string[]

从编译命令中移除的标志。例如:["-Wall", "-Werror"]

示例

toml
[project]
compile_commands_paths = ["${workspace}/build", "${workspace}/cmake-build-debug"]
clang_tidy = true

[[rules]]
patterns = ["**/*"]
append = ["-std=c++23"]

[[rules]]
patterns = ["**/test/**"]
append = ["-DTEST_MODE"]