diff --git a/spec/display-buffer-spec.coffee b/spec/display-buffer-spec.coffee index 5b1883652..d39327a39 100644 --- a/spec/display-buffer-spec.coffee +++ b/spec/display-buffer-spec.coffee @@ -215,6 +215,19 @@ describe "DisplayBuffer", -> displayBuffer.setEditorWidthInChars(-1) expect(displayBuffer.editorWidthInChars).not.toBe -1 + it "sets ::scrollLeft to 0 and keeps it there when soft wrapping is enabled", -> + displayBuffer.setDefaultCharWidth(10) + displayBuffer.setWidth(50) + displayBuffer.manageScrollPosition = true + + displayBuffer.setSoftWrap(false) + displayBuffer.setScrollLeft(Infinity) + expect(displayBuffer.getScrollLeft()).toBeGreaterThan 0 + displayBuffer.setSoftWrap(true) + expect(displayBuffer.getScrollLeft()).toBe 0 + displayBuffer.setScrollLeft(10) + expect(displayBuffer.getScrollLeft()).toBe 0 + describe "primitive folding", -> beforeEach -> displayBuffer.destroy() diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 48392d089..f329f3025 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -204,6 +204,9 @@ class DisplayBuffer extends Model else @scrollLeft = Math.round(scrollLeft) + getMaxScrollLeft: -> + @getScrollWidth() - @getClientWidth() + getScrollRight: -> @scrollLeft + @width setScrollRight: (scrollRight) -> @setScrollLeft(scrollRight - @width) @@ -1075,7 +1078,9 @@ class DisplayBuffer extends Model @computeScrollWidth() if oldMaxLineLength isnt @maxLineLength computeScrollWidth: -> - @scrollWidth = @pixelPositionForScreenPosition([@longestScreenRow, @maxLineLength]).left + 1 + @scrollWidth = @pixelPositionForScreenPosition([@longestScreenRow, @maxLineLength]).left + @scrollWidth += 1 unless @getSoftWrap() + @setScrollLeft(Math.min(@getScrollLeft(), @getMaxScrollLeft())) handleBufferMarkersUpdated: => if event = @pendingChangeEvent