For example, if you type:
def length if @populated @items.length else 0 end end
then it’s impossible to put the cursor here:
Ie., between “tab stops”.
While auto-indenting like this is fine in theory, it makes cursor navigation non-deterministic. It means that if my cursor is at the “l” in “else”:
else ^ 0 end
…and I hit down-arrow, I end up not below the “l”, but one character to the right:
else 0 ^ end
That sort of thing breaks editing when you’re working fast. Let’s say you wanted to comment out all the lines. (There is surely a “comment out selection” command, but that’s beside the point.) You put your cursor here:
def length ^
In Sublime, you might hit “#”, arrow-down, arrow-left, “#”, arrow-down, arrow-left, etc. That doesn’t work in Atom, as arrow-left would put you on the wrong line. So in Atom you might hit “#”, arrow-down, “#”, arrow-down, etc., but then you end up with this beauty:
#def length # if @populated # @items.length # else # 0 # end e#nd
I don’t see a way for the API to let a package to modify this behaviour cleanly.