Problem:
- Extmark breaks lesson 3.1 of vim-01-beginner.tutor because when users
delete the line and put it elsewhere, the extmark doesn't move to the
put location.
- This doesn't mean the extmark implementation is bad though (note that
thanks to extmark, for the first time, we can make lesson 2.6 really
interactive), it's just that the tutor format has never been made for
kinds of lessons like lesson 3.1, which is why all "expected" in that
lesson are -1, which also means that lesson is not interactive in the
first place. Also see lesson 2.1.3 in vim-02-beginner, where the mark
is just used to mark the first line of the exercise, which also prove
my point.
Solution:
- For a not-really-interactive lesson like lesson 3.1, just use legacy
syntax. I borrow the old vimtutor's `--->` to mark the exercises of
the lesson.
- Less redundant interactive marks also make the json files smaller and
more maintainable.
Problem:
From https://matrix.to/#/!cylwlNXSwagQmZSkzs:matrix.org/$Ofj-TFIsEMbp0O9OhE8xuZSNi-nhRLtZTOgs6JRLNrs?via=matrix.org&via=gitter.im&via=mozilla.org
In lesson 2.6, users are asked to remove the second, forth and fifth
lines with `dd` command, then they are asked to undo twice to make the
text go back to original state. But after that, the mark ✗ appears
again, which confuses the user because they think they do something
wrong. This is a limitation with the current implementation, which is
based on line number only.
Solution:
Reimplement interactive marks as extmarks in Lua. This also make the
feature less fragile, as users can remove, add some arbitrary lines
without breaking the interactive marks.
Co-authored-by: Justin M. Keyes <justinkz@gmail.com>