From 7d0d0113aa3faa3953737d7e2b24cb97191e5de1 Mon Sep 17 00:00:00 2001 From: Wilfred Hughes Date: Fri, 2 Feb 2024 08:44:06 -0800 Subject: [PATCH] wip patch mode --- src/display/mod.rs | 1 + src/line_parser.rs | 2 +- src/main.rs | 2 ++ src/options.rs | 4 +++- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/display/mod.rs b/src/display/mod.rs index 8604d52d9..4129da6fc 100644 --- a/src/display/mod.rs +++ b/src/display/mod.rs @@ -2,5 +2,6 @@ pub(crate) mod context; pub(crate) mod hunks; pub(crate) mod inline; pub(crate) mod json; +pub(crate) mod patch; pub(crate) mod side_by_side; pub(crate) mod style; diff --git a/src/line_parser.rs b/src/line_parser.rs index f9cd34d65..414947954 100644 --- a/src/line_parser.rs +++ b/src/line_parser.rs @@ -10,7 +10,7 @@ use crate::{ parse::syntax::{AtomKind, MatchKind, MatchedPos, TokenKind}, }; -fn split_lines_keep_newline(s: &str) -> Vec<&str> { +pub(crate) fn split_lines_keep_newline(s: &str) -> Vec<&str> { lazy_static! { static ref NEWLINE_RE: Regex = Regex::new("\n").unwrap(); } diff --git a/src/main.rs b/src/main.rs index 97abff50c..8eb24a833 100644 --- a/src/main.rs +++ b/src/main.rs @@ -314,6 +314,7 @@ fn main() { print_diff_result(&display_options, &diff_result); } DisplayMode::Json => display::json::print(&diff_result), + DisplayMode::Patch => display::patch::print(&diff_result), } } } @@ -881,6 +882,7 @@ fn print_diff_result(display_options: &DisplayOptions, summary: &DiffResult) { ); } DisplayMode::Json => unreachable!(), + DisplayMode::Patch => todo!(), } } (FileContent::Binary, FileContent::Binary) => { diff --git a/src/options.rs b/src/options.rs index e8f690ced..50c0aeb2a 100644 --- a/src/options.rs +++ b/src/options.rs @@ -158,7 +158,7 @@ fn app() -> clap::Command<'static> { ) .arg( Arg::new("display").long("display") - .possible_values(["side-by-side", "side-by-side-show-both", "inline", "json"]) + .possible_values(["side-by-side", "side-by-side-show-both", "inline", "json", "patch"]) .default_value("side-by-side") .value_name("MODE") .env("DFT_DISPLAY") @@ -300,6 +300,7 @@ When multiple overrides are specified, the first matching override wins.")) #[derive(Debug, Copy, Clone)] pub(crate) enum DisplayMode { Inline, + Patch, SideBySide, SideBySideShowBoth, Json, @@ -570,6 +571,7 @@ pub(crate) fn parse_args() -> Mode { DisplayMode::Json } + "patch" => DisplayMode::Patch, _ => { unreachable!("clap has already validated display") }