第101章 在 Zed 编辑器中配置 R 语言支持
Zed 中可通过多个 R 扩展获得 R 语言支持:
-
- Tree-sitter:r-lib/tree-sitter-r
- Language-Server:REditorSupport/languageserver
-
- 格式化器:posit-dev/air
安装
- 下载并安装 R。
- 安装 R 包
languageserver和lintr:
install.packages("languageserver")
install.packages("lintr")
-
通过 Zed 的扩展管理器安装 R 扩展,以获取基础的 R 语言支持(语法高亮、Tree-sitter 支持)并启用对 REditorSupport/languageserver 的支持。
-
通过 Zed 的扩展管理器安装 Air 扩展,以便使用 Air 对 R 代码进行格式化。
静态检查
REditorSupport/languageserver 内置了对 r-lib/lintr 的支持,将其作为 Linter 使用。你可以通过在项目中配置 .lintr 文件(或在家目录下配置以实现全局默认设置)来进行调整。
linters: linters_with_defaults(
line_length_linter(120),
commented_code_linter = NULL
)
exclusions: list(
"inst/doc/creating_linters.R" = 1,
"inst/example/bad.R",
"tests/testthat/exclusions-test"
)
也可以排除所有内容,不执行任何静态检查:
exclusions: list(".")
更多配置选项,请参考 使用 lintr。
格式化
Air
Air 提供 R 代码格式化功能,并支持保存时自动格式化。关于在 Zed 中运行 Air 的最新建议,请参阅 Air 针对 Zed 的文档。
确保你已安装以下两个扩展:ocsmit/zed-r(用于在 Zed 中提供通用的 R 语言支持)以及 Air 扩展。
在设置中({#kb zed::OpenSettings}),通过“Languages > R”配置语言服务器,或者在你的设置文件中添加以下内容:
{
"languages": {
"R": {
"language_servers": ["air"]
}
}
}
如果你使用的是来自 REditorSupport/languageserver 的 "r_language_server",但仍希望使用 Air 进行格式化,请在设置中({#kb zed::OpenSettings})通过“Languages > R”进行配置,或者在你的设置文件中添加以下内容:
{
"languages": {
"R": {
"language_servers": ["air", "r_language_server"],
"use_on_type_format": false
}
}
}
请注意,在此列表中 "air" 必须放在第一位,否则 r-lib/styler 将通过 "r_language_server" 被调用。
"r_language_server" 提供的输入时格式化规则与 Air 不同。为了完全避免这种情况并让 Air 完全接管 R 文件的格式化,如上所示,还需设置 "use_on_type_format": false。
配置 Air
你可以通过在项目的根目录放置一个 air.toml 文件来对 Air 进行基本配置:
[format]
line-width = 80
indent-width = 2
如需更多详细信息,请查阅 Air 文档中的配置部分。
Styler
REditorSupport/languageserver 将 r-lib/styler 作为格式化器包含在内。关于如何自定义其行为,请参阅Customizing Styler。