Switching back to the new flexbox and re-introducing a scrollable-content node that the flexbox is applied to. This has no height settings so it grows to contains the gutter and lines. The editor outside of it has a width / height of 100% of its container plus overflow-y of scroll. Trying to apply flexbox AND a 100% height + scroll all to the editor causes display artifacts.
The lines element is now display: table and contained inside of the
scroller. This means the lines element always expands to contain all
lines, which allows absolute positioning inside of it to be relative to
the entire scroll contents, not just to the currently visible area.
Giving the hidden text area a fixed position was confusing webkit and
making scroll behavior really odd. Using position: absolute and setting
the z-index so it's behind the editor seems to make scrolling behave
more normally.
Now we'll be able to listen for textInput events, which give us better
information about what character is being entered in the presence of
multi-keystroke compositions like alt-u,u for ü