@@ -149,15 +149,17 @@ private void ParseLine(string line)
149149
150150 _oldLine = int . Parse ( match . Groups [ 1 ] . Value ) ;
151151 _newLine = int . Parse ( match . Groups [ 2 ] . Value ) ;
152- _result . TextDiff . Lines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Indicator , line , 0 , 0 ) ) ;
152+ _last = new Models . TextDiffLine ( Models . TextDiffLineType . Indicator , line , 0 , 0 ) ;
153+ _result . TextDiff . Lines . Add ( _last ) ;
153154 }
154155 }
155156 else
156157 {
157158 if ( line . Length == 0 )
158159 {
159160 ProcessInlineHighlights ( ) ;
160- _result . TextDiff . Lines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Normal , "" , _oldLine , _newLine ) ) ;
161+ _last = new Models . TextDiffLine ( Models . TextDiffLineType . Normal , "" , _oldLine , _newLine ) ;
162+ _result . TextDiff . Lines . Add ( _last ) ;
161163 _oldLine ++ ;
162164 _newLine ++ ;
163165 return ;
@@ -173,7 +175,8 @@ private void ParseLine(string line)
173175 return ;
174176 }
175177
176- _deleted . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Deleted , line . Substring ( 1 ) , _oldLine , 0 ) ) ;
178+ _last = new Models . TextDiffLine ( Models . TextDiffLineType . Deleted , line . Substring ( 1 ) , _oldLine , 0 ) ;
179+ _deleted . Add ( _last ) ;
177180 _oldLine ++ ;
178181 }
179182 else if ( ch == '+' )
@@ -185,7 +188,8 @@ private void ParseLine(string line)
185188 return ;
186189 }
187190
188- _added . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Added , line . Substring ( 1 ) , 0 , _newLine ) ) ;
191+ _last = new Models . TextDiffLine ( Models . TextDiffLineType . Added , line . Substring ( 1 ) , 0 , _newLine ) ;
192+ _added . Add ( _last ) ;
189193 _newLine ++ ;
190194 }
191195 else if ( ch != '\\ ' )
@@ -196,7 +200,8 @@ private void ParseLine(string line)
196200 {
197201 _oldLine = int . Parse ( match . Groups [ 1 ] . Value ) ;
198202 _newLine = int . Parse ( match . Groups [ 2 ] . Value ) ;
199- _result . TextDiff . Lines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Indicator , line , 0 , 0 ) ) ;
203+ _last = new Models . TextDiffLine ( Models . TextDiffLineType . Indicator , line , 0 , 0 ) ;
204+ _result . TextDiff . Lines . Add ( _last ) ;
200205 }
201206 else
202207 {
@@ -207,11 +212,16 @@ private void ParseLine(string line)
207212 return ;
208213 }
209214
210- _result . TextDiff . Lines . Add ( new Models . TextDiffLine ( Models . TextDiffLineType . Normal , line . Substring ( 1 ) , _oldLine , _newLine ) ) ;
215+ _last = new Models . TextDiffLine ( Models . TextDiffLineType . Normal , line . Substring ( 1 ) , _oldLine , _newLine ) ;
216+ _result . TextDiff . Lines . Add ( _last ) ;
211217 _oldLine ++ ;
212218 _newLine ++ ;
213219 }
214220 }
221+ else if ( line . Equals ( "\\ No newline at end of file" , StringComparison . Ordinal ) )
222+ {
223+ _last . NoNewLineEndOfFile = true ;
224+ }
215225 }
216226 }
217227
@@ -262,6 +272,7 @@ private void ProcessInlineHighlights()
262272 private readonly Models . DiffResult _result = new Models . DiffResult ( ) ;
263273 private readonly List < Models . TextDiffLine > _deleted = new List < Models . TextDiffLine > ( ) ;
264274 private readonly List < Models . TextDiffLine > _added = new List < Models . TextDiffLine > ( ) ;
275+ private Models . TextDiffLine _last = null ;
265276 private int _oldLine = 0 ;
266277 private int _newLine = 0 ;
267278 }
0 commit comments