html_languageservice/
participant.rs1use lsp_textdocument::FullTextDocument;
2use lsp_types::{CompletionItem, Hover, Position, Range};
3
4use crate::parser::html_document::HTMLDocument;
5
6pub trait ICompletionParticipant: Send + Sync {
7 fn on_html_attribute_value(&self, context: HtmlAttributeValueContext) -> Vec<CompletionItem>;
8 fn on_html_content(&self, context: HtmlContentContext) -> Vec<CompletionItem>;
9}
10
11pub trait IHoverParticipant: Send + Sync {
12 fn on_html_attribute_value<'a>(
13 &'a self,
14 context: HtmlAttributeValueContext<'a>,
15 ) -> Option<Hover>;
16 fn on_html_content<'a>(&'a self, context: HtmlContentContext<'a>) -> Option<Hover>;
17}
18
19pub struct HtmlAttributeValueContext<'a> {
20 pub document: &'a FullTextDocument,
21 pub html_document: &'a HTMLDocument,
22 pub position: Position,
23 pub tag: &'a str,
24 pub attribute: &'a str,
25 pub value: &'a str,
26 pub range: Range,
27}
28
29pub struct HtmlContentContext<'a> {
30 pub document: &'a FullTextDocument,
31 pub html_document: &'a HTMLDocument,
32 pub position: Position,
33}