#rls #editor #file #ide #user #language #replaced

rls-vfs

RLS的虚拟文件系统

14个不稳定版本 (6个破坏性更新)

使用旧的Rust 2015

0.8.0 2019年4月21日
0.7.1 2019年2月3日
0.7.0 2018年11月8日
0.6.0 2018年7月29日
0.4.4 2017年7月9日

#2293 in 开发工具

Download history 79/week @ 2024-03-14 70/week @ 2024-03-21 93/week @ 2024-03-28 65/week @ 2024-04-04 78/week @ 2024-04-11 89/week @ 2024-04-18 88/week @ 2024-04-25 76/week @ 2024-05-02 75/week @ 2024-05-09 87/week @ 2024-05-16 99/week @ 2024-05-23 89/week @ 2024-05-30 64/week @ 2024-06-06 67/week @ 2024-06-13 60/week @ 2024-06-20 30/week @ 2024-06-27

每月下载量233
cargo-src中使用

Apache-2.0/MIT

57KB
1.5K SLoC

⚠️ RLS不再受支持

RLS已被弃用,不再受支持。它已被rust-analyzer取代。建议用户卸载RLS,并按照rust-analyzer手册中的说明为您的编辑器安装它。


Rust语言服务器(RLS)

RLS提供了一个在后台运行的服务器,为IDE、编辑器和其他工具提供关于Rust程序的信息。它支持诸如“转到定义”、“符号搜索”、“重新格式化”和“代码完成”等功能,并支持重命名和重构。

架构的高级概述可以在这里找到。

RLS从编译器和Racer获取源数据。尽可能使用编译器提供的数据,这些数据是精确和完整的。在不可能的情况下(例如,对于代码完成,并且构建速度太慢时),它使用Racer。

由于Rust编译器尚未支持端到端的增量编译,我们无法提供完美的体验。然而,通过优化我们对编译器的使用并回退到Racer,我们可以为小型到中型crate提供相当不错的体验。随着RLS和编译器的演变,我们将为更大和更大的crate提供更好的体验。

RLS被设计为前端无关。我们希望它将被不同的编辑器和IDE广泛采用。为了促进开发,我们为Visual Studio Code提供了一个RLS前端的参考实现

设置

步骤1:安装rustup

您可以在许多平台上安装rustup。这将帮助我们快速安装RLS及其依赖项。

如果您已经安装了rustup,请更新以确保您拥有最新的rustup和编译器

rustup update

如果您打算使用VSCode扩展,您可以跳过步骤2。

步骤 2:安装 RLS

安装 rustup 后,运行以下命令

rustup component add rls rust-analysis rust-src

错误:组件 'rls' 不可下载(nightly)

rustc 内部的开发节奏非常快。依赖于 nightly 内部的下游项目,尤其是 clippy,可能会相当频繁地出现问题。

当出现这种问题时,nightly 版本将缺少 rls。与不发布当天版本的其他选项相比,这是一个权衡,但它避免了阻塞不需要 clippy/rls 的人的 rust nightly 版本。

为了缓解我们遇到的问题

  • 如果更新缺少您当前拥有的任何组件,rustup 将会警告。这意味着您不再会意外地更新到没有 rls 的版本。一旦 rls 再次可用,它就会更新。
  • rls 和 clippy 在稳定通道上可用。这意味着大多数首次安装的开发者应该使用稳定版。
  • 但是,如果您需要最新的 nightly rls,可以使用 https://rust-lang.github.io/rustup-components-history/ 找到并安装特定日期的 nightly 版本,例如 rustup install nightly-2018-12-06

也请参阅 #641

运行

RLS 被构建为与许多 IDE 和编辑器一起工作,我们主要使用 VSCode 来测试 RLS。最简单的方法是使用 发布的扩展

当您在状态栏底部看到这个旋转指示器时,您就会知道它正在运行

RLS:正在运行 ◐

