feat: add Typst syntax and Tinymist defaults
This commit is contained in:
@@ -648,6 +648,40 @@ fn honey_highlights_declarations_literals_edits_and_markdown_fences() {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn typst_highlights_markup_code_edits_and_fenced_languages() {
|
||||
let source = "= Heading\n#let message = \"hello é\"\n#let count = 42\n\
|
||||
#text(message) // note\n*strong* and _emphasis_\n\
|
||||
```rust\nfn main() { let n = 7; }\n```";
|
||||
let mut cache = self::cache(source, "main.typ");
|
||||
assert_eq!(cache.language(), Some("Typst"));
|
||||
assert!(!cache.tree.as_ref().unwrap().root_node().has_error());
|
||||
for (row, token, kind) in [
|
||||
(0, "Heading", SyntaxKind::Markup),
|
||||
(1, "let", SyntaxKind::Keyword),
|
||||
(1, "hello é", SyntaxKind::String),
|
||||
(2, "42", SyntaxKind::Number),
|
||||
(3, "text", SyntaxKind::Function),
|
||||
(3, "// note", SyntaxKind::Comment),
|
||||
(4, "strong", SyntaxKind::Markup),
|
||||
(4, "emphasis", SyntaxKind::Markup),
|
||||
(6, "fn", SyntaxKind::Keyword),
|
||||
(6, "7", SyntaxKind::Number),
|
||||
] {
|
||||
assert_token(&cache, source, row, token, kind);
|
||||
}
|
||||
let edited = source.replace("\"hello é\"", "false");
|
||||
cache.update(&lines(&edited), Some(Path::new("main.typ")), 1);
|
||||
assert_token(&cache, &edited, 1, "false", SyntaxKind::Keyword);
|
||||
assert_fresh(&cache, &edited, "main.typ");
|
||||
for tag in ["typst", "typ"] {
|
||||
let markdown = format!("```{tag}\n#let count = 42\n```");
|
||||
let injected = self::cache(&markdown, "README.md");
|
||||
assert_token(&injected, &markdown, 1, "let", SyntaxKind::Keyword);
|
||||
assert_token(&injected, &markdown, 1, "42", SyntaxKind::Number);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn filenames_shebang_save_as_and_tsx_use_actual_grammar_identity() {
|
||||
let source = lines("\u{feff}#!/usr/bin/env python3\nreturn 42");
|
||||
|
||||
Reference in New Issue
Block a user