@@ -39,30 +39,40 @@ class GitDiffView
39
39
moveToNextDiff : ->
40
40
cursorLineNumber = @editor .getCursorBufferPosition ().row + 1
41
41
nextDiffLineNumber = null
42
+ firstDiffLineNumber = null
42
43
hunks = @diffs [@editor .getPath ()] ? []
43
- for {newStart} in hunks when newStart > cursorLineNumber
44
- if nextDiffLineNumber?
44
+ for {newStart} in hunks
45
+ if newStart > cursorLineNumber
46
+ nextDiffLineNumber ?= newStart - 1
45
47
nextDiffLineNumber = Math .min (newStart - 1 , nextDiffLineNumber)
46
- else
47
- nextDiffLineNumber = newStart - 1
48
+
49
+ firstDiffLineNumber ?= newStart - 1
50
+ firstDiffLineNumber = Math .min (newStart - 1 , firstDiffLineNumber)
51
+
52
+ # Wrap around to the first diff in the file
53
+ nextDiffLineNumber = firstDiffLineNumber unless nextDiffLineNumber?
48
54
49
55
@ moveToLineNumber (nextDiffLineNumber)
50
56
51
57
moveToPreviousDiff : ->
52
58
cursorLineNumber = @editor .getCursorBufferPosition ().row + 1
53
59
previousDiffLineNumber = - 1
60
+ lastDiffLineNumber = - 1
54
61
hunks = @diffs [@editor .getPath ()] ? []
55
- for {newStart} in hunks when newStart < cursorLineNumber
56
- previousDiffLineNumber = Math .max (newStart - 1 , previousDiffLineNumber)
62
+ for {newStart} in hunks
63
+ if newStart < cursorLineNumber
64
+ previousDiffLineNumber = Math .max (newStart - 1 , previousDiffLineNumber)
65
+ lastDiffLineNumber = Math .max (newStart - 1 , lastDiffLineNumber)
66
+
67
+ # Wrap around to the last diff in the file
68
+ previousDiffLineNumber = lastDiffLineNumber if previousDiffLineNumber is - 1
57
69
58
70
@ moveToLineNumber (previousDiffLineNumber)
59
71
60
72
moveToLineNumber : (lineNumber = - 1 ) ->
61
73
if lineNumber >= 0
62
74
@editor .setCursorBufferPosition ([lineNumber, 0 ])
63
75
@editor .moveCursorToFirstCharacterOfLine ()
64
- else
65
- atom .beep ()
66
76
67
77
unsubscribeFromBuffer : ->
68
78
if @buffer ?
0 commit comments