FLEX banner

FLEX

9 devlogs
30h 20m 32s

Flex is a terminal text editor built for speed, flexibility, and frictionless movement — a powerful alternative to Neovim. It is built around two core modes: JMP and EDT. Every current feature, and every feature that will ever be added, lives unde…

Flex is a terminal text editor built for speed, flexibility, and frictionless movement — a powerful alternative to Neovim. It is built around two core modes: JMP and EDT. Every current feature, and every feature that will ever be added, lives under one of these two modes. This isn’t arbitrary — it reflects a deliberate ideology: editing and navigating are fundamentally different mental operations, and the editor should reflect that.
JMP — Jump mode. Navigate, jump, and move through your code without touching your file.
EDT — Edit mode. Insert, delete, and modify text.
Future modes will extend this system, not replace it. The JMP/EDT split is the foundation flex is built on, keeping in mind a lightweight feel along with uniform optimization.

This project uses AI

AI use was strictly restricted to the readme.

Demo Repository

Loading README...

Hursh

I started on some pretty fun stuff (: I’ve taken a bit of a leap but have decided to write my own config language for FLEX, I couldn’t find any other such languages with the features / ideology i was looking for. I am also in the middle of fixing a bug with the vpshiftX motion, and finished up refactoring the current status of the new buffer logic (optimized), abstracting it (enough to get me by for now) and tested intermediary piece table logic, first time working with ocaml ppx -_- as many downsides as there are to using rust though you can’t deny how powerful & handy its macros end up being cn u (:

Attachment
0
Hursh

exciting update! Started optimizations. Currently mid way to impl a Weighted B tree sort of rope buffer with piece tables. for the main edtr buffer. I also plan on adding multiple buffers so im trying to keep the logic abstracted enough to the point where i wouldnt need to refactor the entire buffer optimization / handler logic to simply interface w/ it using something of an api. Also keeping in mind the config/plugin ideology i want to keep the internals as transparent as possible too!

Attachment
0
Hursh

so, once again, the config system is currently in ocaml but i plan on changing it very soon! I experimented with lua but it might not be a great for for the kind of config I am going for. I pretty much have the keybindings system down. Also had to refactor edtr.pending which earlier considered Some “” to be leader! the action is currently just a function with a ctx parameter that I plan on exposing. currently, it only holds one value, i.e. the current like you are on!

Attachment
0
Hursh

well i forgot to devlog :nervous_smile but on the bright side we’ve made some real good progress on the editor! gutters are a thing now. currently working on a config system. I want to focus on making the config be as flexible as possible , even if that means making it eventually into just an api, supplying dynamic state variables to the config function that would be written in ocaml (for now) and being able to interact with the main editor program itself! also the themes look a tiny bit better ((:

Attachment
0
Hursh

vpshift fixes & status refactor + appearence enhancements (see draw_status(). May be done with themes for now, although will compare my results with other themes. I suspect some slight differences may simply be due to different ts_parsers / scms or perhaps an lsp thing ;-; altho am fairly tentative regarding the same.

Attachment
0
Hursh

tentative textmate > ts mappings.

Attachment
0
Hursh

actions++ along with some fixed dynamics. edtr.vp.left had some bugs too which im about done fixing. added fallbacks to theme parser too!

Attachment
0
Hursh

started the project- got basic motions, mode system and themes out of the way. theme implementation partial, should be complete by next or next to next devlog. ive chosen .vsc as my supported themes format for now

Attachment
0
Hursh

A code editor (:

Attachment
0