@@ -8,7 +8,7 @@ use super::{
88 diff:: DiffLinePosition , patches:: HunkLines , utils:: work_dir,
99} ;
1010use crate :: error:: Result ;
11- use git2:: { DiffLine , Repository } ;
11+ use git2:: { DiffLine , DiffLineType , Repository } ;
1212use std:: {
1313 collections:: HashSet , convert:: TryFrom , fs:: File , io:: Read ,
1414} ;
@@ -82,8 +82,16 @@ pub(crate) fn apply_selection(
8282 let mut new_content = NewFromOldContent :: default ( ) ;
8383 let lines = lines. iter ( ) . collect :: < HashSet < _ > > ( ) ;
8484
85- let char_added = if reverse { '-' } else { '+' } ;
86- let char_deleted = if reverse { '+' } else { '-' } ;
85+ let added = if reverse {
86+ DiffLineType :: Deletion
87+ } else {
88+ DiffLineType :: Addition
89+ } ;
90+ let deleted = if reverse {
91+ DiffLineType :: Addition
92+ } else {
93+ DiffLineType :: Deletion
94+ } ;
8795
8896 let mut first_hunk_encountered = false ;
8997 for hunk in hunks {
@@ -122,36 +130,38 @@ pub(crate) fn apply_selection(
122130 . trim( )
123131 ) ;
124132
125- if hunk_line. origin ( ) == '<'
126- || hunk_line. origin ( ) == '>'
133+ if hunk_line. origin_value ( )
134+ == DiffLineType :: DeleteEOFNL
135+ || hunk_line. origin_value ( )
136+ == DiffLineType :: AddEOFNL
127137 {
128138 break ;
129139 }
130140
131141 if ( is_staged && !selected_line)
132142 || ( !is_staged && selected_line)
133143 {
134- if hunk_line. origin ( ) == char_added {
144+ if hunk_line. origin_value ( ) == added {
135145 new_content. add_from_hunk ( hunk_line) ?;
136146 if is_staged {
137147 new_content. skip_old_line ( ) ;
138148 }
139- } else if hunk_line. origin ( ) == char_deleted {
149+ } else if hunk_line. origin_value ( ) == deleted {
140150 if !is_staged {
141151 new_content. skip_old_line ( ) ;
142152 }
143153 } else {
144154 new_content. add_old_line ( old_lines) ;
145155 }
146156 } else {
147- if hunk_line. origin ( ) != char_added {
157+ if hunk_line. origin_value ( ) != added {
148158 new_content. add_from_hunk ( hunk_line) ?;
149159 }
150160
151161 if ( is_staged
152- && hunk_line. origin ( ) != char_deleted )
162+ && hunk_line. origin_value ( ) != deleted )
153163 || ( !is_staged
154- && hunk_line. origin ( ) != char_added )
164+ && hunk_line. origin_value ( ) != added )
155165 {
156166 new_content. skip_old_line ( ) ;
157167 }
0 commit comments