11个版本 (5个重大更新)
0.6.2 | 2024年8月8日 |
---|---|
0.5.0 | 2024年8月5日 |
0.4.0 | 2024年7月31日 |
0.1.0 | 2023年12月4日 |
#471 in 开发工具
每月725次下载
640KB
13K SLoC
html-languageservice
该项目是使用
rust
重写的vscode-html-languageservice
,同时具有原始项目所有功能,并具有更高的性能。
该项目是实现HTML语言服务所需功能的集合。
功能
- 自定义数据提供者
- 解析HTML文档
- 扫描器
- 完成 - 激活
completion
功能 - 悬停 - 激活
hover
功能 - 格式化 - 激活
formatter
功能 - 查找文档高亮 - 激活
highlight
功能 - 查找文档链接 - 激活
links
功能 - 查找文档符号 - 激活
symbols
功能 - 获取折叠范围 - 激活
folding
功能 - 获取选择范围 - 激活
selection_range
功能 - 引用完成 - 激活
completion
功能 - 标签完成 - 激活
completion
功能 - 重命名 - 激活
rename
功能 - 查找匹配的标签位置 - 激活
matching_tag_position
功能 - 查找链接编辑范围 - 激活
linked_editing
功能
用法
与数据相关的hover
和complete
需要在创建HTMLLanguageService
结构之前,其他函数与数据无关,但用作其关联函数,可以直接调用。
请确保在Cargo.toml
上激活了html-languageservice
crate的所有功能。
html-languageservice = { version = "0.6.1", features = ["full"] }
您也可以在Cargo.toml
上仅激活您需要的部分功能。
html-languageservice = { version = "0.6.1", features = ["completion", "hover"] }
其次,您需要准备:document
和position
。
然后,将 document
解析为 html_document
,你需要使用 HTMLDataManager
,标签、属性和属性值数据都存储在 HTMLDataManager
中。
最后,调用一个函数或方法来获取结果。
示例
use std::sync::Arc;
use html_languageservice::{
services::html_completion::DefaultDocumentContext, LanguageService, LanguageServiceOptions,
};
use lsp_textdocument::FullTextDocument;
use lsp_types::Position;
#[tokio::main]
async fn main() {
// prepare
let document = FullTextDocument::new("html".to_string(), 1, "<div></div>".to_string());
let position = Position::new(0, 1);
// init
let data_manager = HTMLDataManager::new(true, None);
let html_document = HTMLLanguageService::parse_html_document(&document, &data_manager);
let ls = HTMLLanguageService::new(HTMLLanguageServiceOptions::default());
// hover
let hover = ls
.do_hover(&document, &position, &html_document, None, &data_manager)
.await;
assert!(hover.is_some());
// complete
let document_context = DefaultDocumentContext;
let completion_list = ls
.do_complete(
&document,
&position,
&html_document,
document_context,
None,
&data_manager,
)
.await;
assert!(completion_list.items.len() > 0);
}
依赖项
~7-15MB
~202K SLoC