summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcyqsimon <28627918+cyqsimon@users.noreply.github.com>2024-01-18 22:41:57 +0800
committercyqsimon <28627918+cyqsimon@users.noreply.github.com>2024-01-18 22:41:57 +0800
commite4d637a3d880110d4c0dc4025946f054cbe5472c (patch)
tree4b77892ce86a5ad8eb3ba2c0dbaace49aa992a26
parent15ab4478c934cd3c4692905b41c289a8e792b727 (diff)
Reverse precedence of syntax mappings specified on CLI
-rw-r--r--CHANGELOG.md2
-rw-r--r--src/bin/bat/app.rs4
-rw-r--r--src/syntax_mapping.rs2
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::<String>("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>,
}