#rls #ide #compiler #nightly #language #language-server #identifying

rls-span

用于识别代码跨度/范围的类型

10个版本

0.5.4 2021年5月30日
0.5.3 2021年1月15日
0.5.2 2019年8月1日
0.5.1 2019年4月20日
0.1.0 2017年3月15日

#1984开发工具

Download history 337/week @ 2024-03-14 316/week @ 2024-03-21 373/week @ 2024-03-28 297/week @ 2024-04-04 274/week @ 2024-04-11 291/week @ 2024-04-18 298/week @ 2024-04-25 274/week @ 2024-05-02 266/week @ 2024-05-09 268/week @ 2024-05-16 293/week @ 2024-05-23 332/week @ 2024-05-30 264/week @ 2024-06-06 220/week @ 2024-06-13 235/week @ 2024-06-20 130/week @ 2024-06-27

每月889次下载
9个crate(6个直接)中使用

Apache-2.0/MIT

15KB
369

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

以及以下不稳定选项

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

故障排除

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

贡献

您可以通过查看此仓库中的 contributing.md 来了解如何为此项目做出贡献。

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

依赖项

~110–405KB