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 文本编辑器

Download history 35/week @ 2024-04-03 13/week @ 2024-04-10 8/week @ 2024-04-24 118/week @ 2024-05-01 172/week @ 2024-05-08 88/week @ 2024-05-15 119/week @ 2024-05-22 127/week @ 2024-05-29 168/week @ 2024-06-05 191/week @ 2024-06-12 163/week @ 2024-06-19 156/week @ 2024-06-26 166/week @ 2024-07-03 133/week @ 2024-07-10 75/week @ 2024-07-17

每月 559 次下载
7 个 crate 中使用 (直接使用 2 个)

MIT/Apache

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