[ mona / prog / sol ]


Re-implementing Kakoune

1 2020-03-06 08:33

I've been using http://kakoune.org/ for the past 3-4 months now and the design of it is pretty good and fits me personally however the implementation feels very hack-y and lacking, especially the way plugins are written (even though its users claim they're not plugins) and its syntax highlighting engine.

I'm an intermediate programmer with no real projects and I'd like to dedicate sometime to master the language I assume I'm familiar with. I am unsure whether writing my own text editor is a difficult task for meor not, I feel like the devs behind Kakoune are much experienced in comparison so my piece of software will most likely be inferior in comparison.

I'm starting to get interested in the scheme world and really want to design a text editor that is powered by Guile much like emacs. I'm aware that Zile Guile and Emacs Zile exist but both them seem rather dead and unsure about how usable and maintainable they are.

Kakoune's editing design is very different from Vim/Vis that I'm quite sure that it's impossible to re-implement on top of it and for that reason that if I go on to write my own text editor, I'll make sure that it's more of a Zile inspired one rather than a monolithic static one.

I'd like to implement Kakoune on top of Emacs but how practical is Elisp compared to Guile outside of Emacs? I want it to be expanded a language that the user can adopt as their "general scripting language" instead of just a domain-specific language. Originally this idea came in mind because I was looking at high level languages to learn and that's how I got interested in Guile and still looking to explore more languages that I can use for prototyping something quickly in.

The uncertainty of my own implementation becoming usable or any better than Kakoune's is making me think maybe I should just give up and force myself to settle with a popular modal editing plugin on top of Emacs so I could dive in the Emacs world.

How practical is it to write your own text editor while making sure it'll implement modern features e.g., syntax highlighting and LSP-client and preferably without forcing too many design choices on the user? What design principles should I follow for implementing a text editor? and should one expect implementation to come to existence after a short period of research/general reading?

I suppose it's a general thread about implementing text editors too.



do not edit these