Skip to content

Commit e729406

Browse files
committed
Example diffs
1 parent 006fcec commit e729406

File tree

5 files changed

+212
-0
lines changed

5 files changed

+212
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
diff --cc src/handlers/merge_conflict.rs
2+
index 8fc4116b,eb115dde..00000000
3+
--- a/src/handlers/merge_conflict.rs
4+
+++ b/src/handlers/merge_conflict.rs
5+
@@@ -88,8 -88,10 +88,20 @@@ fn paint_buffered_merge_conflict_lines
6+
.map(|s| (s.to_string(), State::HunkMinus(None, None)))
7+
.collect();
8+
for plus_lines in &[&lines[Ours], &lines[Theirs]] {
9+
++<<<<<<< HEAD
10+
+ let plus_lines = plus_lines.iter().collect();
11+
+ let a = 1;
12+
++||||||| cf306705
13+
++ let plus_lines = plus_lines
14+
++ .iter()
15+
++ .map(|s| (s.to_string(), State::HunkMinus(None, None)))
16+
++ .collect();
17+
++=======
18+
+ let plus_lines = plus_lines
19+
+ .iter()
20+
+ .map(|s| (s.to_string(), State::HunkMinus(None, Some(7))))
21+
+ .collect();
22+
++>>>>>>> z-189-combined-diff-and-conflicts-merge-conflict-branch-2
23+
paint::paint_minus_and_plus_lines(
24+
MinusPlus::new(&minus_lines, &plus_lines),
25+
line_numbers_data,
26+
@@@ -97,7 -99,7 +109,12 @@@
27+
output_buffer,
28+
config,
29+
);
30+
++<<<<<<< HEAD
31+
+ let b = 2;
32+
++||||||| cf306705
33+
++=======
34+
+ let b = 9;
35+
++>>>>>>> z-189-combined-diff-and-conflicts-merge-conflict-branch-2
36+
output_buffer.push_str("\n\n");
37+
}
38+
Ok(())
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
diff --cc src/paint.rs
2+
index 79b44db1,0f429d5c..00000000
3+
--- a/src/paint.rs
4+
+++ b/src/paint.rs
5+
@@@ -387,30 -457,36 +387,88 @@@ impl<'p> Painter<'p> 
6+
) -> (Option<BgFillMethod>, Style) {
7+
// style: for right fill if line contains no emph sections
8+
// non_emph_style: for right fill if line contains emph sections
9+
++<<<<<<< HEAD
10+
 + let (style, non_emph_style) = match state {
11+
 + State::HunkMinus(None) | State::HunkMinusWrapped => {
12+
 + (config.minus_style, config.minus_non_emph_style)
13+
 + }
14+
 + State::HunkZero | State::HunkZeroWrapped => (config.zero_style, config.zero_style),
15+
 + State::HunkPlus(None) | State::HunkPlusWrapped => {
16+
 + (config.plus_style, config.plus_non_emph_style)
17+
 + }
18+
 + State::HunkMinus(Some(_)) | State::HunkPlus(Some(_)) => {
19+
 + let style = if !diff_sections.is_empty() {
20+
 + diff_sections[diff_sections.len() - 1].0
21+
++||||||| parent of 4d4b19ca (Always use non-emph style for right fill)
22+
++ let (style, non_emph_style) = match state {
23+
++ State::HunkMinus(None) | State::HunkMinusWrapped => {
24+
++ (config.minus_style, config.minus_non_emph_style)
25+
++ }
26+
++ State::HunkMinus(Some(raw_line)) => {
27+
++ // TODO: This is the second time we are parsing the ANSI sequences
28+
++ if let Some(ansi_term_style) = ansi::parse_first_style(raw_line) {
29+
++ let style = Style {
30+
++ ansi_term_style,
31+
++ ..Style::new()
32+
++ };
33+
++ (style, style)
34+
++ } else {
35+
++ (config.minus_style, config.minus_non_emph_style)
36+
++ }
37+
++ }
38+
++ State::HunkZero | State::HunkZeroWrapped => (config.zero_style, config.zero_style),
39+
++ State::HunkPlus(None) | State::HunkPlusWrapped => {
40+
++ (config.plus_style, config.plus_non_emph_style)
41+
++ }
42+
++ State::HunkPlus(Some(raw_line)) => {
43+
++ // TODO: This is the second time we are parsing the ANSI sequences
44+
++ if let Some(ansi_term_style) = ansi::parse_first_style(raw_line) {
45+
++ let style = Style {
46+
++ ansi_term_style,
47+
++ ..Style::new()
48+
++ };
49+
++ (style, style)
50+
++=======
51+
+ let non_emph_style = match state {
52+
+ State::HunkMinus(None) | State::HunkMinusWrapped => config.minus_non_emph_style,
53+
+ State::HunkMinus(Some(raw_line)) => {
54+
+ // TODO: This is the second time we are parsing the ANSI sequences
55+
+ if let Some(ansi_term_style) = ansi::parse_first_style(raw_line) {
56+
+ Style {
57+
+ ansi_term_style,
58+
+ ..Style::new()
59+
+ }
60+
+ } else {
61+
+ config.minus_non_emph_style
62+
+ }
63+
+ }
64+
+ State::HunkZero | State::HunkZeroWrapped => config.zero_style,
65+
+ State::HunkPlus(None) | State::HunkPlusWrapped => config.plus_non_emph_style,
66+
+ State::HunkPlus(Some(raw_line)) => {
67+
+ // TODO: This is the second time we are parsing the ANSI sequences
68+
+ if let Some(ansi_term_style) = ansi::parse_first_style(raw_line) {
69+
+ Style {
70+
+ ansi_term_style,
71+
+ ..Style::new()
72+
+ }
73+
++>>>>>>> 4d4b19ca (Always use non-emph style for right fill)
74+
} else {
75+
++<<<<<<< HEAD
76+
 + config.null_style
77+
 + };
78+
 + (style, style)
79+
++||||||| parent of 4d4b19ca (Always use non-emph style for right fill)
80+
++ (config.plus_style, config.plus_non_emph_style)
81+
++ }
82+
++=======
83+
+ config.plus_non_emph_style
84+
+ }
85+
++>>>>>>> 4d4b19ca (Always use non-emph style for right fill)
86+
}
87+
- State::Blame(_, _) => (diff_sections[0].0, diff_sections[0].0),
88+
- _ => (config.null_style, config.null_style),
89+
- };
90+
- let fill_style = if style_sections_contain_more_than_one_style(diff_sections) {
91+
- non_emph_style // line contains an emph section
92+
- } else {
93+
- style
94+
+ State::Blame(_, _) => diff_sections[0].0,
95+
+ _ => config.null_style,
96+
};
97+
+ let fill_style = non_emph_style;
98+

99+
match (
100+
fill_style.get_background_color().is_some(),
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
diff --cc Makefile
2+
index 759070d,3daf9eb..0000000
3+
--- a/Makefile
4+
+++ b/Makefile
5+
@@@ -4,13 -4,16 +4,37 @@@ build
6+
lint:
7+
cargo clippy
8+
9+
++<<<<<<< Updated upstream
10+
+test: unit-test end-to-end-test
11+
+
12+
+unit-test:
13+
+ cargo test
14+
+
15+
+end-to-end-test: build
16+
+ bash -c "diff -u <(git log -p) <(git log -p | target/release/delta --color-only | perl -pe 's/\e\[[0-9;]*m//g')"
17+
++||||||| constructed merge base
18+
++test:
19+
++ cargo test
20+
++ bash -c "diff -u <(git log -p) \
21+
++ <(git log -p | delta --width variable \
22+
++ --tabs 0 \
23+
++ --retain-plus-minus-markers \
24+
++ --commit-style plain \
25+
++ --file-style plain \
26+
++ --hunk-style plain \
27+
++ | ansifilter)" ++=======
28+
+ test:
29+
+ cargo test --release
30+
+ bash -c "diff -u <(git log -p) \
31+
+ <(git log -p | target/release/delta --width variable \
32+
+ --tabs 0 \
33+
+ --retain-plus-minus-markers \
34+
+ --commit-style plain \
35+
+ --file-style plain \
36+
+ --hunk-style plain \
37+
+ | ansifilter)"> /dev/null
38+
++>>>>>>> Stashed changes
39+
40+
release:
41+
@make -f release.Makefile release
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
diff --cc src/handlers/merge_conflict.rs
2+
index 888eee8b,7ea2e9d3..00000000
3+
--- a/src/handlers/merge_conflict.rs
4+
+++ b/src/handlers/merge_conflict.rs
5+
@@@ -5,7 -5,7 +5,11 @@@ use crate::utils::process
6+
impl<'a> StateMachine<'a> {
7+
pub fn handle_merge_confict_line(&mut self) -> std::io::Result<bool> {
8+
self.painter.emit()?;
9+
++<<<<<<< HEAD
10+
+ // hello
11+
++=======
12+
+ // bye
13+
++>>>>>>> b
14+
let mut handled_line = false;
15+
if matches!(self.state, State::Unknown) {
16+
if let Some(process::CallingProcess::GitShow(_, extension)) =
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
diff --cc src/handlers/merge_conflict.rs
2+
index 888eee8b,7ea2e9d3..00000000
3+
--- a/src/handlers/merge_conflict.rs
4+
+++ b/src/handlers/merge_conflict.rs
5+
@@@ -5,7 -5,7 +5,12 @@@ use crate::utils::process
6+
impl<'a> StateMachine<'a> {
7+
pub fn handle_merge_confict_line(&mut self) -> std::io::Result<bool> {
8+
self.painter.emit()?;
9+
++<<<<<<< HEAD
10+
+ // hello
11+
++||||||| e641341d
12+
++=======
13+
+ // bye
14+
++>>>>>>> b
15+
let mut handled_line = false;
16+
if matches!(self.state, State::Unknown) {
17+
if let Some(process::CallingProcess::GitShow(_, extension)) =

0 commit comments

Comments
 (0)