主题的语义高亮

Ruby LSP 支持语义高亮,它可以告知编辑器代码中每个部分的正确标记类型,从而实现丰富而准确的高亮显示。如果您是主题开发者,或者想要增强编辑器中的 Ruby 语法高亮显示,本指南将简要概述可用的语义标记以及如何使用它们。

Ruby LSP 采取的策略是仅为 Ruby 中不明确的语法返回标记(而不是所有现有标记),以优化性能。

Ruby 中不明确的语法的一个例子是局部变量和方法调用。如果您单独查看这一行

foo

则无法判断 foo 是局部变量还是方法调用。这取决于之前是否将 foo 赋值给了某个东西。这是语义高亮消除主题歧义的场景之一,它通过静态分析代码来返回正确的标记类型。

要使用 Ruby LSP 增强主题的 Ruby 语法高亮显示,请查看以下信息。您可能还想查看 Spinel 主题 作为示例,它使用了 Ruby LSP 的所有语义高亮信息。

标记类型

根据 LSP 规范,语言服务器可以使用 默认列表 中的标记类型和修饰符,或者贡献自己的新语义标记。目前,Ruby LSP 不会贡献任何新的语义标记,仅使用默认列表中的标记。

标记列表

语法 类型.修饰符 注释
Sorbet 注解方法,例如 letcast 类型 并非所有注解都会被处理
任何语法的 方法调用 方法  
常量引用(包括类和模块) 命名空间 我们尚未区分模块和类引用
方法定义 方法.声明  
self 变量.默认库  
方法、块和 lambda 参数 参数  
类声明 类.声明  
模块声明 类.声明