html-languageservice 0.12.0

The basics of an HTML language server.
Documentation
use lsp_textdocument::FullTextDocument;
use lsp_types::{CompletionItem, Hover, Position, Range};

use crate::parser::html_document::HTMLDocument;

pub trait ICompletionParticipant: Send + Sync {
    fn on_html_attribute_value(&self, context: HtmlAttributeValueContext) -> Vec<CompletionItem>;
    fn on_html_content(&self, context: HtmlContentContext) -> Vec<CompletionItem>;
}

pub trait IHoverParticipant: Send + Sync {
    fn on_html_attribute_value<'a>(
        &'a self,
        context: HtmlAttributeValueContext<'a>,
    ) -> Option<Hover>;
    fn on_html_content<'a>(&'a self, context: HtmlContentContext<'a>) -> Option<Hover>;
}

pub struct HtmlAttributeValueContext<'a> {
    pub document: &'a FullTextDocument,
    pub html_document: &'a HTMLDocument,
    pub position: Position,
    pub tag: &'a str,
    pub attribute: &'a str,
    pub value: &'a str,
    pub range: Range,
}

pub struct HtmlContentContext<'a> {
    pub document: &'a FullTextDocument,
    pub html_document: &'a HTMLDocument,
    pub position: Position,
}