Compare commits
7 commits
d6cdcfdb1a
...
fb482bd565
| Author | SHA1 | Date | |
|---|---|---|---|
| fb482bd565 | |||
| f15c9adb6a | |||
| a48b680f57 | |||
| fa01b13c6a | |||
| 182788a439 | |||
| c159a9d294 | |||
| a12adb525f |
2 changed files with 113 additions and 75 deletions
184
README.md
184
README.md
|
|
@ -1,57 +1,89 @@
|
|||
# Flow Control: a programmer's text editor
|
||||
|
||||
This is my Zig text editor. It is under active development, but usually stable
|
||||
and is my daily driver for most things coding related.
|
||||
This is my Zig text editor. It is under active development, but very stable
|
||||
and is my daily driver for almost everything.
|
||||
|
||||
[](https://www.youtube.com/watch?v=iwPg3sIxMGw)
|
||||
|
||||
|
||||
# Features
|
||||
|
||||
- **Lightning Fast** TUI with ≤6ms frame times, **low latency** input handling
|
||||
and smooth **animated scrolling**
|
||||
- Intuitive UI with **tabs**, **scrollbars** and **palettes** with full
|
||||
**mouse** support for all UI elements
|
||||
- Support for more than **70 programming languages**, **zero
|
||||
configuration** needed, via **tree-sitter** powered syntax highlighting
|
||||
- **Language Server Protocol** pre configured support for most language servers
|
||||
- Powerful **multi-cursor** editing and integrated **clipboard history**
|
||||
- Powerful configurable keybinding system that supports **modal** and
|
||||
**non-modal** editing styles
|
||||
- Multiple pre-configured **keybinding modes**
|
||||
- Flow Control - GUI IDE style bindings (similar to vscode)
|
||||
- Emacs
|
||||
- Vim
|
||||
- Helix
|
||||
- User created
|
||||
- Hybrid rope/piece-table buffer system, edit **very large files** with
|
||||
**thousands of cursors**
|
||||
- Infinite **undo** (at least until you run out of ram)
|
||||
- Full **unicode** support, including support for the kitty text sizing protocol
|
||||
- Plenty of **themes** included and support for vscode themes via the flow-themes project
|
||||
- Runs on **Linux, FreeBSD, MacOS, Windows and Android** (under termux) with
|
||||
easy **cross-compilation** to all supported targets
|
||||
|
||||
|
||||
# Requirements
|
||||
- A modern terminal with 24bit color and, ideally, kitty keyboard protocol support. Kitty,
|
||||
Foot and Ghostty are the only recommended terminals at this time. Most other terminals
|
||||
will work, but with reduced functionality.
|
||||
- NerdFont support. Either via terminal font fallback or a patched font.
|
||||
- Linux, MacOS, Windows, Android (Termux) or FreeBSD.
|
||||
- A UTF-8 locale
|
||||
|
||||
- A modern terminal with **24bit color** and, ideally, **kitty keyboard
|
||||
protocol** support. **Kitty**, **Foot** and **Ghostty** are the recommended
|
||||
terminals at this time. **Zellij** also works well. Most other terminals will
|
||||
work, but likely with reduced functionality.
|
||||
- **NerdFont** support. Either via terminal font fallback or a patched font.
|
||||
- A **UTF-8** locale
|
||||
|
||||
|
||||
# Roadmap
|
||||
|
||||
See our [devlog](/devlog/2025) for on-going updates from the development team.
|
||||
|
||||
## In Development
|
||||
|
||||
- LSP completion support
|
||||
- Persistent undo/redo
|
||||
- File watcher integration
|
||||
|
||||
## Future
|
||||
|
||||
- Collaborative editing
|
||||
- Plugin system
|
||||
- Multi-terminal sessions
|
||||
|
||||
|
||||
# Download / Install
|
||||
|
||||
Binary release builds are found here: [neurocyte/flow/releases](https://github.com/neurocyte/flow/releases/latest)
|
||||
|
||||
Fetch and install the latest release to `/usr/local/bin` with the installation helper script:
|
||||
|
||||
```shell
|
||||
curl -fsSL https://flow-control.dev/install | sh
|
||||
```
|
||||
|
||||
Nightly binary builds are found here: [neurocyte/flow-nightly/releases](https://github.com/neurocyte/flow-nightly/releases/latest)
|
||||
|
||||
Install latest nightly build and (optionally) specify the installation destination:
|
||||
|
||||
```shell
|
||||
curl -fsSL https://flow-control.dev/install | sh -s -- --nightly --dest ~/.local/bin
|
||||
```
|
||||
|
||||
See all avalable options for the installer script:
|
||||
|
||||
```shell
|
||||
curl -fsSL https://flow-control.dev/install | sh -s -- --help
|
||||
```
|
||||
There is an [installation guide](https://flow-control.dev/installation) on the
|
||||
main website, and source, release and nightly build binary
|
||||
[downloads](https://flow-control.dev/downloads).
|
||||
|
||||
Or check your favorite local system package repository.
|
||||
|
||||
[](https://repology.org/project/flow-control/versions)
|
||||
|
||||
|
||||
# Building
|
||||
|
||||
Make sure your system meets the requirements listed above.
|
||||
|
||||
Flow builds with zig 0.15.1 at this time. Build with:
|
||||
Flow builds with zig 0.15.2 at this time. Build with:
|
||||
|
||||
```shell
|
||||
zig build -Doptimize=ReleaseSafe
|
||||
```
|
||||
|
||||
Zig 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.
|
||||
Zig 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.
|
||||
|
||||
|
||||
Thanks to Zig you may also cross-compile from any host to pretty much any
|
||||
|
|
@ -65,15 +97,20 @@ zig build -Doptimize=ReleaseSafe -Dtarget=aarch64-linux-musl --prefix zig-out/aa
|
|||
|
||||
When cross-compiling zig will build a binary with generic CPU support.
|
||||
|
||||
[](https://deepwiki.com/neurocyte/flow)
|
||||
|
||||
The output binary is:
|
||||
|
||||
```
|
||||
zig-out/bin/flow
|
||||
```
|
||||
|
||||
It is statically built (by default) and contains all the required tree-sitter parsers
|
||||
and queries. No additional runtime files are required.
|
||||
|
||||
|
||||
# Running Flow Control
|
||||
|
||||
The binary is:
|
||||
|
||||
```shell
|
||||
zig-out/bin/flow
|
||||
```
|
||||
The Flow Control binary is called `flow`.
|
||||
|
||||
Place it in your path for convenient access:
|
||||
|
||||
|
|
@ -87,8 +124,8 @@ Or if you prefer, let zig install it in your home directory:
|
|||
zig build -Doptimize=ReleaseSafe --prefix ~/.local
|
||||
```
|
||||
|
||||
Flow Control is a single statically linked binary. No further runtime files are required.
|
||||
You may install it on another system by simply copying the binary.
|
||||
Flow Control is a single statically linked binary. No further runtime files are
|
||||
required. You may install it on another system by simply copying the binary.
|
||||
|
||||
```shell
|
||||
scp zig-out/bin/flow root@otherhost:/usr/local/bin
|
||||
|
|
@ -125,25 +162,51 @@ Show supported language names with `--list-languages`.
|
|||
|
||||
See `flow --help` for the full list of command line options.
|
||||
|
||||
|
||||
# Documentation
|
||||
|
||||
## User manual
|
||||
|
||||
A basic user manual is available inside flow. You can open it with the
|
||||
`Open help` command (F1).
|
||||
|
||||
It is also available in the website [documentation]{https://flow-control.dev/docs/}
|
||||
section.
|
||||
|
||||
## Development Resources
|
||||
|
||||
Additional developer resources can be found on the Flow Control website at
|
||||
[flow-control.dev/docs](https://flow-control.dev/docs/).
|
||||
|
||||
There is also an AI generated developer guide at
|
||||
[](https://deepwiki.com/neurocyte/flow).
|
||||
Accuracy may vary. Check details against the referenced source code.
|
||||
|
||||
|
||||
# Configuration
|
||||
|
||||
Configuration is mostly dynamically maintained with various commands in the UI.
|
||||
It is stored under the standard user configuration path. Usually `~/.config/flow`
|
||||
on Linux. %APPDATA%\Roaming\flow on Windows. Somewhere magical on MacOS.
|
||||
It is stored under the standard user configuration path. Usually
|
||||
`~/.config/flow` on Linux. %APPDATA%\Roaming\flow on Windows. Somewhere magical
|
||||
on MacOS.
|
||||
|
||||
There are commands to open the various configuration files, so you don't have to
|
||||
manually find them. Look for commands starting with `Edit` in the command palette.
|
||||
manually find them. Look for commands starting with `Edit` in the command
|
||||
palette.
|
||||
|
||||
File types may be configured with the `Edit file type configuration` command. You
|
||||
can also create a new file type by adding a new `.conf` file to the `file_type`
|
||||
directory. Have a look at an existing file type to see what options are available.
|
||||
File types may be configured with the `Edit file type configuration` command.
|
||||
You can also create a new file type by adding a new `.conf` file to the
|
||||
`file_type` directory. Have a look at an existing file type to see what options
|
||||
are available.
|
||||
|
||||
Logs, traces and per-project most recently used file lists are stored in the
|
||||
standard user application state directory. Usually `~/.local/state/flow` on
|
||||
Linux and %APPDATA%\Roaming\flow on Windows.
|
||||
|
||||
|
||||
# Key bindings and commands
|
||||
|
||||
Press `F1` to view the online manual.
|
||||
Press `F4` to switch the current keybinding mode. (flow, vim, emacs, etc.)
|
||||
Press `ctrl+shift+p` or `alt+x` to show the command palette.
|
||||
Press `ctrl+F2` to see a full list of all current keybindings and commands.
|
||||
|
|
@ -153,6 +216,7 @@ file and open it for editing. Save your customized keybinds under a new name
|
|||
in the same directory to create an entirely new keybinding mode. Keybinding
|
||||
changes will take effect on restart.
|
||||
|
||||
|
||||
# Terminal configuration
|
||||
|
||||
Kitty, Ghostty and most other terminals have default keybindings that conflict
|
||||
|
|
@ -166,36 +230,10 @@ kitty_mod ctrl+alt
|
|||
|
||||
For Ghostty each conflicting binding has to be reconfigured individually.
|
||||
|
||||
# Features
|
||||
- fast TUI interface. no user interaction should take longer than one frame (6ms) (even debug builds)
|
||||
- tree sitter based syntax highlighting
|
||||
- linting (diagnostics) and code navigation (goto definition) via language server
|
||||
- multi cursor editing support
|
||||
- first class mouse support (yes, even with a scrollbar that actually works properly!) (Windows included)
|
||||
- vscode compatible keybindings (thanks to kitty keyboard protocol)
|
||||
- vim compatible keybindings (the standard vimtutor bindings, more on request)
|
||||
- user configurable keybindings
|
||||
- excellent unicode support including 2027 mode
|
||||
- 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)
|
||||
- find in files
|
||||
- command palette
|
||||
- stuff I've forgotten to mention...
|
||||
|
||||
# Features in progress (aka, the road to 1.0)
|
||||
- completion UI/LSP support for completion
|
||||
- persistent undo/redo
|
||||
- file watcher for auto reload
|
||||
|
||||
# Features planned for the future
|
||||
- multi tty support (shared editor sessions across multiple ttys)
|
||||
- multi user editing
|
||||
- multi host editing
|
||||
|
||||
# Community
|
||||
|
||||

|
||||
|
||||
Join our [Discord](https://discord.com/invite/4wvteUPphx) server or use the discussions section here on GitHub
|
||||
to meet with other Flow users!
|
||||
Join our [Discord](https://discord.com/invite/4wvteUPphx) server or use the
|
||||
discussions section here on GitHub to meet with other Flow users!
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
|
||||
.dependencies = .{
|
||||
.syntax = .{
|
||||
.url = "git+https://github.com/neurocyte/flow-syntax?ref=master#45d79d41562f3d9dcc53c7e2c38d7d829a2b2834",
|
||||
.hash = "flow_syntax-0.1.0-X8jOoY0TAQDl5k1-sO2KfcxrECQAsjwocoRmh3sbwEoi",
|
||||
.url = "git+https://github.com/neurocyte/flow-syntax?ref=master#9106b13b4c98b145229ad643e7869f29c7b0816b",
|
||||
.hash = "flow_syntax-0.1.0-X8jOoZQTAQCV2bjyceUHrRl_iu41imzTDLGT5R-XwT_9",
|
||||
},
|
||||
.flags = .{
|
||||
.url = "git+https://github.com/neurocyte/flags?ref=main#984b27948da3e4e40a253f76c85b51ec1a9ada11",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue