Compare commits
No commits in common. "efe7bdbb6d1781ef703fa0923a969b04bf71f8ec" and "faa41d83cacd09b08f4facb0959dbb50ee93391c" have entirely different histories.
efe7bdbb6d
...
faa41d83ca
4 changed files with 76 additions and 464 deletions
|
|
@ -1,372 +0,0 @@
|
|||
---
|
||||
.title = "Devlog 2026",
|
||||
.date = @date("2026-02-13"),
|
||||
.author = "CJ van den Berg",
|
||||
.layout = "devlog.shtml",
|
||||
.draft = false,
|
||||
---
|
||||
|
||||
[]($section.id('about'))
|
||||
## About this Devlog
|
||||
|
||||
I try to keep a log of major (and some minor) changes and new features
|
||||
going into flow as I work on them.
|
||||
|
||||
You can [subscribe to this page via
|
||||
RSS]($link.page('devlog').alternative('rss')) and find more devlog entries
|
||||
in the [archive](/devlog/).
|
||||
|
||||
# [Release 0.7.0 🎉]($section.id("2026-02-13T09:21:56+01:00"))
|
||||
|
||||
We kick off the new Year with a major release!
|
||||
|
||||
[]($video.asset('2026-02-13_flow-0.7.0_teaser.mp4').controls(true))
|
||||
|
||||
## Completion
|
||||
|
||||
Flow now has full **inline auto completion** support! There is a new
|
||||
dropdown UI with support for insert and replace completion styles while
|
||||
editing inline. An info popup box can display completion and hover
|
||||
documentation and there are commands to toggle modes and styles
|
||||
interactively.
|
||||
|
||||
There are three completion trigger modes available:
|
||||
- `manual` - completion is triggered via keybind to the `completion` command
|
||||
- `automatic` - completion is triggered whenever a trigger character is inserted
|
||||
- `every_keystroke` - completion is triggered on every insert operation
|
||||
|
||||
Trigger characters are provided by the current document's LSP. Note that a
|
||||
completion request may not always return results and in that case no
|
||||
completion UI will be shown. Completion items that insert LSP snippets are
|
||||
now supported and the next snippet tab stop can be selected with the `tab`
|
||||
key. There are two keybind modes for inline completion. `standard` mode
|
||||
will steal the `up/down` and `enter` keys from the main editor and
|
||||
`noninvasive` mode that will not. `noninvasive` mode requires that you use
|
||||
the alternate keybindings `ctrl+n`/`ctrl+p` to pick a completion item
|
||||
and `tab` to select it. These keybindings also work in `standard` mode.
|
||||
|
||||
The original palette style completion UI is also still available and may be
|
||||
selected with the `toggle_completion_style` command.
|
||||
|
||||
#### Keybinds:
|
||||
- `ctrl+space` or `ctrl+.` - manually trigger completion
|
||||
- `ctrl+space` (when completing) - toggle info box, info panel or no info
|
||||
- `up`, `down`, `ctrl+p`, `ctrl+n` - pick a completion item from the list
|
||||
- `enter`, `tab` - select and insert a completion
|
||||
- `esc` - cancel completion
|
||||
- `ctrl+k r` - toggle insert or replace completion mode
|
||||
- `alt+f9` - select next completion dropdown UI widget style
|
||||
- `shift+alt+f9` - select next info box widget style
|
||||
|
||||
Configuration options:
|
||||
- `completion_trigger`
|
||||
- `completion_style`
|
||||
- `completion_insert_mode`
|
||||
- `completion_info_mode`
|
||||
- `dropdown_keybinds` - `standard` or `noninvasive`
|
||||
- `dropdown_limit`
|
||||
|
||||
|
||||
## Vertical Splits
|
||||
|
||||
Flow Control can now show multple editors in vertical, side by side, views.
|
||||
Each split can have it's own tab bar and tabs may be moved between splits
|
||||
with mouse or keyboard commands. Commands or palettes that navigate to
|
||||
files now have an "alternate" mode that will open the file in a new split
|
||||
if it is not already open.
|
||||
|
||||
#### Keybinds:
|
||||
- `ctrl+\` - add_split
|
||||
- `ctrl+k w` - close_split
|
||||
- `ctrl+1` to `ctrl+8` - focus_split
|
||||
- `ctrl+page_down` - select tab right
|
||||
- `ctrl+page_up` - select tab left
|
||||
- `ctrl+shift+page_down` - move tab right
|
||||
- `ctrl+shift+page_up` - move tab left
|
||||
- `shift+enter` - (palette or command) navigate to file in a new split
|
||||
|
||||
|
||||
## Centered View
|
||||
|
||||
When only one split is open on a wide screen you can now center the view.
|
||||
The width of the centered view is controllable with keybinds and/or the
|
||||
`centered_view_width` configuration option.
|
||||
|
||||
#### Keybinds:
|
||||
- `ctrl+k x` - toggle centered view
|
||||
- `alt+-` - shrink centered view
|
||||
- `alt+=` - expand centered view
|
||||
|
||||
|
||||
## Horizontal scrolling
|
||||
|
||||
Horizontal scrolling with a horizontal mouse wheel is now supported. Also,
|
||||
scrolling the regular vertical mouse wheel with the `shift` key pressed
|
||||
will now scroll horizontally. Fast scroll (hold the 'alt' key) is also
|
||||
supported for horizontal scrolling.
|
||||
|
||||
|
||||
## Git Diffs
|
||||
|
||||
Diff markers in the editor gutter are now based on the git HEAD commit if
|
||||
the current project is a git repository. Also, the new commands
|
||||
`goto_next_change` and `goto_prev_change` will move the primary cursor to
|
||||
the next/previous marker in the gutter.
|
||||
|
||||
#### Keybinds:
|
||||
- `alt+f5` - goto_next_change
|
||||
- `alt+shift+f5` - goto_prev_change
|
||||
|
||||
|
||||
## Blame
|
||||
|
||||
Git blame information for the current line is displayed in the remaining on
|
||||
the line. This can be toggled with the `toggle_inline_vcs_blame` command.
|
||||
|
||||
#### Keybinds:
|
||||
- `ctrl+shift+g alt+b` - toggle_inline_vcs_blame
|
||||
|
||||
|
||||
## Variable Expansions
|
||||
|
||||
Tasks and `filter` bindings may now use variable expansions in their
|
||||
arguments. Variable names to be expanded should be wrapped in `{{` and
|
||||
`}}`.
|
||||
|
||||
The following variables are available in this release:
|
||||
|
||||
- `{{project}}` - The path to the current project directory
|
||||
- `{{file}}` - The path to the current file
|
||||
- `{{line}}` - The line number of the primary cursor
|
||||
- `{{column}}` - The column of the primary cursor
|
||||
- `{{selection}}` - The current selection of the primary cursor
|
||||
- `{{selections}}` - All current selections seperated by NL characters
|
||||
- `{{selectionsZ}}` - All current selections separated by NULL characters
|
||||
- `{{indent_mode}}` - The current indent mode (`tabs` or `spaces`)
|
||||
- `{{indent_size}}` - The current indent size (in columns)
|
||||
- `{{blame_commit}}` - The blame commit ID for the line at the primary cursor (if there is one)
|
||||
|
||||
|
||||
## Highlight References
|
||||
|
||||
Added support for the LSP `textDocument/documentHighlight` request as the
|
||||
`highlight_references` command. Flow will automatically mark the results of
|
||||
this query as matches so you can use the the `goto_next_match` and
|
||||
`goto_prev_match` commands to navigate them. `highlight_references` is also
|
||||
available as an idle action for automatic reference highlighting (See the
|
||||
Idle Actions secion below)
|
||||
|
||||
#### Keybinds:
|
||||
- `ctrl+k i`
|
||||
|
||||
|
||||
## Auto Run Commands, Auto Backups & Session Saving
|
||||
|
||||
`auto_run_commands` and `auto_run_time_seconds` can be used to configure
|
||||
commands that will run automatically like a cron job. `save_session` and
|
||||
`save_session_quiet` commands were also added to make auto run useful as a
|
||||
backup tool.
|
||||
|
||||
The default configuration for `auto_run_commands` is `save_session_quiet`
|
||||
and the default for `auto_run_time_seconds` is 120, so in the (rare!) event
|
||||
of a flow crash you can return to flow with minimal data loss with `flow
|
||||
--restart-session`.
|
||||
|
||||
The `save_session_and_quit` command was also added for when you want to
|
||||
manuall exit and restart flow with `flow --restart-session`.
|
||||
|
||||
|
||||
## Idle Actions & Commands
|
||||
|
||||
Idle actions & commands run whenever the user pauses their interaction with
|
||||
flow. Actions are specific functions designed to run on idle. At the moment
|
||||
just `hover` and `highlight_references`. These actions have commands to
|
||||
toggle them interactively. The idle timeout is configured with the
|
||||
`input_idle_time_ms` option.
|
||||
|
||||
|
||||
## Find Mode
|
||||
|
||||
There are now three find modes. Exact match, case folded (insensitive)
|
||||
and auto mode. Auto mode (the new default) selects to do an exact match
|
||||
search or case folded search depending on whether the query term contains
|
||||
case foldable characters or not. So if you enter a lowercase search term
|
||||
you get a case insensitive search. Also, auto find mode (which searches as
|
||||
soon as you select something) now has a command (and a keybind) to toggle
|
||||
it on/off.
|
||||
|
||||
#### Keybinds:
|
||||
- `alt+c` (in find mode) - toggle exact or case folded search mode
|
||||
- `alt+f3` - toggle auto find mode
|
||||
|
||||
|
||||
## Key Hints
|
||||
|
||||
There is a new key hints overlay that displays all currently available
|
||||
keybindings. It can be explicitly activated with `alt+f1` or `ctrl+?`, and
|
||||
will be automatically displayed when an incomplete keybinding sequence is
|
||||
waiting for additional input. The key hints overlay is invisible to mouse
|
||||
events and can be active in any flow input mode or submode.
|
||||
|
||||
#### Keybinds:
|
||||
- `alt+f1` or `ctrl+?` - show/hide the key hints overlay
|
||||
- `shift+f1` or `ctrl+alt+?` - next key hints page
|
||||
- `shift+alt+f9` - next widget style for key hints
|
||||
|
||||
|
||||
## Restart with Sudo
|
||||
|
||||
You can now restart the flow session with `sudo` to save files with root
|
||||
permissions. The current session, with unsaved file content (but currently
|
||||
not undo info), is first saved and then automatically restored when flow is
|
||||
restarted by sudo. If the `sudo` command fails for any reason the saved
|
||||
flow session can be reloaded as usual with `flow --restart-session`. Flow
|
||||
now displays a red lock symbol in the status bar and a (configurable)
|
||||
warning message on the home screen when running with root permissions.
|
||||
|
||||
|
||||
## Symlinks
|
||||
|
||||
Flow can now follow symlinks when writing files and scanning the project
|
||||
tree. New options `retain_symlinks`, `follow_directory_symlinks` and
|
||||
`maximum_symlink_depth` control symlink behavior. Symlink following on file
|
||||
save (`retain_symlinks`) is now enabled by default.
|
||||
`follow_directory_symlinks` when scanning the project tree is not enabled
|
||||
by default.
|
||||
|
||||
|
||||
## Symbols Palette
|
||||
|
||||
Added support for the LSP `textDocument/documentSymbol` request with a
|
||||
palette interface to browse and filter symbols in the current document.
|
||||
|
||||
#### Keybinds:
|
||||
- `ctrl+shift+o` - open the symbols palette
|
||||
- `enter` - jump to the highlighted symbol
|
||||
- `shift+enter` - select the highlighted symbol
|
||||
- `up/down/pgup/pgdn/home/end` - browse the symbols list
|
||||
- `anything else` - filter the symbols list with a fuzzy search
|
||||
- `esc` - cancel and return to original document location
|
||||
|
||||
|
||||
## Project switching
|
||||
|
||||
Switching projects without exiting Flow Control (`ctrl+r`) now restores
|
||||
open tabs and splits making for a much smoother multi-project workflow.
|
||||
|
||||
|
||||
## Last Palette
|
||||
|
||||
You can now re-open the last used palette with the `last_palette` command.
|
||||
This restores the state of the palette when last used, which is very
|
||||
useful, for example, for browsing through multiple files that match a fuzzy
|
||||
query.
|
||||
|
||||
#### Keybinds:
|
||||
- `ctrl+,` - open lasted used palette
|
||||
- [helix] `space '` - open lasted used palette
|
||||
|
||||
|
||||
## Goto Matching Bracket
|
||||
|
||||
Added the classic goto matching bracket command.
|
||||
|
||||
#### Keybinds:
|
||||
- flow - `ctrl+shift+\`
|
||||
- emacs - `C-M-p C-M-n`
|
||||
- vim - `%`
|
||||
- helix - `mm`
|
||||
|
||||
|
||||
## Reflow text
|
||||
|
||||
The `reflow` command can soft wrap paragraphs of text. There is basic
|
||||
detection of the line prefix to aid in reflowing indented or commented
|
||||
blocks of text. Blank lines are preserved as paragraph boundaries. The
|
||||
default line width for `reflow` is configured with the `reflow_width`
|
||||
config option and can also be specified for the current, and any following,
|
||||
`reflow` operation with an integer command parameter. (`alt+1`, etc.)
|
||||
|
||||
#### Keybinds:
|
||||
- `alt+q` - reflow paragraph
|
||||
|
||||
|
||||
## LSP Configuration
|
||||
|
||||
The `open_lsp_config_global` and `open_lsp_config_project` will open a json
|
||||
file where you can add LSP configuration that is sent to the LSP on startup
|
||||
via the LSP `initializationOptions` init request field. Project and global
|
||||
configurations are not merged in anyway and project config overrides global
|
||||
config entirely. The project (and global) LSP configuration is stored in
|
||||
the flow configuration directory, even for project specific config.
|
||||
|
||||
|
||||
## Language support changes
|
||||
|
||||
- Set default lua formatter to stylua
|
||||
- Set ty as default lsp for python
|
||||
- Update ziggy and superhtml
|
||||
|
||||
|
||||
## Helix mode
|
||||
|
||||
- Added switch_to_lowercase
|
||||
- Add cursors with selections for selected lines (Alt+s)
|
||||
- maw and maW support
|
||||
- miw and miW support
|
||||
|
||||
|
||||
## Themes
|
||||
|
||||
- Changed the default theme to the more modern ayu-mirage
|
||||
- Added selenized theme
|
||||
- Added ethereal theme
|
||||
|
||||
|
||||
## Misc minor features and new commands
|
||||
|
||||
- add gutter_width_mode and gutter_width_minimum/maximum config options
|
||||
- add more modes to linenumstate status bar widget
|
||||
- add uuidgen keybind
|
||||
- add option to disable sgr pixel mode support
|
||||
- add show_bottom_bar_grip config option
|
||||
- make expand_selection and shrink_selection multicursor aware
|
||||
- add option to align inline diagnostics to the left
|
||||
- add toggle_command_logging command
|
||||
- add select_to_line_vim command
|
||||
- make goto in flow select mode select to line
|
||||
- map kp_ movement keys as regular keys if the kp_ variants are not explicitly mapped
|
||||
- add panel border to logview
|
||||
- subscribe to keybind_match events in inputview and display them
|
||||
- add ignore_filter_stderr config option
|
||||
- add config option keybind_mode with workaround ignore_alt_text_modifiers
|
||||
- add show_local_diagnostics_in_panel config option
|
||||
- add whitespace_mode external
|
||||
- add modes_can_change_cursor configuration option
|
||||
- add results count to generic palette
|
||||
- add results count to open_recent palette
|
||||
- add scrollbar_auto_hide config option
|
||||
- add pane_style config option
|
||||
- add option to disable modal dim effect
|
||||
- add switch_input_mode command to change keybind mode in a mini mode
|
||||
- add value type descriptions to config files
|
||||
- enable indent whitespace_mode by default
|
||||
- bind open_config to alt+f5
|
||||
- add FLOW_CONFIG_DIR env var to override configuration directory
|
||||
- propagate indent guides across blank lines
|
||||
- add path segment completion to open_recent palette
|
||||
|
||||
|
||||
## Contributors
|
||||
|
||||
Many, many thanks to all who contributed to this release!
|
||||
|
||||
- CJ van den Berg
|
||||
- Igor Támara
|
||||
- Miguel Granero
|
||||
- Danylo Kondratiev
|
||||
- Jakob Ingvast
|
||||
- Palanix
|
||||
- Ian Johnson
|
||||
- Janne Hellsten
|
||||
- xdBronch
|
||||
Binary file not shown.
|
|
@ -25,25 +25,26 @@ individually.
|
|||
## Searching
|
||||
|
||||
Press ctrl+f to search this help file. Type a search term and press
|
||||
ctrl+n/ctrl+p or f3/shift+f3 to jump through the matches. Press Enter to
|
||||
exit find mode at the current match or Escape to return to your starting
|
||||
point.
|
||||
ctrl+n/ctrl+p or f3/shift+f3 to jump through the matches. Press Enter
|
||||
to exit find mode at the current match or Escape to return to your
|
||||
starting point.
|
||||
|
||||
|
||||
## Messages and logs
|
||||
|
||||
Messages of issues regarding tasks that are not accomplished, like trying
|
||||
to close flow with unsaved files, as well as other information are shown
|
||||
briefly in the bottom status bar; most recent messages can be seen in the
|
||||
log view too, to open it, use ctrl+shift+p > `View log`; it's possible to
|
||||
make it taller dragging the toolbar with the mouse up or downwards.
|
||||
Messages of issues regarding tasks that are not accomplished, like
|
||||
trying to close flow with unsaved files, as well as other information
|
||||
are shown briefly in the bottom status bar; most recent messages can
|
||||
be seen in the log view too, to open it, use ctrl+shift+p > `View log`;
|
||||
it's possible to make it taller dragging the toolbar with the mouse
|
||||
up or downwards.
|
||||
|
||||
|
||||
## Input Modes
|
||||
|
||||
Flow Control supports multiple input modes that may be changed
|
||||
interactively at runtime. The current input mode (and some other settings)
|
||||
is persisted in the configuration file automatically.
|
||||
interactively at runtime. The current input mode (and some other
|
||||
settings) is persisted in the configuration file automatically.
|
||||
|
||||
- f4 => Cycle major input modes (flow, emacs, vim, helix,...)
|
||||
|
||||
|
|
@ -51,9 +52,9 @@ The current input mode is displayed at the left side of the statusbar.
|
|||
|
||||
- ctrl+shift+p or alt+x => Show the command palette
|
||||
|
||||
The command palette allows you to fuzzy search and select commands to run.
|
||||
It also shows any available keybind that may be used to run the command
|
||||
without opening the palette.
|
||||
The command palette allows you to fuzzy search and select commands to run. It
|
||||
also shows any available keybind that may be used to run the command without
|
||||
opening the palette.
|
||||
|
||||
- ctrl+f2 => Show all available commands and keybinds
|
||||
|
||||
|
|
@ -63,16 +64,16 @@ will insert the command name into the current document instead of executing
|
|||
it. This is very useful for editing keybinding definition files.
|
||||
|
||||
Run the `Edit keybindings` command to save the current keybinding mode to a
|
||||
file in the configuration `keys` directory and open it for editing. Save
|
||||
your customized keybinds under a new name in the same directory to create
|
||||
an entirely new keybinding mode that can be selected with `f4`. Delete the
|
||||
file in the configuration `keys` directory and open it for editing. Save your
|
||||
customized keybinds under a new name in the same directory to create an
|
||||
entirely new keybinding mode that can be selected with `f4`. Delete the
|
||||
keybinding file from the configuration `keys` directory to revert the mode
|
||||
to it's built-in definition (if there is one). Changes to keybinding files
|
||||
will take effect on restart.
|
||||
|
||||
Keybinding modes may inherit all non-conflicting keybindings from another
|
||||
mode by adding an `inherit` option to the `settings` section of the keybind
|
||||
file like this:
|
||||
Keybinding modes may inherit all non-conflicting keybindings from another mode
|
||||
by adding an `inherit` option to the `settings` section of the keybind file
|
||||
like this:
|
||||
|
||||
```json
|
||||
{
|
||||
|
|
@ -86,9 +87,9 @@ file like this:
|
|||
This allows you to make only minor additions/changes to an existing builtin
|
||||
mode without copying the whole mode and is easier to keep up-to-date.
|
||||
|
||||
Additionally, individual sub-modes may inherit all non-conflicting
|
||||
keybindings from another sub-mode of the same mode by adding an `inherit`
|
||||
option to the sub-mode section like this:
|
||||
Additionally, individual sub-modes may inherit all non-conflicting keybindings
|
||||
from another sub-mode of the same mode by adding an `inherit` option to the
|
||||
sub-mode section like this:
|
||||
|
||||
```
|
||||
"normal": {
|
||||
|
|
@ -107,44 +108,43 @@ Multiple inheritance is supported with the `inherits` options like this:
|
|||
### Flow mode
|
||||
|
||||
The default input mode, called just flow, is based on common GUI
|
||||
programming editors. It most closely resembles Visual Studio Code, but also
|
||||
takes some inspiration from Emacs and others. This mode focuses on powerful
|
||||
multi cursor support with a find -> select -> modify cycle style of
|
||||
editing.
|
||||
programming editors. It most closely resembles Visual Studio Code, but
|
||||
also takes some inspiration from Emacs and others. This mode focuses
|
||||
on powerful multi cursor support with a find -> select -> modify
|
||||
cycle style of editing.
|
||||
|
||||
See the `ctrl+f2` palette when flow mode is selected to see the full list
|
||||
of keybindings for this mode.
|
||||
See the `ctrl+f2` palette when flow mode is selected to see the full
|
||||
list of keybindings for this mode.
|
||||
|
||||
|
||||
### Vim mode
|
||||
|
||||
The vim modes, shown as NORMAL, INSERT or VISUAL in the status bar, follow
|
||||
the basic modal editing style of vim. The basics follow vim closely, but
|
||||
more advanced vim functions (e.g. macros and registers) are not supported
|
||||
(yet). Keybindings from flow mode that do not conflict with vim keybindings
|
||||
also work in vim mode.
|
||||
The vim modes, shown as NORMAL, INSERT or VISUAL in the status bar,
|
||||
follow the basic modal editing style of vim. The basics follow vim
|
||||
closely, but more advanced vim functions (e.g. macros and registers)
|
||||
are not supported (yet). Keybindings from flow mode that do not conflict
|
||||
with vim keybindings also work in vim mode.
|
||||
|
||||
|
||||
### Helix mode
|
||||
|
||||
The helix modes, shown as NOR, INS or SEL in the status bar, follow the
|
||||
basic modal editing style of helix. The basics are being adapted closely,
|
||||
more advanced functions (e.g. surround, macros, selections, registers) are
|
||||
not supported (yet). Usual keybinding with LSPs are used for tasks like 'go
|
||||
to definition', 'go to reference' and 'inline documentation' featuring
|
||||
inline diagnostics. Keybindings from flow mode that do not conflict with
|
||||
helix keybindings also work in helix mode.
|
||||
The helix modes, shown as NOR, INS or SEL in the status bar, follow
|
||||
the basic modal editing style of helix. The basics are being adapted
|
||||
closely, more advanced functions (e.g. surround, macros, selections,
|
||||
registers) are not supported (yet). Usual keybinding with LSPs are
|
||||
used for tasks like 'go to definition', 'go to reference' and
|
||||
'inline documentation' featuring inline diagnostics. Keybindings
|
||||
from flow mode that do not conflict with helix keybindings also work in
|
||||
helix mode.
|
||||
|
||||
(work in progress)
|
||||
|
||||
## Mouse Commands
|
||||
|
||||
Mouse commands are NOT rebindable and are not listed in the command
|
||||
palette.
|
||||
Mouse commands are NOT rebindable and are not listed in the command palette.
|
||||
|
||||
- Left Click =>
|
||||
Clear all cursors and selections and the place cursor at the mouse
|
||||
pointer
|
||||
Clear all cursors and selections and the place cursor at the mouse pointer
|
||||
|
||||
- Double Left Click =>
|
||||
Select word at mouse pointer
|
||||
|
|
@ -182,10 +182,11 @@ palette.
|
|||
## Configuration
|
||||
|
||||
Configuration is stored in the standard location
|
||||
`${XDG_CONFIG_HOME}/flow/config`. This is usually `~/.config/flow/config`.
|
||||
`${XDG_CONFIG_HOME}/flow/config`. This is usually
|
||||
`~/.config/flow/config`.
|
||||
|
||||
The default configuration will be written the first time Flow Control is
|
||||
started and looks similar to this:
|
||||
The default configuration will be written the first time
|
||||
Flow Control is started and looks similar to this:
|
||||
```
|
||||
frame_rate 60
|
||||
theme "default"
|
||||
|
|
@ -202,22 +203,23 @@ animation_max_lag 150
|
|||
|
||||
Most of these options are fairly self explanatory.
|
||||
|
||||
`theme`, `input_mode` and `show_whitespace` are automatically persisted
|
||||
when changed interactively with keybindings.
|
||||
`theme`, `input_mode` and `show_whitespace` are automatically
|
||||
persisted when changed interactively with keybindings.
|
||||
|
||||
`frame_rate` can be tuned to control the maximum number of frames rendered.
|
||||
`frame_rate` can be tuned to control the maximum number
|
||||
of frames rendered.
|
||||
|
||||
`animation_max_lag` controls the maximum amount of time allowed for
|
||||
rendering scrolling animations. Set to 0 to disable scrolling animation
|
||||
altogether.
|
||||
`animation_max_lag` controls the maximum amount of time allowed
|
||||
for rendering scrolling animations. Set to 0 to disable scrolling
|
||||
animation altogether.
|
||||
|
||||
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.
|
||||
|
||||
## Flags and options
|
||||
|
||||
As every respectable terminal program, flow provide various invoking
|
||||
options that among others, will allow you to inspect various aspects of the
|
||||
running session. Feel free to run `flow --help` to explore them.
|
||||
options that among others, will allow you to inspect various aspects of
|
||||
the running session. Feel free to run `flow --help` to explore them.
|
||||
|
|
|
|||
|
|
@ -15,66 +15,48 @@ Flow Control is under active development, but very stable.
|
|||
|
||||
## 🚀 Features
|
||||
|
||||
- **Lightning Fast** TUI with ≤6ms frame times, **low latency** input
|
||||
handling and smooth **animated scrolling**
|
||||
|
||||
- Intuitive UI with **tabs**, **splits**, **scrollbars** and **palettes**
|
||||
with full **mouse** support for all UI elements
|
||||
|
||||
- **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 with support for inline auto completion, symbol lookup, goto
|
||||
definition, highlight references, hover and more
|
||||
|
||||
- **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
|
||||
- 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
|
||||
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.
|
||||
|
||||
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/2026) for on-going updates from the development
|
||||
team.
|
||||
See our [devlog](/devlog/2025) for on-going updates from the development team.
|
||||
|
||||
### In Development
|
||||
|
||||
- LSP completion support
|
||||
- Persistent undo/redo
|
||||
- File watcher integration
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue