I believe what @aaron12394 is trying to say is that if you had visually saw and experienced what smart backspace indenting is doing, then you would have a more deep understanding on how to implement it for Atom. Which is a good point, However, if he really wanted this feature, he would try to explain it the best he can lol. Nonetheless, I will try my best to explain it by typing words out.
If the current line is indented deeper than surrounding lines, backspace moves it to be flush with surrounding lines.
If there are empty spaces on top then it will move the cursor up, while preserving the indention level. However if you keep backspacing until there are no longer empty lines above within a braces, then it will move up right next to the first line that initiated the surrounding block.
If the line above is blank or contains only whitespace characters, backspace deletes the blank line and preserves the indentation level of the current line.
Yes, this is correct. I tried my best answering that in the first question too.
If both of the above conditions are true, which one takes priority?
When we are using an IDE such as PhpStorm or IntelliJ. We initially set a code style which involves the tab spacing rules. It can either be 2 spaces, a tab, or whatever they had set it to be for their default tab space code style for that specific language. The IDE intelligently will know where to stop the cursor when backspacing because of the rule we set in the code style. Once it reaches the recommended tab space that is for that specific surrounding block, it will continue to move the cursor up if there are any empty lines.
For (1), does the line above or the line below the current line take priority?
Not sure what you meant by this question, however, I hope I had answered this already in my answers above, if not, then let me know!
If neither of the above conditions are true, backspace behaves normally?
It will move up next to the line that has initiated the surrounding block eventually. So backspacing would never bring take you anywhere before your recommended tab space that is for the surrounding block. The only way to go back is by holding SHIFT and TAB.
Is there a keybinding in PHPStorm to force normal backspace behavior?
I don’t believe there is a key binding for disabling or enabling (not to sure) the smart backspace behavior, BUT there is an option to turn it off or on in preferences by checking or unchecking a box.