Refactor "Use `matches` macro"

This commit is contained in:
Mohamed Abdelnour 2021-05-22 12:13:02 +02:00 committed by David Peter
parent cf7d9ef962
commit aa74d19940
1 changed files with 9 additions and 12 deletions

View File

@ -98,21 +98,18 @@ pub(crate) fn get_pager(config_pager: Option<&str>) -> Result<Option<Pager>, Par
Some((bin, args)) => {
let kind = PagerKind::from_bin(bin);
// Is false if the given expression does not match any of the
// patterns; this ensures 'less' is never silently used if BAT_PAGER
// or --pager has been specified.
let use_less_instead = matches!(
(&source, &kind),
let use_less_instead = if source == PagerSource::EnvVarPager {
// 'more' and 'most' do not supports colors; automatically use
// 'less' instead if the problematic pager came from the
// generic PAGER env var
(PagerSource::EnvVarPager, PagerKind::More)
| (PagerSource::EnvVarPager, PagerKind::Most)
// generic PAGER env var.
// If PAGER=bat, silently use 'less' instead to prevent
// recursion ...
| (PagerSource::EnvVarPager, PagerKind::Bat)
);
// recursion.
// Never silently use 'less' if BAT_PAGER or --pager has been
// specified.
matches!(kind, PagerKind::More | PagerKind::Most | PagerKind::Bat)
} else {
false
};
Ok(Some(if use_less_instead {
let no_args = vec![];