summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilfred Hughes <me@wilfred.me.uk>2023-08-25 08:22:28 -0700
committerWilfred Hughes <me@wilfred.me.uk>2023-08-25 08:22:28 -0700
commitca44de78e1d4f4127daaab02b6877b01c0893cb7 (patch)
tree1b8c9045a8b064b3675c8c415781b3c5b6f62d56
parent21cdbe177cc099f8300786b29df9341ebfb541e9 (diff)
Group overrides from the same language together0.51.0
No functional change, but makes --list-languages easier to read. Fixes #549
-rw-r--r--src/options.rs14
-rw-r--r--src/parse/guess_language.rs2
2 files changed, 14 insertions, 2 deletions
diff --git a/src/options.rs b/src/options.rs
index 47f503b55..593e1a028 100644
--- a/src/options.rs
+++ b/src/options.rs
@@ -5,6 +5,7 @@ use std::{env, ffi::OsStr, path::Path, path::PathBuf};
use clap::{crate_authors, crate_description, Arg, Command};
use const_format::formatcp;
use crossterm::tty::IsTty;
+use itertools::Itertools;
use crate::{
display::style::BackgroundColor,
@@ -467,7 +468,18 @@ fn parse_overrides_or_die(raw_overrides: &[String]) -> Vec<(LanguageOverride, Ve
std::process::exit(EXIT_BAD_ARGUMENTS);
}
- res
+ res.into_iter()
+ .coalesce(
+ |(prev_lang, mut prev_globs), (current_lang, current_globs)| {
+ if prev_lang == current_lang {
+ prev_globs.extend(current_globs);
+ Ok((prev_lang, prev_globs))
+ } else {
+ Err(((prev_lang, prev_globs), (current_lang, current_globs)))
+ }
+ },
+ )
+ .collect()
}
/// Parse CLI arguments passed to the binary.
diff --git a/src/parse/guess_language.rs b/src/parse/guess_language.rs
index ba6eedb5c..824b3f009 100644
--- a/src/parse/guess_language.rs
+++ b/src/parse/guess_language.rs
@@ -73,7 +73,7 @@ pub enum Language {
Zig,
}
-#[derive(Debug, Clone, Copy)]
+#[derive(Debug, Clone, Copy, PartialEq)]
pub enum LanguageOverride {
Language(Language),
PlainText,