Properly highlight lines around '\ No newline at end of file'
This commit is contained in:
parent
577f2fb47a
commit
0e992a3b4e
5 changed files with 24 additions and 7 deletions
|
@ -8,6 +8,11 @@
|
||||||
- if left[:type] == 'match'
|
- if left[:type] == 'match'
|
||||||
= render "projects/diffs/match_line_parallel", { line: left[:text],
|
= render "projects/diffs/match_line_parallel", { line: left[:text],
|
||||||
line_old: left[:number], line_new: right[:number] }
|
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
|
- else
|
||||||
%td.old_line{id: left[:line_code], class: "#{left[:type]}"}
|
%td.old_line{id: left[:line_code], class: "#{left[:type]}"}
|
||||||
= link_to raw(left[:number]), "##{left[:line_code]}", id: left[:line_code]
|
= link_to raw(left[:number]), "##{left[:line_code]}", id: left[:line_code]
|
||||||
|
|
|
@ -15,6 +15,10 @@
|
||||||
- if type == "match"
|
- if type == "match"
|
||||||
= render "projects/diffs/match_line", {line: line.text,
|
= 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}
|
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
|
- else
|
||||||
%td.old_line
|
%td.old_line
|
||||||
= link_to raw(type == "new" ? " " : line_old), "##{line_code}", id: line_code
|
= link_to raw(type == "new" ? " " : line_old), "##{line_code}", id: line_code
|
||||||
|
|
|
@ -14,7 +14,7 @@ module Gitlab
|
||||||
def highlight
|
def highlight
|
||||||
@diff_lines.each_with_index do |diff_line, i|
|
@diff_lines.each_with_index do |diff_line, i|
|
||||||
# ignore highlighting for "match" lines
|
# 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)
|
rich_line = highlight_line(diff_line, i)
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ module Gitlab
|
||||||
def highlight_line(diff_line, index)
|
def highlight_line(diff_line, index)
|
||||||
return html_escape(diff_line.text) unless diff_file.diff_refs
|
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
|
case diff_line.type
|
||||||
when 'new', nil
|
when 'new', nil
|
||||||
|
|
|
@ -62,7 +62,7 @@ module Gitlab
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
skip_next = true
|
skip_next = true
|
||||||
when 'old', nil
|
when 'old', 'nonewline', nil
|
||||||
# Left side has text removed, right side doesn't have any change
|
# Left side has text removed, right side doesn't have any change
|
||||||
# No next line code, no new line number, no new line text
|
# No next line code, no new line number, no new line text
|
||||||
lines << {
|
lines << {
|
||||||
|
|
|
@ -26,6 +26,10 @@ module Gitlab
|
||||||
lines_obj << Gitlab::Diff::Line.new(full_line, type, line_obj_index, line_old, line_new)
|
lines_obj << Gitlab::Diff::Line.new(full_line, type, line_obj_index, line_old, line_new)
|
||||||
line_obj_index += 1
|
line_obj_index += 1
|
||||||
next
|
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
|
else
|
||||||
type = identification_type(line)
|
type = identification_type(line)
|
||||||
lines_obj << Gitlab::Diff::Line.new(full_line, type, line_obj_index, line_old, line_new)
|
lines_obj << Gitlab::Diff::Line.new(full_line, type, line_obj_index, line_old, line_new)
|
||||||
|
@ -33,10 +37,13 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
if line[0] == "+"
|
case line[0]
|
||||||
|
when "+"
|
||||||
line_new += 1
|
line_new += 1
|
||||||
elsif line[0] == "-"
|
when "-"
|
||||||
line_old += 1
|
line_old += 1
|
||||||
|
when "\\"
|
||||||
|
# No increment
|
||||||
else
|
else
|
||||||
line_new += 1
|
line_new += 1
|
||||||
line_old += 1
|
line_old += 1
|
||||||
|
@ -59,9 +66,10 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def identification_type(line)
|
def identification_type(line)
|
||||||
if line[0] == "+"
|
case line[0]
|
||||||
|
when "+"
|
||||||
"new"
|
"new"
|
||||||
elsif line[0] == "-"
|
when "-"
|
||||||
"old"
|
"old"
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
|
|
Loading…
Reference in a new issue