ChrisPenner / rasa

Extremely modular text editor built in Haskell
GNU General Public License v3.0
616 stars 42 forks source link

Convert much more of the editor over to the free monad #39

Closed ChrisPenner closed 7 years ago

ChrisPenner commented 7 years ago

Extensions are no longer lens-based. This gives us more power and flexibility to change the editor core later; easier to add more features later than remove them.

Due to the nature of this; the state monad has been completely removed from both BufAction and Action (which makes it easier for folks to use as well; since lenses are no longer required for anything).

This'll also make testing a bit easier in the long run.

BufAction's embed properly now which is also nice.

ChrisPenner commented 7 years ago

@siddhanathan I think I've addressed everything 😁 ✨

Thanks so much for the feedback! Let me know what you think.

ghost commented 7 years ago

LGTM.

General comments; use text (lazy or strict, doesn't matter) for small strings, and rope for large strings (full buffer definitely needs to be rope). You don't have to address that in this PR, but just something to be aware about. The problem with Rope is it's too fancy for small strings. General rule of thumb would be, anything greater than 1200 characters should be rope.