67 lines
No EOL
2.6 KiB
Text
67 lines
No EOL
2.6 KiB
Text
---
|
|
.title = "Helix Mode",
|
|
.date = @date("2025-10-10T00:00:00"),
|
|
.author = "Igor Támara",
|
|
.layout = "tutorial.shtml",
|
|
.draft = false,
|
|
.custom = {
|
|
.githubedit = "/docs/mode/helix.smd",
|
|
.codepath = "src/tui/mode/helix.zig",
|
|
},
|
|
---
|
|
|
|
This document describes implementation of Helix Mode.
|
|
|
|
## What and what not
|
|
|
|
The first and biggest difference is that Flow has a mode that emulates
|
|
Helix, or at least has equivalent of the worthiest actions that can be
|
|
done with Helix. The conversely is not true.
|
|
|
|
`:` opens up Flow's rich command palette that might have
|
|
functionalities Helix users are used to have, if you find something
|
|
missing, it's possible to
|
|
[open a Feature Request](https://github.com/neurocyte/flow/issues),
|
|
make sure to review
|
|
[other issues](https://github.com/neurocyte/flow/issues?q=is%3Aissue%20state%3Aopen%20label%3Ahelix-mode)
|
|
to avoid repeating or see if there is anyone interested in porting on
|
|
[Discord](https://discord.gg/kzJC9fA7) to ask if or there is a
|
|
workaoround, remember that it's possible to bounce back to Flow mode
|
|
if needed.
|
|
|
|
## Enhancing hx mode
|
|
|
|
This is a programmer editor, you are more than welcome to enhance to
|
|
suit your needs that maybe coincide with others.
|
|
|
|
Please take a look at [architecture](/docs/architecture) and
|
|
[contributing](/docs/contributing) for an overview and the mechanics
|
|
of getting your changes into Flow.
|
|
|
|
hx mode is modal kind, the same as vim mode, and the file that has the
|
|
particular work to make it real is in `src/tui/mode/helix.zig`, adding
|
|
a `command` and the corresponding `meta` is what is required.
|
|
[More on commands](/docs/architecture/command).
|
|
|
|
### Pickers
|
|
|
|
Flow hx mode offers most of the picker types equivalents with `panels`
|
|
and [palettes](/docs/architecture/palette). Example of panels are
|
|
the `g` `r` (go to reference from lsp) and `space` `/` (a.k.a find in
|
|
files). Examples of `palettes` are `space` `b` to pick a buffer or
|
|
`space` `f` to open a file in your project. Panels open below the
|
|
editor while palettes open overlapping the working area.
|
|
|
|
One medium sized project is to create a widget that has one input
|
|
widget, two panels, on the left, the list of options and, on the right,
|
|
the preview of the selected option and offer various keybindings to
|
|
manipulate the objects inside both panels with filtering.
|
|
|
|
Said all of this, it's possible to start contributing via pull
|
|
requesting [keybinds](/docs/architecture/keybind),
|
|
[commands](/docs/architecture/command),
|
|
[palettes](/docs/architecture/palette), or the special widget
|
|
mentioned previously.
|
|
|
|
More about the [architecture](/docs/architecture) or jump to
|
|
[contribution guidelines](/docs/contributing). |