1 unstable release

0.1.0 Dec 4, 2023

#1053 in Development tools

Custom license

645KB
14K SLoC

html-languageservice

The basics of an HTML language server.

Features

  • customize data providers
  • parse html document
  • scanner
  • complete
  • hover
  • format
  • findDocumentHighlights
  • findDocumentLinks
  • findDocumentSymbols
  • getFoldingRanges
  • getSelectionRanges
  • quoteComplete
  • tagComplete
  • rename
  • findMatchingTagPosition
  • findLinkedEditingRanges

Example

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() {
    // init
    let options = Arc::new(LanguageServiceOptions::default());
    let language_service = LanguageService::new(options, None);
    // prepare
    let document = FullTextDocument::new("html".to_string(), 1, "<div></div>".to_string());
    let html_document = language_service.parse_html_document(&document).await;
    let position = Position::new(0, 1);
    let document_context = DefaultDocumentContext {};
    // complete
    let completion_list = language_service
        .do_complete(&document, &position, &html_document, document_context, None)
        .await;
    println!("completion_list: {:#?}", completion_list);
    // hover
    let hover = language_service
        .do_hover(&document, &position, &html_document, None)
        .await;
    println!("hover: {:#?}", hover);
}

Dependencies

~7–17MB
~218K SLoC