Since I'm actively developing steel alongside the helix integration in order to make things as smooth as possible, its not referencing a published version yet.
## Installing Steel
Follow the instructions here https://github.com/mattwparas/steel and https://github.com/mattwparas/steel/issues/71
Setting a `STEEL_HOME` env var, then running `cargo run -- cogs/install.scm` in the root of that repo will set up the steel core libraries so that helix can reference them.
## Installing helix
Once you're set up with steel, just run
`cargo install --path helix-term --locked`
To install the `hx` executable, with steel as the plugin language.
## Setting up configurations for helix
Note, this API is entirely subjet to change, and I promise absolutely 0 backwards compatibility while this is in development.
There are 2 important files you'll want:
*`~/.config/helix/helix.scm`
*`~/.config/helix/init.scm`
Note - these both live inside the same directory that helix sets up for runtime configurations.
### `helix.scm`
The `helix.scm` module will be loaded first before anything else, the runtime will `require` this module, and any functions exported will now be available
Now, if you'd like to add the current file you're editing to git, simply type `:git-add` - you'll see the doc pop up with it since we've annotated the function
with the `@doc` symbol. Hitting enter will execute the command.
You can also conveniently open the `helix.scm` file by using the typed command `:open-helix-scm`.
### `init.scm`
The `init.scm` file is run at the top level, immediately after the `helix.scm` module is `require`d. The helix context is available here, so you can interact with the editor.
The helix context is bound to the top level variable `*helix.cx*`.
For example, if we wanted to select a random theme at startup:
In insert mode, this overrides the `ret` keybinding to instead use a custom scheme indent function. Functions _must_ be available as typed commands, and are referred to
as symbols. So in this case, the `scheme-indent` function was exported by my `helix.scm` module.