Links between developer docs

This commit is contained in:
Igor Támara 2025-10-29 16:43:37 -05:00 committed by CJ van den Berg
parent 5eedc17542
commit e837a66b97
10 changed files with 318 additions and 243 deletions

View file

@ -44,27 +44,32 @@ offers services around the set of projects.
[]($section.id("commands"))
## Editor commands and modes
When a buffer is active, it has an `Editor` attached to it; an editor
might have associated tree-sitter support, given the file type detected,
and offers common services that are aimed to be used by `Commands` to
manipulate the contents of a buffer at a higher level, the selections,
cursors, cursor selections `CurSel` and the `View`. The commands are
used by `Modes` with `Keybindings`. The main mode is Flow and the
keybindings can be used to map to a mode built up entirely on solely
calling already created commands. An example of a mode created by
command composition is `Emacs` mode, for instance, it's possible to
create a nano mode with just keybindings. In the other hand, `Vim` and
`Helix` modes have particular definitions for commands that interact
with the buffers, being modal editors.
When a buffer is active, it has an [Editor](/docs/architecture/editor)
attached to it; an editor might have associated tree-sitter support,
given the file type detected, and offers common services that are aimed
to be used by `Commands` to manipulate the contents of a buffer at a
higher level, the selections, cursors, cursor selections `CurSel` and
the `View`. [Commands](/docs/architecture/command) are used by `Modes`
with [Keybindings](/docs/architecture/keybind). The main mode is Flow
and the keybindings can be used to map to a mode built up entirely on
solely calling already created commands. An example of a mode
created by command composition is `Emacs` mode, for instance, it's
possible to create a nano mode with just keybindings. In the other hand,
`Vim` and [Helix](/docs/mode/helix) modes have particular definitions
for commands that interact with the buffers, being modal editors.
[]($section.id("tui"))
## Text user interface
`Tui` governs it all offering support for `Palettes` that are known
in other environments as pickers, as well as offering information
through a set of `_views` (i.e. `logview`, `inputview`,
`inspector_view`) and `status` (i.e. `tabs`, `clock`, `branch`,
`linenum`).
`Tui` governs it all offering support for
[palettes](/docs/architecture/palette) that are known in other
environments as pickers, as well as offering information through a
set of `_views` (i.e. `logview`, `inputview`, `inspector_view`) and
`status` (i.e. `tabs`, `clock`, `branch`, `linenum`), in the statusbar
[minimodes](/docs/architecture/minimode) will be present too, those
that receive more keypresses to offer additional functionality, such
as finding in files, finding in the current buffer, open files
and replacing a character.
[]($section.id("oses"))
## Operating systems and UI
@ -77,16 +82,16 @@ and Android via Termux, while in Windows there is an special GUI.
## Communication between components
[Thespian](https://github.com/neurocyte/thespian) is in charge of
processes synchronization and allows sending messages between
different flow components, for example, when a widget needs
updating information from changing states of internal data and
when components or external processes take time and need to return
an answer, all this without blocking the user interface. Tree-sitter
queries to highlight the current file of a particular
language and LSPs usually take time by the nature of operations they
perform, integration with git and running a `shell` command via a
`task` all are coordinated thanks to the infrastructure that
Thespian provides.
processes synchronization and allows sending
[messages between different flow components](/docs/architecture/inner_data_exchange),
for example, when a widget needs updating information from changing
states of internal data and when components or external processes take
time and need to return an answer, all this without blocking the user
interface. Tree-sitter queries to highlight the current file of a
particular language and LSPs usually take time by the nature of
operations they perform, integration with git and running a `shell`
command via a `task` all are coordinated thanks to the infrastructure
that Thespian provides.
[]($section.id("languages"))
## Programming languages support
@ -111,7 +116,7 @@ feedback via `logview`. To view logs use `f11` to toggle the
previous messages, or alternatively, open flow with the option
`--show-logs`.
To log something import
To log something, first import
```zig
const log = @import("log");
@ -135,13 +140,14 @@ logger.print("{} unsaved buffer(s) remaining", .{remaining});
### View key presses
There are situations when you press some keys without the expected
behavior happening, to review if flow is getting the keys, or your desktop
environment or something else are capturing them, you will want to
invoke flow with the option `--show-input`.
behavior happening, to review if flow is getting the keys, or your
desktop environment or something else are capturing them, you will want
to invoke flow with the option `--show-input`.
[]($section.id("next"))
## Next steps
* [Guidelines for contributions](/docs/contributing)
* [Take a peek on testing](/docs/testing)
* [Configure some keybinds](/docs/architecture/keybind)
* [Back to docs](/docs)