docs: update readme

This commit is contained in:
CJ van den Berg 2024-06-08 20:23:14 +02:00
parent 2590a1ac11
commit c174f02a9d

View file

@ -1,7 +1,7 @@
# Flow Control: a programmer's text editor # 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. This is my Zig text editor. It is under active development, but usually stable
and is my daily driver for most things coding related.
https://github.com/neurocyte/flow/assets/1552770/97aae817-c209-4c08-bc65-0a0bf1f2d4c6 https://github.com/neurocyte/flow/assets/1552770/97aae817-c209-4c08-bc65-0a0bf1f2d4c6
@ -10,7 +10,8 @@ https://github.com/neurocyte/flow/assets/1552770/97aae817-c209-4c08-bc65-0a0bf1f
ghostty are the only recommended terminals at this time. Most other terminals ghostty are the only recommended terminals at this time. Most other terminals
will work, but with reduced functionality. will work, but with reduced functionality.
- NerdFonts support - NerdFonts support
- Linux or MacOS (help porting to *BSD or Windows is welcome!) - Linux, MacOS, (somewhat experimental) Windows or Android (Termux). *BSD
probably works too, but nobody has tried it yet.
- A UTF-8 locale (very important!) - A UTF-8 locale (very important!)
# Building # Building
@ -23,12 +24,6 @@ Flow tracks zig master most of the time. Build with:
zig build -Doptimize=ReleaseFast zig build -Doptimize=ReleaseFast
``` ```
Or, for a slightly smaller executable (with no debug info):
```shell
zig build -Doptimize=ReleaseSmall
```
Sometimes zig master may introduce breaking changes and Flow may take a few days to Sometimes zig master may introduce breaking changes and Flow may take a few days to
catch up. In that case there is a simple zig wrapper script provided that will download catch up. In that case there is a simple zig wrapper script provided that will download
and build with the last known compatible version of zig. The version is stored in and build with the last known compatible version of zig. The version is stored in
@ -42,11 +37,6 @@ Build with the zig wrapper:
The zig wrapper places the downloaded zig compiler in the `.cache` directory and does The zig wrapper places the downloaded zig compiler in the `.cache` directory and does
not touch your system. It requires `bash`, `curl` and `jq` to run. not touch your system. It requires `bash`, `curl` and `jq` to run.
Run with:
```shell
zig-out/bin/flow
```
# Running Flow Control # Running Flow Control
The output binary is: The output binary is:
@ -68,11 +58,12 @@ You may install it on another system by simply copying the binary.
scp zig-out/bin/flow root@otherhost:/usr/local/bin scp zig-out/bin/flow root@otherhost:/usr/local/bin
``` ```
Logs, traces and per-project most recently used file lists are stored in the
standard user runtime cache directory. Usually `~/.cache/flow`.
Configuration is mostly dynamically maintained with various commands in the UI. Configuration is mostly dynamically maintained with various commands in the UI.
It stored under the standard user configuration path. Usually `~/.config/flow`. It stored under the standard user configuration path. Usually `~/.config/flow`.
(%APPDATA%\Roaming\flow on Windows)
Logs, traces and per-project most recently used file lists are stored in the
standard user runtime cache directory. Usually `~/.cache/flow`.
Files to load may be specifed on the command line: Files to load may be specifed on the command line:
@ -80,7 +71,7 @@ Files to load may be specifed on the command line:
flow fileA.zig fileB.zig flow fileA.zig fileB.zig
``` ```
Common target line specifiers are supported to: Common target line specifiers are supported too:
```shell ```shell
flow file.txt:123 flow file.txt:123
@ -118,10 +109,10 @@ For Ghostty each conflicting binding has to be reconfigured individually.
- tree sitter based syntax highlighting - tree sitter based syntax highlighting
- linting (diagnostics) and code navigation (goto definition) via language server - linting (diagnostics) and code navigation (goto definition) via language server
- multi cursor editing support - multi cursor editing support
- first class mouse support (yes, even with a scrollbar that actually works properly!) - first class mouse support (yes, even with a scrollbar that actually works properly!) (no mouse support on Windows yet)
- vscode compatible keybindings (thanks to kitty keyboard protocol) - vscode compatible keybindings (thanks to kitty keyboard protocol)
- vim compatible keybindings (at least the basics, more to come) - vim compatible keybindings (the standard vimtutor bindings, more on request)
- good unicode support - excellent unicode support including 2027 mode
- hybrid rope/piece-table buffer for fast loading, saving and editing with hundreds of cursors - 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) - theme support (compatible with vscode themes via the flow-themes project)
- infinite undo/redo (at least until you run out of ram) - infinite undo/redo (at least until you run out of ram)