Add documention for the Helix editor (#1085)

* add helix icon

* make helix setup guide based off of godot's

* register helix in docs controller

* Update docs/editors/helix.md

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update docs/editors/helix.md

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update docs/editors/helix.md

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update docs/editors/helix.md

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update docs/editors/helix.md

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Casing changes

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Mahad Kalam <55807755+skyfallwastaken@users.noreply.github.com>
This commit is contained in:
Michael 2026-03-19 05:19:52 -06:00 committed by GitHub
parent e0423fe495
commit 41f30aadc1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 135 additions and 1 deletions

View file

@ -21,7 +21,8 @@ class DocsController < InertiaController
[ "Eclipse", "eclipse" ],
[ "Emacs", "emacs" ], [ "Eric", "eric" ],
[ "Figma", "figma" ], [ "Gedit", "gedit" ],
[ "Godot", "godot" ], [ "GoLand", "goland" ], [ "HBuilder X", "hbuilder-x" ],
[ "Godot", "godot" ], [ "GoLand", "goland" ],
[ "HBuilder X", "hbuilder-x" ], [ "Helix", "helix" ],
[ "IntelliJ IDEA", "intellij-idea" ], [ "Jupyter", "jupyter" ],
[ "Kakoune", "kakoune" ], [ "Kate", "kate" ], [ "Komodo", "komodo" ],
[ "Micro", "micro" ], [ "MPS", "mps" ], [ "Neovim", "neovim" ],

133
docs/editors/helix.md Normal file
View file

@ -0,0 +1,133 @@
# Helix & Hackatime Setup
![Helix](/images/editor-icons/helix-128.png)
Follow these steps to start tracking your coding in Helix with Hackatime:
## 1: Log in to Hackatime
**[hackatime.hackclub.com](https://hackatime.hackclub.com)**
Sign in with your Hackatime account (or create one if you don't have one yet)!
## 2: Set up Hackatime
Follow the instructions on the site, then copy the command into whatever terminal program you use. (The command will be different on Windows - make sure to pick the right one!)
This will set some environment variables and tell Hackatime where to "phone home" when you're working.
**💡 Visit our [setup page](https://hackatime.hackclub.com/my/wakatime_setup) to automatically configure everything!**
## 3: Install Helix
**[docs.helix-editor.com](https://docs.helix-editor.com/install.html)**
Download the Helix binary, or if you know what you're doing, use your distro's package manager for any special builds!
## 4: Install `wakatime-cli`
**[github.com/wakatime/wakatime-cli](https://github.com/wakatime/wakatime-cli/releases/latest)**
This binary is required for Helix to be able to send your time to Hackatime.
You can check that it's installed correctly through your `PATH` environment variable by running `which wakatime-cli` or `which wakatime` (Linux/macOS) or `where wakatime-cli` or `where wakatime` (Windows) in your terminal.
## 5: Install `wakatime-ls`
**[github.com/mrnossiom/wakatime-ls](https://github.com/mrnossiom/wakatime-ls)**
You can either download the binary from [GitHub Releases](https://github.com/mrnossiom/wakatime-ls/releases/latest), or if you have `cargo` installed: `cargo install wakatime-ls`.
Please note that there are no binaries for Windows available on GitHub releases, if you're on Windows, you will have to use `cargo install wakatime-ls`
You can check that it's installed correctly through your `PATH` environment variable by running `which wakatime-ls` (Linux/MacOS) or `where wakatime-ls` (Windows) in your terminal.
## 6: Configure Helix's languages
The way this method works relies on having an [LSP](https://microsoft.github.io/language-server-protocol/) tracking your code changes, as Helix does not currently have a plugin system. This means that you have to add this LSP to every language you're planning to use.
Start by creating a `languages.toml` file in the Helix configuration directory. On Linux/MacOS, this would be `~/.config/helix/languages.toml`, and on Windows it would be `%AppData%\helix\languages.toml`.
### Register the LSP
Inside Helix's `languages.toml` file, add the following content:
```toml
[language-server.wakatime]
command = "wakatime-ls"
```
This registers the Wakatime LSP in Helix, allowing it to be used for other languages.
### Add the LSP to your languages
1. Find the language you want to track in the [master `languages.toml`](https://github.com/helix-editor/helix/blob/master/languages.toml). For example, the master Rust configuration looks like this:
```toml
[[language]]
name = "rust"
scope = "source.rust"
injection-regex = "rs|rust"
file-types = ["rs"]
roots = ["Cargo.toml", "Cargo.lock"]
shebangs = ["rust-script", "cargo"]
auto-format = true
comment-tokens = ["//", "///", "//!"]
block-comment-tokens = [
{ start = "/*", end = "*/" },
{ start = "/**", end = "*/" },
{ start = "/*!", end = "*/" },
]
language-servers = [ "rust-analyzer" ]
indent = { tab-width = 4, unit = " " }
persistent-diagnostic-sources = ["rustc", "clippy"]
```
2. Copy the `[[language]]` header, the name property, and the language servers property to your own `languages.toml`:
```toml
[[language]]
name = "rust"
language-servers = [ "rust-analyzer" ]
```
3. Add `"wakatime"` to the list of language-servers:
```toml
[[language]]
name = "rust"
language-servers = [ "rust-analyzer", "wakatime" ]
```
4. Your final `languages.toml` may look something like this:
```toml
[language-server.wakatime]
command = "wakatime-ls"
[[language]]
name = "rust"
language-servers = [ "rust-analyzer", "wakatime" ]
```
5. If you want to add more languages, simply repeat these steps! Here's an example with Ruby and Javascript:
```toml
[language-server.wakatime]
command = "wakatime-ls"
[[language]]
name = "rust"
language-servers = [ "rust-analyzer", "wakatime" ]
[[language]]
name = "ruby"
language-servers = [ "ruby-lsp", "solargraph", "wakatime" ]
[[language]]
name = "javascript"
language-servers = [ "typescript-language-server", "wakatime" ]
```
## All done!
After you're finished setting everything up, restart Helix, then make sure to check **[hackatime.hackclub.com](https://hackatime.hackclub.com)** after a little while and ensure you're logging progress!
You can also try some **[wakatime.com/plugins](https://wakatime.com/plugins)** if you'd like to log time spent editing your project in other programs.
## Troubleshooting
- **Not seeing your time?** Make sure you completed the [setup page](https://hackatime.hackclub.com/my/wakatime_setup) first.
- **LSP hasn't started?** Type `:lsp-restart ` in Helix for it to autocomplete the active LSPs. If `wakatime` isn't listed, then it's not setup in your `languages.toml` correctly.
- **Language server exited?** This error will show up if you haven't installed everything correctly. Double check that `wakatime` and `wakatime-ls` are installed using `which` (Linux/MacOS) or `where` (Windows).
- **Still stuck?** Ask for help in [Hack Club Slack](https://hackclub.slack.com) (#hackatime-help channel)

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB