Open-Source Wikis

/

Helix

/

By the numbers

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 (tokio channel 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.

By the numbers – Helix wiki | Factory