From 8e5f446544fd147277ed2e4208c7ea793cc846a7 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Sat, 11 Mar 2023 11:46:12 +0100 Subject: Autocompletion for raw language tags --- library/src/lib.rs | 1 + library/src/text/raw.rs | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) (limited to 'library') diff --git a/library/src/lib.rs b/library/src/lib.rs index 94b3e0c4..36afdb2b 100644 --- a/library/src/lib.rs +++ b/library/src/lib.rs @@ -182,6 +182,7 @@ fn items() -> LangItems { } node.pack() }, + raw_languages: text::RawNode::languages, link: |url| meta::LinkNode::from_url(url).pack(), ref_: |target| meta::RefNode::new(target).pack(), heading: |level, title| meta::HeadingNode::new(title).with_level(level).pack(), diff --git a/library/src/text/raw.rs b/library/src/text/raw.rs index 72dd1782..99fb89d2 100644 --- a/library/src/text/raw.rs +++ b/library/src/text/raw.rs @@ -103,6 +103,23 @@ pub struct RawNode { pub lang: Option, } +impl RawNode { + /// The supported language names and tags. + pub fn languages() -> Vec<(&'static str, Vec<&'static str>)> { + SYNTAXES + .syntaxes() + .iter() + .map(|syntax| { + ( + syntax.name.as_str(), + syntax.file_extensions.iter().map(|s| s.as_str()).collect(), + ) + }) + .chain([("Typst", vec!["typ"]), ("Typst (code)", vec!["typc"])]) + .collect() + } +} + impl Prepare for RawNode { fn prepare(&self, _: &mut Vt, styles: StyleChain) -> SourceResult { let mut node = self.clone().pack(); -- cgit v1.2.3