Skip to main content

tsu_editor/
lib.rs

1pub mod action;
2pub mod buffer;
3pub mod color;
4pub mod command;
5pub mod config;
6pub mod editor;
7pub mod highlighter;
8pub mod logger;
9pub mod theme;
10pub mod unicode;
11pub mod window;
12pub mod window_manager;
13
14#[doc(hidden)]
15pub mod ext;
16
17use once_cell::sync::OnceCell;
18
19pub use logger::Logger;
20
21pub const VERSION_AND_GIT_HASH: &str = env!("VERSION_AND_GIT_HASH");
22
23/// Logger singleton
24pub static LOGGER: OnceCell<Option<Logger>> = OnceCell::new();
25
26#[macro_export]
27macro_rules! log {
28    ($($arg:tt)*) => {
29        {
30            let log_message = format!($($arg)*);
31            if let Some(logger) = $crate::LOGGER.get_or_init(|| Some($crate::Logger::new("tsu.log"))) {
32                logger.log(&log_message);
33            }
34        }
35    };
36}
37
38#[macro_export]
39macro_rules! debug {
40    ($($arg:tt)*) => {
41        {
42            let log_message = format!($($arg)*);
43            if let Some(logger) = $crate::LOGGER.get_or_init(|| Some($crate::Logger::new("tsu.log"))) {
44                logger.debug(&log_message);
45            }
46        }
47    };
48}
49
50#[macro_export]
51macro_rules! info {
52    ($($arg:tt)*) => {
53        {
54            let log_message = format!($($arg)*);
55            if let Some(logger) = $crate::LOGGER.get_or_init(|| Some($crate::Logger::new("tsu.log"))) {
56                logger.info(&log_message);
57            }
58        }
59    };
60}
61
62#[macro_export]
63macro_rules! warn {
64    ($($arg:tt)*) => {
65        {
66            let log_message = format!($($arg)*);
67            if let Some(logger) = $crate::LOGGER.get_or_init(|| Some($crate::Logger::new("tsu.log"))) {
68                logger.warn(&log_message);
69            }
70        }
71    };
72}
73
74#[macro_export]
75macro_rules! error {
76    ($($arg:tt)*) => {
77        {
78            let log_message = format!($($arg)*);
79            if let Some(logger) = $crate::LOGGER.get_or_init(|| Some($crate::Logger::new("tsu.log"))) {
80                logger.error(&log_message);
81            }
82        }
83    };
84}