# Flow Control: a programmer's text editor This is my Zig text editor. It is very much a work-in-progress, but far enough along that I am daily driving it. https://github.com/neurocyte/flow/assets/1552770/97aae817-c209-4c08-bc65-0a0bf1f2d4c6 Build with the provided zig wrapper: ```shell ./zig build -Doptimize=ReleaseFast ``` The zig wrapper just fetches a known good version of zig nightly and places it in the .cache directory. Or use your own version of zig. Run with: ```shell zig-out/bin/flow ``` Place it in your path for convenient access. See --help for full command line. requirements: - A modern terminal with 24bit color and kitty keyboard protocol support (kitty and ghostty are the only recommended terminals at this time) - NerdFonts support - Linux or MacOS (help porting to *BSD or Windows is welcome!) - A UTF-8 locale (very important!) features: - fast TUI interface. no user interaction should take longer than one frame (6ms) (even debug builds) - tree sitter based syntax highlighting - multi cursor editing support - first class mouse support (yes, even with a scrollbar that actually works properly!) - vscode compatible keybindings (thanks to kitty keyboard protocol) - vim compatible keybindings (at least the basics, more to come) - good unicode support - hybrid rope/piece-table buffer for fast loading, saving and editing with hundreds of cursors - theme support (compatible with vscode themes via the flow-themes project) - infinite undo/redo (at least until you run out of ram) - stuff I've forgotten to mention... features in progress: - LSP support for linting and navigating - find in files - multi tty support (shared editor sessions across multiple ttys) - command palette - completion UI - persistent undo/redo features planned: - multi host editing - multi user editing