diff options
author | Wilfred Hughes <me@wilfred.me.uk> | 2023-08-25 08:22:28 -0700 |
---|---|---|
committer | Wilfred Hughes <me@wilfred.me.uk> | 2023-08-25 08:22:28 -0700 |
commit | ca44de78e1d4f4127daaab02b6877b01c0893cb7 (patch) | |
tree | 1b8c9045a8b064b3675c8c415781b3c5b6f62d56 | |
parent | 21cdbe177cc099f8300786b29df9341ebfb541e9 (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.rs | 14 | ||||
-rw-r--r-- | src/parse/guess_language.rs | 2 |
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, |