Skip to content
This repository was archived by the owner on Sep 8, 2018. It is now read-only.

Commit 4fe2456

Browse files
committed
Wrap around file instead of beeping
This mirrors the behavior of find-and-replace, wrap around to the beginning/end of the file to find the next/previous diff. Closes #8
1 parent b4e44b6 commit 4fe2456

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

Diff for: lib/git-diff-view.coffee

+18-8
Original file line numberDiff line numberDiff line change
@@ -39,30 +39,40 @@ class GitDiffView
3939
moveToNextDiff: ->
4040
cursorLineNumber = @editor.getCursorBufferPosition().row + 1
4141
nextDiffLineNumber = null
42+
firstDiffLineNumber = null
4243
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
4547
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?
4854

4955
@moveToLineNumber(nextDiffLineNumber)
5056

5157
moveToPreviousDiff: ->
5258
cursorLineNumber = @editor.getCursorBufferPosition().row + 1
5359
previousDiffLineNumber = -1
60+
lastDiffLineNumber = -1
5461
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
5769

5870
@moveToLineNumber(previousDiffLineNumber)
5971

6072
moveToLineNumber: (lineNumber=-1) ->
6173
if lineNumber >= 0
6274
@editor.setCursorBufferPosition([lineNumber, 0])
6375
@editor.moveCursorToFirstCharacterOfLine()
64-
else
65-
atom.beep()
6676

6777
unsubscribeFromBuffer: ->
6878
if @buffer?

Diff for: spec/git-diff-spec.coffee

+13-5
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,21 @@ describe "GitDiff package", ->
8383
editorView.trigger 'git-diff:move-to-next-diff'
8484
expect(editor.getCursorBufferPosition()).toEqual [4, 4]
8585

86-
spyOn(atom, 'beep')
86+
editorView.trigger 'git-diff:move-to-previous-diff'
87+
expect(editor.getCursorBufferPosition()).toEqual [0, 0]
88+
89+
it "wraps around to the first/last diff in the file", ->
90+
editor.insertText('a')
91+
editor.setCursorBufferPosition([5])
92+
editor.deleteLine()
93+
advanceClock(editor.getBuffer().stoppedChangingDelay)
94+
95+
editor.setCursorBufferPosition([0])
8796
editorView.trigger 'git-diff:move-to-next-diff'
88-
expect(atom.beep.callCount).toBe 1
97+
expect(editor.getCursorBufferPosition()).toEqual [4, 4]
8998

90-
editorView.trigger 'git-diff:move-to-previous-diff'
99+
editorView.trigger 'git-diff:move-to-next-diff'
91100
expect(editor.getCursorBufferPosition()).toEqual [0, 0]
92101

93-
atom.beep.reset()
94102
editorView.trigger 'git-diff:move-to-previous-diff'
95-
expect(atom.beep.callCount).toBe 1
103+
expect(editor.getCursorBufferPosition()).toEqual [4, 4]

0 commit comments

Comments
 (0)