panache 2.34.0

An LSP, formatter, and linter for Pandoc markdown, Quarto, and RMarkdown
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use crate::syntax::{SyntaxKind, SyntaxNode};

pub(super) fn contains_latex_command(node: &SyntaxNode) -> bool {
    node.descendants()
        .any(|child| child.kind() == SyntaxKind::LATEX_COMMAND)
}

pub(super) fn is_bookdown_text_reference(node: &SyntaxNode) -> bool {
    let text = node.text().to_string();
    let trimmed = text.trim_end_matches(['\r', '\n']);
    if !trimmed.starts_with("(ref:") || !trimmed.contains(") ") {
        return false;
    }
    !trimmed[trimmed.find(") ").unwrap() + 2..].contains('\n')
}