Properly highlight lines around '\ No newline at end of file'

This commit is contained in:
Douwe Maan 2016-01-20 19:20:13 +01:00
parent 577f2fb47a
commit 0e992a3b4e
5 changed files with 24 additions and 7 deletions

View File

@ -8,6 +8,11 @@
- if left[:type] == 'match'
= render "projects/diffs/match_line_parallel", { line: left[:text],
line_old: left[:number], line_new: right[:number] }
- elsif left[:type] == 'nonewline'
%td.old_line
%td.line_content.parallel.matched= left[:text]
%td.new_line
%td.line_content.parallel.matched= left[:text]
- else
%td.old_line{id: left[:line_code], class: "#{left[:type]}"}
= link_to raw(left[:number]), "##{left[:line_code]}", id: left[:line_code]

View File

@ -15,6 +15,10 @@
- if type == "match"
= render "projects/diffs/match_line", {line: line.text,
line_old: line_old, line_new: line.new_pos, bottom: false, new_file: diff_file.new_file}
- elsif type == 'nonewline'
%td.old_line.diff-line-num
%td.new_line.diff-line-num
%td.line_content.matched= line.text
- else
%td.old_line
= link_to raw(type == "new" ? " " : line_old), "##{line_code}", id: line_code

View File

@ -14,7 +14,7 @@ module Gitlab
def highlight
@diff_lines.each_with_index do |diff_line, i|
# ignore highlighting for "match" lines
next if diff_line.type == 'match'
next if diff_line.type == 'match' || diff_line.type == 'nonewline'
rich_line = highlight_line(diff_line, i)
@ -33,7 +33,7 @@ module Gitlab
def highlight_line(diff_line, index)
return html_escape(diff_line.text) unless diff_file.diff_refs
line_prefix = diff_line.text.match(/\A([+-])/) ? $1 : ' '
line_prefix = diff_line.text.match(/\A(.)/) ? $1 : ' '
case diff_line.type
when 'new', nil

View File

@ -62,7 +62,7 @@ module Gitlab
}
}
skip_next = true
when 'old', nil
when 'old', 'nonewline', nil
# Left side has text removed, right side doesn't have any change
# No next line code, no new line number, no new line text
lines << {

View File

@ -26,6 +26,10 @@ module Gitlab
lines_obj << Gitlab::Diff::Line.new(full_line, type, line_obj_index, line_old, line_new)
line_obj_index += 1
next
elsif line[0] == '\\'
type = 'nonewline'
lines_obj << Gitlab::Diff::Line.new(full_line, type, line_obj_index, line_old, line_new)
line_obj_index += 1
else
type = identification_type(line)
lines_obj << Gitlab::Diff::Line.new(full_line, type, line_obj_index, line_old, line_new)
@ -33,10 +37,13 @@ module Gitlab
end
if line[0] == "+"
case line[0]
when "+"
line_new += 1
elsif line[0] == "-"
when "-"
line_old += 1
when "\\"
# No increment
else
line_new += 1
line_old += 1
@ -59,9 +66,10 @@ module Gitlab
end
def identification_type(line)
if line[0] == "+"
case line[0]
when "+"
"new"
elsif line[0] == "-"
when "-"
"old"
else
nil