   rangeStart.union(rangeEnd)
 
 getTokenizedLineForRow = (editor, row) ->
-  editor.displayBuffer.tokenizedBuffer.tokenizedLineForRow(row)
+  if editor.tokenizedBuffer?
+    editor.tokenizedBuffer.tokenizedLineForRow(row)
+  else
+    # [TODO] Remove this when min engine update to 1.9.0
+    editor.displayBuffer.tokenizedBuffer.tokenizedLineForRow(row)
 
 getScopesForTokenizedLine = (line) ->
   for tag in line.tags when tag < 0 and (tag % 2 is -1)

    tokenIterator = tokenizedLine.getTokenIterator()
    for tag in tokenizedLine.tags
      tokenIterator.next()
      if tag > 0
        column += switch
          when tokenIterator.isHardTab() then 1
          when tokenIterator.isSoftWrapIndentation() then 0
          else tag
      else if (tag % 2 is -1)
        scope = atom.grammars.scopeForId(tag)
        position = new Point(row, column)
        results.push {scope, position, stop}

    results = results.filter(isValidToken)
    results.reverse() if direction is 'backward'

  ranges = [ranges] unless _.isArray(ranges)
  return null unless ranges.length

  markers = ranges.map (range) ->
    editor.markBufferRange range,
      invalidate: options.invalidate ? 'never'
      persistent: options.persistent ? false

  for marker in markers
    editor.decorateMarker marker,
