I wrote a big 'ole blog post about the process of developing the text editor I now daily-drive, complete with technical details about the implementation and some fun solutions I found along the way.

Perhaps some of you folks will enjoy it.

https://blog.jsbarretto.com/post/text-editor

@jsbarretto "have no desire to turn this into an exercise in regex engine design"

Bold words for someone who designed and implemented a Regex engine multiple times over, benchmarked them, choose one, integrated it into the project and wrote the largest section yet of the post on Regex lol

@esoterra That is a fair point. It's one of those problems that tends to just suck you in.
@jsbarretto nice! What do you use for lsp/diagnostics?
@jint Nothing, yet! If I want live diagnostics I'll just use `bacon` (file watcher for Rust) in a terminal pane. I might hack in LSP support in the future but it's not something I feel a huge need to do yet. If I ever do it, I'll document my approach!
@jsbarretto takes me back. I used to always have 2 lanes with vim and watch gcc test.c in uni haha. I dont think i can live without goto definition these days!
@jsbarretto That bit about file filtering heuristics is ingeniously simple. Makes me wish every file search system (looking at you Plasma Search) simply behaved this way
@DaforLynx I know, right? I've seen so many quick search menus, app menus, etc. that get this badly wrong because they're trying to do something too smart.

@jsbarretto "And, for god’s sake, enjoy the challenge and resist the urge to push the difficult bits off to a box of statistics. There is joy in struggle."

Amen to that 💗 Lately I love to read about hand made stuff like this. It's becoming more of a rare thing.

@jsbarretto Does it use Vim keybindings?

@lastcoder No, it's much closer to a rational GUI text editor. I've never been able to convince my brain to enjoy modal editing, despite several attempts.

There's a list of keybindings in the README if you are interested: https://git.jsbarretto.com/zesterer/zte

zte

zte

Personal Forgejo instance