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'
|
||||
= 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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 << {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue