mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-08-10 17:51:56 -07:00
This commit does the work to delete the old `grep` crate and effectively rewrite most of ripgrep core to use the new libripgrep crates. The new `grep` crate is now a facade that collects the various crates that make up libripgrep. The most complex part of ripgrep core is now arguably the translation between command line parameters and the library options, which is ultimately where we want to be.
51 lines
1.3 KiB
Rust
51 lines
1.3 KiB
Rust
use std::sync::atomic::{ATOMIC_BOOL_INIT, AtomicBool, Ordering};
|
|
|
|
static MESSAGES: AtomicBool = ATOMIC_BOOL_INIT;
|
|
static IGNORE_MESSAGES: AtomicBool = ATOMIC_BOOL_INIT;
|
|
|
|
#[macro_export]
|
|
macro_rules! message {
|
|
($($tt:tt)*) => {
|
|
if ::messages::messages() {
|
|
eprintln!($($tt)*);
|
|
}
|
|
}
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! ignore_message {
|
|
($($tt:tt)*) => {
|
|
if ::messages::messages() && ::messages::ignore_messages() {
|
|
eprintln!($($tt)*);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Returns true if and only if messages should be shown.
|
|
pub fn messages() -> bool {
|
|
MESSAGES.load(Ordering::SeqCst)
|
|
}
|
|
|
|
/// Set whether messages should be shown or not.
|
|
///
|
|
/// By default, they are not shown.
|
|
pub fn set_messages(yes: bool) {
|
|
MESSAGES.store(yes, Ordering::SeqCst)
|
|
}
|
|
|
|
/// Returns true if and only if "ignore" related messages should be shown.
|
|
pub fn ignore_messages() -> bool {
|
|
IGNORE_MESSAGES.load(Ordering::SeqCst)
|
|
}
|
|
|
|
/// Set whether "ignore" related messages should be shown or not.
|
|
///
|
|
/// By default, they are not shown.
|
|
///
|
|
/// Note that this is overridden if `messages` is disabled. Namely, if
|
|
/// `messages` is disabled, then "ignore" messages are never shown, regardless
|
|
/// of this setting.
|
|
pub fn set_ignore_messages(yes: bool) {
|
|
IGNORE_MESSAGES.store(yes, Ordering::SeqCst)
|
|
}
|