Thanks a lot for checking out the code! I addressed most of your comments.
I mostly refrain from checks like '--' or double-quoting everything when I'm sure of the input (even though shellcheck is not happy about it).
For example, argument passed to move_cursor will never start with dash.
For third point, I don't see any problems with that - am I missing something? Especially when I give freedom to set any attribute (like bold, underline, etc).