helix-editor/helix
By the numbers
Data collected on 2026-04-30 from the master branch at commit 3beb2680.
Size
The repository has 7,390 commits and 244 Rust source files totaling about 103,000 lines of code. Bundled assets (themes, queries, grammars) account for the rest.
| Crate | Lines of Rust |
|---|---|
helix-term |
30,633 |
helix-core |
19,586 |
helix-view |
14,495 |
helix-lsp-types |
9,904 |
helix-tui |
5,891 |
helix-lsp |
4,025 |
helix-stdx |
2,170 |
helix-vcs |
1,344 |
helix-loader |
1,254 |
helix-dap |
1,103 |
helix-event |
1,094 |
helix-dap-types |
1,050 |
helix-parsec |
574 |
xychart-beta horizontal
title "Lines of Rust per crate"
x-axis ["helix-term", "helix-core", "helix-view", "helix-lsp-types", "helix-tui", "helix-lsp", "helix-stdx", "helix-vcs", "helix-loader", "helix-dap", "helix-event", "helix-dap-types", "helix-parsec"]
y-axis "Lines"
bar [30633, 19586, 14495, 9904, 5891, 4025, 2170, 1344, 1254, 1103, 1094, 1050, 574]Bundled assets
| Asset | Count |
|---|---|
Languages with query directories under runtime/queries/ |
332 |
Tree-sitter query files (*.scm) |
1,073 |
Bundled themes (runtime/themes/*.toml) |
214 |
[[language]] entries in languages.toml |
658 (counting all name = keys) |
The runtime/queries/ directory has more language directories than languages.toml has language entries because some languages share grammars and inherit queries (e.g. c-sharp and several derivatives).
Largest source files
| File | Lines |
|---|---|
helix-term/src/commands.rs |
7,133 |
helix-term/src/commands/typed.rs |
4,452 |
helix-lsp-types/src/lib.rs |
2,889 |
helix-view/src/document.rs |
2,695 |
helix-view/src/editor.rs |
2,514 |
helix-core/src/movement.rs |
2,197 |
helix-lsp/src/client.rs |
1,727 |
helix-term/src/ui/editor.rs |
1,725 |
helix-term/src/commands/lsp.rs |
1,458 |
helix-core/src/selection.rs |
1,458 |
The two largest files are both command tables. They are big by intent — the bulk of editor behaviour is declared there.
Activity
Commits per year
| Year | Commits |
|---|---|
| 2020 | 223 |
| 2021 | 1,981 |
| 2022 | 1,757 |
| 2023 | 1,250 |
| 2024 | 934 |
| 2025 | 961 |
| 2026 (Jan-Apr) | 285 |
The peak years (2021-2022) coincide with the growth from "experimental editor" to "popular editor with regular releases". 2023-2026 settled into a steady ~1,000 commits/year cadence.
Commits in the last 90 days
213 commits across the workspace. Top-changed source files in this window:
| File | Commits in last 90 days |
|---|---|
helix-term/src/commands.rs |
13 |
helix-view/src/editor.rs |
7 |
helix-view/src/document.rs |
6 |
languages.toml |
45 |
languages.toml churn is mostly grammar revision bumps; in CI Dependabot opens [ci-bump] PRs for each new grammar tag.
Bot-attributed commits
Of the all-time commits, 667 (~9.0%) come from dependabot[bot]. Helix uses Dependabot for Rust dep bumps and language grammar updates. This is a lower bound on automation involvement — IDE-side AI assistance (Copilot, Codeium, etc.) leaves no trace in git history.
Complexity
Mode-of-failure: oversized commands.rs
helix-term/src/commands.rs is 7,133 lines and has been the largest file in the codebase since 2021. It contains every Rust-bound command. There has been recurring discussion about splitting it, and the commands/ subdirectory (dap.rs, lsp.rs, syntax.rs, typed.rs) holds spillovers, but the main commands.rs remains the defining table.
TODO and FIXME
193 occurrences of TODO, FIXME, or HACK across the workspace. The patterns:
TODO: features not yet implemented (e.g. extended LSP capabilities, tree-sitter feature parity).FIXME/HACK: known-bad code paths waiting for upstream fixes (tokiochannel cap notes, Windows-specific quirks).
Test-to-code ratio
Integration tests live in helix-term/tests/test/ and exercise the full application via TestBackend. Per-crate tests/ directories add focused integration tests (e.g. helix-core/tests/indent.rs covers indentation across many languages). Unit tests are inline #[cfg(test)] mod tests blocks. The selection-aware test helpers in helix-core/src/test.rs make multi-cursor assertions concise.
Dependencies
The workspace [workspace.dependencies] table has ~20 entries; per-crate Cargo.tomls pull from it via dep.workspace = true. Notable production dependencies:
| Dep | Purpose |
|---|---|
tree-house |
Tree-sitter wrapper (since 25.07). |
ropey |
The rope text buffer. |
tokio |
Async runtime. |
nucleo |
Fuzzy matcher (pickers). |
tree-sitter (via tree-house) |
Incremental parsing. |
slotmap |
ViewId/LanguageServerId/DebugAdapterId allocation. |
gix |
Git operations in helix-vcs. |
termina (Unix), crossterm (Windows) |
Terminal backends. |
etcetera |
XDG-style path resolution. |
arc-swap |
Lock-free reads of slowly-changing state. |
serde, toml, serde_json, sonic-rs |
Serialization. |
pulldown-cmark |
Markdown rendering for hover popups. |
nix/signal-hook/libc |
Unix signals. |
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.