From 54396a7646c512d7e0ec2ce5a326416eea330161 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 6 Apr 2012 15:37:27 -0600 Subject: [PATCH] Fix bug where you can't move rightward over fold placeholders Fold placeholders needed to be real token objects so their screen / buffer deltas would be defined in ScreenLineFragment.proto.translateColumn --- spec/app/point-spec.coffee | 5 +++++ src/app/point.coffee | 4 ++-- src/app/renderer.coffee | 3 ++- src/app/token.coffee | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/spec/app/point-spec.coffee b/spec/app/point-spec.coffee index 0b6852e3b..322bac5f2 100644 --- a/spec/app/point-spec.coffee +++ b/spec/app/point-spec.coffee @@ -12,6 +12,11 @@ describe "Point", -> expect(new Point(1,2)).toEqual [1,2] expect(new Point(2,1)).not.toEqual [1,2] + describe "when one of the points has a row or column that is NaN", -> + it "returns false", -> + expect(new Point(1, 3)).not.toEqual new Point(NaN, 3) + expect(new Point(1, 3)).not.toEqual new Point(1, NaN) + describe "compare", -> it "returns 1, 0, or -1 based on whether the given point precedes, equals, or follows the receivers location in the buffer", -> expect(new Point(5, 0).compare(new Point(5, 0))).toBe 0 diff --git a/src/app/point.coffee b/src/app/point.coffee index 455755ac2..665c8a18e 100644 --- a/src/app/point.coffee +++ b/src/app/point.coffee @@ -57,7 +57,7 @@ class Point isEqual: (other) -> other = Point.fromObject(other) - @compare(other) == 0 + @row == other.row and @column == other.column isLessThan: (other) -> @compare(other) < 0 @@ -75,4 +75,4 @@ class Point "(#{@row}, #{@column})" toString: -> - "#{@row},#{@column}" \ No newline at end of file + "#{@row},#{@column}" diff --git a/src/app/renderer.coffee b/src/app/renderer.coffee index f5048c881..c0b3378b5 100644 --- a/src/app/renderer.coffee +++ b/src/app/renderer.coffee @@ -6,6 +6,7 @@ EventEmitter = require 'event-emitter' Range = require 'range' Fold = require 'fold' ScreenLineFragment = require 'screen-line-fragment' +Token = require 'token' foldPlaceholderLength = 3 module.exports = @@ -193,7 +194,7 @@ class Renderer folds.sort (a, b) -> a.compare(b) buildFoldPlaceholder: (fold) -> - token = { value: '...', type: 'fold-placeholder', fold, isAtomic: true } + token = new Token(value: '...', type: 'fold-placeholder', fold: fold, isAtomic: true) new ScreenLineFragment([token], token.value, [0, token.value.length], fold.getRange().toDelta()) screenLineRangeForBufferRange: (bufferRange) -> diff --git a/src/app/token.coffee b/src/app/token.coffee index 609974644..75bc588d2 100644 --- a/src/app/token.coffee +++ b/src/app/token.coffee @@ -4,7 +4,7 @@ class Token type: null isAtomic: null - constructor: ({@value, @type, @isAtomic, @bufferDelta}) -> + constructor: ({@value, @type, @isAtomic, @bufferDelta, @fold}) -> @screenDelta = @value.length @bufferDelta ?= @screenDelta