{"id":18003715,"url":"https://github.com/neurocyte/flow","last_synced_at":"2025-05-15T01:09:06.286Z","repository":{"id":224418792,"uuid":"763201818","full_name":"neurocyte/flow","owner":"neurocyte","description":"Flow Control: a programmer's text editor","archived":false,"fork":false,"pushed_at":"2025-05-05T14:01:15.000Z","size":2499,"stargazers_count":902,"open_issues_count":25,"forks_count":52,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-10T13:57:11.532Z","etag":null,"topics":["language-server-client","language-server-protocol","text-editor","tree-sitter","tui","zig"],"latest_commit_sha":null,"homepage":"https://flow-control.dev","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neurocyte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-02-25T20:11:11.000Z","updated_at":"2025-05-10T09:42:47.000Z","dependencies_parsed_at":"2024-02-25T21:31:08.283Z","dependency_job_id":"a2191b9e-c766-4f69-b80a-0317ff2c0879","html_url":"https://github.com/neurocyte/flow","commit_stats":{"total_commits":833,"total_committers":14,"mean_commits":59.5,"dds":"0.043217286914765896","last_synced_commit":"dbc4707001be477c227229f6f9dec46bbe4bb666"},"previous_names":["neurocyte/flow"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurocyte%2Fflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurocyte%2Fflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurocyte%2Fflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neurocyte%2Fflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neurocyte","download_url":"https://codeload.github.com/neurocyte/flow/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254042,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["language-server-client","language-server-protocol","text-editor","tree-sitter","tui","zig"],"created_at":"2024-10-30T00:10:36.871Z","updated_at":"2025-05-15T01:09:01.279Z","avatar_url":"https://github.com/neurocyte.png","language":"Zig","readme":"# Flow Control: a programmer's text editor\n\nThis is my Zig text editor. It is under active development, but usually stable\nand is my daily driver for most things coding related.\n\nhttps://github.com/neurocyte/flow/assets/1552770/97aae817-c209-4c08-bc65-0a0bf1f2d4c6\n\n# Requirements\n- A modern terminal with 24bit color and, ideally, kitty keyboard protocol support. Kitty,\n    Foot and Ghostty are the only recommended terminals at this time. Most other terminals\n    will work, but with reduced functionality.\n- NerdFont support. Either via terminal font fallback or a patched font.\n- Linux, MacOS, Windows, Android (Termux) or FreeBSD.\n- A UTF-8 locale\n\n# Download / Install\n\nBinary release builds are found here: [neurocyte/flow/releases](https://github.com/neurocyte/flow/releases/latest)\n\nFetch and install the latest release to `/usr/local/bin` with the installation helper script:\n\n```shell\ncurl -fsSL https://flow-control.dev/install | sh\n```\n\nNightly binary builds are found here: [neurocyte/flow-nightly/releases](https://github.com/neurocyte/flow-nightly/releases/latest)\n\nInstall latest nightly build and (optionally) specify the installation destination:\n\n```\ncurl -fsSL https://flow-control.dev/install | sh -s -- --nightly --dest ~/.local/bin\n```\n\nSee all avalable options for the installer script:\n\n```\ncurl -fsSL https://flow-control.dev/install | sh -s -- --help\n```\n\nOr check your favorite local system package repository.\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/flow-control.svg)](https://repology.org/project/flow-control/versions)\n\n# Building\n\nMake sure your system meets the requirements listed above.\n\nFlow builds with zig 0.14.0 at this time. Build with:\n\n```shell\nzig build -Doptimize=ReleaseSafe\n```\n\nZig will by default build a binary optimized for your specific CPU. If you get illegal instruction errors add `-Dcpu=baseline` to the build command to produce a binary with generic CPU support.\n\n\nThanks to Zig you may also cross-compile from any host to pretty much any\ntarget. For example:\n\n```shell\nzig build -Doptimize=ReleaseSafe -Dtarget=x86_64-windows --prefix zig-out/x86_64-windows\nzig build -Doptimize=ReleaseSafe -Dtarget=x86_64-macos-none --prefix zig-out/x86_64-macos\nzig build -Doptimize=ReleaseSafe -Dtarget=aarch64-linux-musl --prefix zig-out/aarch64-linux\n```\n\nWhen cross-compiling zig will build a binary with generic CPU support.\n\n# Running Flow Control\n\nThe binary is:\n\n```shell\nzig-out/bin/flow\n```\n\nPlace it in your path for convenient access:\n\n```shell\nsudo cp zig-out/bin/flow /usr/local/bin\n```\n\nOr if you prefer, let zig install it in your home directory:\n\n```shell\nzig build -Doptimize=ReleaseSafe --prefix ~/.local\n```\n\nFlow Control is a single statically linked binary. No further runtime files are required.\nYou may install it on another system by simply copying the binary.\n\n```shell\nscp zig-out/bin/flow root@otherhost:/usr/local/bin\n```\n\nConfiguration is mostly dynamically maintained with various commands in the UI.\nIt is stored under the standard user configuration path. Usually `~/.config/flow`\non Linux. %APPDATA%\\Roaming\\flow on Windows. Somewhere magical on MacOS\n\nLogs, traces and per-project most recently used file lists are stored in the\nstandard user application state directory. Usually `~/.local/state/flow` on\nLinux and %APPDATA%\\Roaming\\flow on Windows.\n\nFiles to load may be specifed on the command line:\n\n```shell\nflow fileA.zig fileB.zig\n```\n\nThe last file will be opened and the previous files will be placed in reverse\norder at the top of the recent files list. Switch to recent files with Ctrl-e.\n\nCommon target line specifiers are supported too:\n\n```shell\nflow file.txt:123\n```\n\nOr Vim style:\n\n```shell\nflow file.txt +123\n```\n\nUse the --language option to force the file type of a file:\n\n```shell\nflow --language bash ~/.bash_profile\n```\n\nShow supported language names with `--list-languages`.\n\nSee `flow --help` for the full list of command line options.\n\n# Key bindings and commands\n\nPress `F2` to switch the current keybinding mode. (flow, vim, emacs, etc.)\nPress `ctrl+shift+p` or `alt+x` to show the command palette.\nPress `ctrl+F2` to see a full list of all current keybindings and commands.\n\nRun the `Edit keybindings` command to save the current keybinding mode to a\nfile and open it for editing. Save your customized keybinds under a new name\nin the same directory to create an entirely new keybinding mode. Keybinding\nchanges will take effect on restart.\n\n# Terminal configuration\n\nKitty, Ghostty and most other terminals have default keybindings that conflict\nwith common editor commands. I highly recommend rebinding them to keys that are\nnot generally used anywhere else.\n\nFor Kitty rebinding `kitty_mod` is usually enough:\n```\nkitty_mod ctrl+alt\n```\n\nFor Ghostty each conflicting binding has to be reconfigured individually.\n\n# Features\n- fast TUI interface. no user interaction should take longer than one frame (6ms) (even debug builds)\n- tree sitter based syntax highlighting\n- linting (diagnostics) and code navigation (goto definition) via language server\n- multi cursor editing support\n- first class mouse support (yes, even with a scrollbar that actually works properly!) (Windows included)\n- vscode compatible keybindings (thanks to kitty keyboard protocol)\n- vim compatible keybindings (the standard vimtutor bindings, more on request)\n- user configurable keybindings\n- excellent unicode support including 2027 mode\n- hybrid rope/piece-table buffer for fast loading, saving and editing with hundreds of cursors\n- theme support (compatible with vscode themes via the flow-themes project)\n- infinite undo/redo (at least until you run out of ram)\n- find in files\n- command palette\n- stuff I've forgotten to mention...\n\n# Features in progress (aka, the road to 1.0)\n- completion UI/LSP support for completion\n- persistent undo/redo\n- file watcher for auto reload\n\n# Features planned for the future\n- multi tty support (shared editor sessions across multiple ttys)\n- multi user editing\n- multi host editing\n\n# Community\n\n![Discord](https://img.shields.io/discord/1214308467553341470)\n\nJoin our [Discord](https://discord.com/invite/4wvteUPphx) server or use the discussions section here on GitHub\nto meet with other Flow users!\n","funding_links":[],"categories":["Zig","Fundamentals"],"sub_categories":["Text Editors"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneurocyte%2Fflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneurocyte%2Fflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneurocyte%2Fflow/lists"}