一旦您看到

RLS

那么您就有了一整套可用功能。您可以跳转到定义、查找所有引用、重命名、跳转到类型等。还可以使用 Racer 提供的启发式方法获得补全。随着您键入,您的代码将被检查,并且在发生错误时将报告错误波浪线。您可以将鼠标悬停在波浪线上以查看错误文本。

配置

RLS 可以根据每个项目进行配置;使用 Visual Studio Code 扩展,这将通过工作区设置文件 settings.json 完成。

其他编辑器将有自己的方式来发送 workspace/DidChangeConfiguration 方法。选项嵌套在 rust 对象中,因此您的 LSP 客户端可能会发送 {"settings":{"rust":{"unstable_features":true}}} 作为参数。

此文件中的条目将影响 RLS 的操作方式和构建项目的方式。

目前我们接受以下选项

  • unstable_features (bool,默认值为 false) 启用不稳定功能。目前没有任何选项需要此标志。
  • sysroot (String,默认值为 "") 如果提供的字符串不为空,则在尝试自动检测 sysroot 的同时,使用提供的路径作为所有 rustc 调用的 sysroot
  • targetString,默认为"")如果给定的字符串不为空,则使用给定的目标三元组进行所有rustc调用。
  • wait_to_buildu64)覆盖构建延迟时间(毫秒)。否则,它将自动由最新的构建持续时间推断。
  • all_targetsbool,默认为true)检查项目,就像您正在运行cargo check --all-targets一样。即,检查所有目标和集成测试。
  • crate_blacklist[String],默认为此列表)允许指定RLS应该跳过的哪些crate。默认情况下,跳过那些体积较大但用户可能不太感兴趣的库,从而减少构建延迟。
  • build_on_savebool,默认为false)切换RLS是否执行连续分析,或仅在文件保存后执行。
  • features[String],默认为空)列出要启用的Cargo功能。
  • all_featuresbool,默认为false)启用所有Cargo功能。
  • no_default_featuresbool,默认为false)禁用默认的Cargo功能。
  • racer_completionbool,默认为true)启用使用racer(目前,这是我们的唯一代码补全后端)进行代码补全。还启用悬停工具提示和转到定义,当保存分析数据不可用时,将回退到racer。
  • clippy_preferenceString,默认为"")控制clippy诊断的积极性。有效值是(不区分大小写)
    • ""禁用clippy检查。
    • ""显示与不带参数调用的命令行clippy相同的诊断(clippy::all,除非被覆盖)。
    • ""仅显示在代码中显式启用的lint。首先,在每个您想要lint的crate的根部添加#![warn[(clippy::all)]]

以及以下不稳定选项

  • build_lib (bool,默认为false) 检查项目,相当于在 cargo 中传递了 --lib 参数。与 build_bin 互斥,并且优先于 build_bin
  • build_bin (String,默认为空字符串"") 检查项目,相当于在 cargo 中传递了 -- bin <build_bin> 参数。与 build_lib 互斥。
  • cfg_test (bool,默认为false) 检查项目,相当于运行了 cargo test 而不是 cargo build。即编译(但不运行)测试代码。
  • full_docs (bool,默认为false) 指示 rustc 使用完整源文档填充保存分析数据。当设置为 false 时,只有第一段会被记录。这个选项目前对悬停提示的影响很小。当源提取失败时,才会使用保存分析文档。此选项对标准库没有影响。
  • show_hover_context (bool,默认为true) 当可用时,在悬停提示中显示额外的上下文。这通常是局部变量声明。当设置为 false 时,内容仅在按住某些编辑器的 ctrl 键时才可用。

故障排除

有关调试和故障排除的提示,请参阅 debugging.md

贡献

您可以在本存储库中的 contributing.md 中了解更多关于如何为此项目做出贡献的信息。

如果您想在编辑器中实现 RLS 支持,请参阅 clients.md

依赖关系

~155–440KB