6 个版本
0.3.3 | 2024 年 3 月 6 日 |
---|---|
0.3.2 | 2023 年 6 月 8 日 |
0.3.1 | 2022 年 8 月 23 日 |
0.3.0 | 2022 年 4 月 19 日 |
0.1.0 | 2021 年 12 月 17 日 |
#236 in 文本编辑器
每月 559 次下载
在 7 个 crate 中使用 (直接使用 2 个)
24KB
295 行
lsp-positions
该 lsp-positions
crate 定义了与 LSP 兼容的源代码位置信息。
当编写一个分析或操作源代码的工具时,你很可能需要与 语言服务器协议 进行交互。这个看似简单的要求使得处理 字符位置 非常困难。这是因为 Rust 以 UTF-8 格式存储 Unicode 字符串内容(即你要分析的源代码),而 LSP 使用 UTF-16 代码单元 来指定字符位置。
作为背景,Unicode 字符或代码点被编码为一个或多个代码单元。在 UTF-8 中,代码单元是 1 个字节,字符被编码在 1-4 个代码单元(1-4 个字节)中。在 UTF-16 中,代码单元是 2 个字节,字符被编码在 1-2 个代码单元(2 或 4 个字节)中。Rust 字符串以 UTF-8 编码,并按字节索引(与代码单元相同)。索引只有当它们指向代码点的第一个代码单元时才是有效的。
我们使用两个单位来跟踪每个源代码位置:文件或包含行内的 UTF-8 字节位置,可以用于索引 UTF-8 编码的 str
和 [u8]
数据,以及行内的 UTF-16 代码单元位置,可以用于生成 LSP 的 Position
值。
要使用此库,请将以下内容添加到您的 Cargo.toml
[dependencies]
lsp-positions = "0.3"
有关如何使用此库的更多详细信息,请参阅我们的 文档。
每个版本的显著更改记录在发行说明中。
许可协议
许可协议为以下之一
由您选择。
依赖项
~0.7–1.7MB
~29K SLoC