Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 030a2b86c1 | |||
| 958dfa1af6 | |||
| 9112a64bcf | |||
| cdb993ea00 |
3 changed files with 65 additions and 63 deletions
|
|
@ -3,7 +3,7 @@
|
|||
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)
|
||||
[](https://www.youtube.com/watch?v=Mf3k2uFkyK4)
|
||||
|
||||
|
||||
# Features
|
||||
|
|
@ -49,7 +49,7 @@ and is my daily driver for almost everything.
|
|||
|
||||
# Roadmap
|
||||
|
||||
See our [devlog](https://flow-control.dev/devlog/2025/) for on-going
|
||||
See our [devlog](https://flow-control.dev/devlog/2026/) for on-going
|
||||
updates from the development team.
|
||||
|
||||
## In Development
|
||||
|
|
|
|||
120
help.md
120
help.md
|
|
@ -19,26 +19,25 @@ 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,...)
|
||||
|
||||
|
|
@ -46,9 +45,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
|
||||
|
||||
|
|
@ -58,16 +57,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
|
||||
{
|
||||
|
|
@ -81,9 +80,9 @@ 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": {
|
||||
|
|
@ -102,43 +101,44 @@ 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
|
||||
|
|
@ -176,11 +176,10 @@ Mouse commands are NOT rebindable and are not listed in the command 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"
|
||||
|
|
@ -197,23 +196,22 @@ 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.
|
||||
|
|
|
|||
|
|
@ -296,6 +296,10 @@ pub const TabBar = struct {
|
|||
if (!clipped)
|
||||
if (tab.widget.walk(ctx, f)) return true;
|
||||
}
|
||||
for (self.splits_list.widgets.items) |*split_widget| if (split_widget.widget.dynamic_cast(WidgetList)) |split|
|
||||
for (split.widgets.items) |*widget_state| if (widget_state.widget.dynamic_cast(drop_target.ButtonType)) |_| {
|
||||
if (widget_state.widget.walk(ctx, f)) return true;
|
||||
};
|
||||
return f(ctx, self_w);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue