summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2016-01-22 07:37:47 +0000
committerRobert Speicher <robert@gitlab.com>2016-01-22 07:37:47 +0000
commit2fed8bf390aa89a854ac5452aa934076cd426a81 (patch)
treebca5a3fe0d321424fe6755ab8441485594ef1c7d
parent87867018f3157c617e489c5edbd127055571b11f (diff)
parent3db24ec9e80369834ccf7d2423808fcf5e51b5a6 (diff)
downloadgitlab-ce-2fed8bf390aa89a854ac5452aa934076cd426a81.tar.gz
Merge branch 'fix-diff-comments' into 'master'
More highlighted diff fixes See merge request !2545
-rw-r--r--app/views/projects/diffs/_text_file.html.haml3
-rw-r--r--lib/gitlab/diff/highlight.rb9
-rw-r--r--lib/gitlab/diff/parallel_diff.rb4
3 files changed, 10 insertions, 6 deletions
diff --git a/app/views/projects/diffs/_text_file.html.haml b/app/views/projects/diffs/_text_file.html.haml
index d9f2dce1389..5e835b10e1f 100644
--- a/app/views/projects/diffs/_text_file.html.haml
+++ b/app/views/projects/diffs/_text_file.html.haml
@@ -6,6 +6,7 @@
%table.text-file.code.js-syntax-highlight{ class: too_big ? 'hide' : '' }
- last_line = 0
+ - raw_diff_lines = diff_file.diff_lines
- diff_file.highlighted_diff_lines.each_with_index do |line, index|
- type = line.type
- last_line = line.new_pos
@@ -31,7 +32,7 @@
- if @reply_allowed
- comments = @line_notes.select { |n| n.line_code == line_code && n.active? }.sort_by(&:created_at)
- unless comments.empty?
- = render "projects/notes/diff_notes_with_reply", notes: comments, line: line.text
+ = render "projects/notes/diff_notes_with_reply", notes: comments, line: raw_diff_lines[index].text
- if last_line > 0
= render "projects/diffs/match_line", {line: "",
diff --git a/lib/gitlab/diff/highlight.rb b/lib/gitlab/diff/highlight.rb
index 9283b5e185d..a7f925ce134 100644
--- a/lib/gitlab/diff/highlight.rb
+++ b/lib/gitlab/diff/highlight.rb
@@ -16,9 +16,10 @@ module Gitlab
end
def highlight
- @diff_lines.each_with_index do |diff_line, i|
+ @diff_lines.map.with_index do |diff_line, i|
+ diff_line = diff_line.dup
# ignore highlighting for "match" lines
- next if diff_line.type == 'match' || diff_line.type == 'nonewline'
+ next diff_line if diff_line.type == 'match' || diff_line.type == 'nonewline'
rich_line = highlight_line(diff_line, i)
@@ -27,9 +28,9 @@ module Gitlab
end
diff_line.text = rich_line.html_safe
- end
- @diff_lines
+ diff_line
+ end
end
private
diff --git a/lib/gitlab/diff/parallel_diff.rb b/lib/gitlab/diff/parallel_diff.rb
index c0db3559e3a..74f9b3c050a 100644
--- a/lib/gitlab/diff/parallel_diff.rb
+++ b/lib/gitlab/diff/parallel_diff.rb
@@ -11,7 +11,8 @@ module Gitlab
lines = []
skip_next = false
- diff_file.highlighted_diff_lines.each do |line|
+ highlighted_diff_lines = diff_file.highlighted_diff_lines
+ highlighted_diff_lines.each do |line|
full_line = line.text
type = line.type
line_code = generate_line_code(diff_file.file_path, line)
@@ -21,6 +22,7 @@ module Gitlab
next_line = diff_file.next_line(line.index)
if next_line
+ next_line = highlighted_diff_lines[next_line.index]
next_line_code = generate_line_code(diff_file.file_path, next_line)
next_type = next_line.type
next_line = next_line.text