Unfortunately `?w=1` doesn't help much with the changes here. The logic isn't really just the original logic wrapped with an iterator over the selections. It's somewhat simplified because we no longer deal with cases where the cursor is after non-whitespace characters (we bail early), so that gets rid of some logic in the "move left" (direction -1) case.

It's probably better to just review the new code as a whole rather than looking at the diffs (and maybe verifying that I'm testing enough cases in the new unit tests to be confident that nothing important is broken in the single-selection case).