html_languageservice/
participant.rs

1use 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}