     range.collapse()
     leftPixels = range.getClientRects()[0].left - Math.floor(@scrollView.offset().left) + Math.floor(@scrollLeft())
     range.detach()
+
+    @pixelLeftCache[cacheKey] = leftPixels
+
     leftPixels
 
   pixelOffsetForScreenPosition: (position) ->

    @pendingChanges = []
    @newCursors = []
    @newSelections = []

    if editSession?
      @edit(editSession)


  positionLeftForLineAndColumn: (lineElement, column) ->
    return 0 if column is 0

    @pixelLeftCache ?= {}
    cacheKey = lineElement.getAttribute('line-id')+':'+column

    if @pixelLeftCache[cacheKey]?
      #console.log 'hit', cacheKey
      return @pixelLeftCache[cacheKey]

    delta = 0
    iterator = document.createNodeIterator(lineElement, NodeFilter.SHOW_TEXT, acceptNode: -> NodeFilter.FILTER_ACCEPT)
    while textNode = iterator.nextNode()
