From e4d637a3d880110d4c0dc4025946f054cbe5472c Mon Sep 17 00:00:00 2001 From: cyqsimon <28627918+cyqsimon@users.noreply.github.com> Date: Thu, 18 Jan 2024 22:41:57 +0800 Subject: [PATCH] Reverse precedence of syntax mappings specified on CLI --- CHANGELOG.md | 2 -- src/bin/bat/app.rs | 4 +++- src/syntax_mapping.rs | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2972cdce..299938be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,8 +16,6 @@ - Update Arch Linux package URL in README files #2779 (@brunobell) - Update and improve `zsh` completion, see #2772 (@okapia) - More extensible syntax mapping mechanism #2755 (@cyqsimon) - - [BREAKING] Precedence order of user-defined syntax mappings (using `-m/--map-syntax`) has been reversed - - `-m '*.foo:alpha' -m '*.foo:bravo'` now maps `bar.foo` to `alpha` ## Syntaxes diff --git a/src/bin/bat/app.rs b/src/bin/bat/app.rs index 811b332e..a2c09770 100644 --- a/src/bin/bat/app.rs +++ b/src/bin/bat/app.rs @@ -130,7 +130,9 @@ impl App { } if let Some(values) = self.matches.get_many::("map-syntax") { - for from_to in values { + // later args take precedence over earlier ones, hence `.rev()` + // see: https://github.com/sharkdp/bat/pull/2755#discussion_r1456416875 + for from_to in values.rev() { let parts: Vec<_> = from_to.split(':').collect(); if parts.len() != 2 { diff --git a/src/syntax_mapping.rs b/src/syntax_mapping.rs index 7197f280..0dac0c02 100644 --- a/src/syntax_mapping.rs +++ b/src/syntax_mapping.rs @@ -41,6 +41,8 @@ pub enum MappingTarget<'a> { #[derive(Debug, Clone, Default)] pub struct SyntaxMapping<'a> { /// User-defined mappings at run time. + /// + /// Rules in front have precedence. custom_mappings: Vec<(GlobMatcher, MappingTarget<'a>)>, pub(crate) ignored_suffixes: IgnoredSuffixes<'a>, }