 
     # I'm glad Atom has an optional `column` param to subtract spaces from
     # soft-tabs, though I don't see it used anywhere in the core.
-
-    console.log('tabs:', tabs, 'offset:', offset)
-
+    # It looks like for hard tabs, the "tabs" input can be fractional and
+    # the "column" input is ignored...?
     indent = editor.buildIndentString(tabs, column=offset)
 
-    console.log('len:', indent.length, 'str: "', indent, '"')
-
-    # Set the indent
-    editor.getBuffer().setTextInRange([[row, 0], [row, editor.indentationForBufferRow(row) * tabLength]], indent)
+    # The range of text to replace with our indent
+    # will need to change this for hard tabs, especially tricky for when
+    # hard tabs have mixture of tabs + spaces, which they can judging from
+    # the editor.buildIndentString function
+    startRange = [row, 0]
+    stopRange = [row, editor.indentationForBufferRow(row) * tabLength]
+    editor.getBuffer().setTextInRange([startRange, stopRange], indent)
 
 
   parseLines: (lines) ->


            # if stringDelimiter is set, then we are in a string
            if stringDelimiter.length
                # we are currently in a string
                if isEscaped
                    isEscaped = false
                else
                    switch c
                        when stringDelimiter
                            stringDelimiter = []
                        when '\\'
                            isEscaped = true
            else
                if c == '#'
                    break

    # if we are in a string, this tells us what character introduced the string
    # i.e., did this string start with ' or with "?
    stringDelimiter = []

    # NOTE: this parsing will only be correct if the python code is well-formed
    #       statements like "[0, (1, 2])" might break the parsing

    # loop over each line, adding to each stack
    for row in [0 .. lines.length-1]
