tinymist_world/system/
diag.rs1use std::io::IsTerminal;
2
3use codespan_reporting::term::termcolor::{ColorChoice, StandardStream, WriteColor};
4
5use ecow::EcoString;
6use tinymist_std::Result;
7use typst::diag::{SourceDiagnostic, StrResult};
8
9use crate::{DiagnosticFormat, SourceWorld};
10
11#[deprecated(note = "Use `diag` mod instead")]
13pub fn print_diagnostics_to<'d, 'files>(
14 world: &'files dyn SourceWorld,
15 errors: impl Iterator<Item = &'d SourceDiagnostic>,
16 w: &mut impl WriteColor,
17 diagnostic_format: DiagnosticFormat,
18) -> Result<(), codespan_reporting::files::Error> {
19 crate::diag::print_diagnostics_to(world, errors, w, diagnostic_format)
20}
21
22#[deprecated(note = "Use `diag` mod instead")]
24pub fn print_diagnostics_to_string<'d, 'files>(
25 world: &'files dyn SourceWorld,
26 errors: impl Iterator<Item = &'d SourceDiagnostic>,
27 diagnostic_format: DiagnosticFormat,
28) -> StrResult<EcoString> {
29 crate::diag::print_diagnostics_to_string(world, errors, diagnostic_format)
30}
31
32fn color_stream() -> StandardStream {
34 StandardStream::stderr(if std::io::stderr().is_terminal() {
35 ColorChoice::Auto
36 } else {
37 ColorChoice::Never
38 })
39}
40
41pub fn print_diagnostics<'d, 'files>(
43 world: &'files dyn SourceWorld,
44 errors: impl Iterator<Item = &'d SourceDiagnostic>,
45 diagnostic_format: DiagnosticFormat,
46) -> Result<(), codespan_reporting::files::Error> {
47 let mut w = match diagnostic_format {
48 DiagnosticFormat::Human => color_stream(),
49 DiagnosticFormat::Short => StandardStream::stderr(ColorChoice::Never),
50 };
51
52 crate::diag::print_diagnostics_to(world, errors, &mut w, diagnostic_format)
53}