Full Code of helix-editor/helix for AI

master 0d7e1dc93aab cached
1642 files
6.4 MB
1.8M tokens
5467 symbols
1 requests
Download .txt
Showing preview only (7,008K chars total). Download the full file or copy to clipboard to get everything.
Repository: helix-editor/helix
Branch: master
Commit: 0d7e1dc93aab
Files: 1642
Total size: 6.4 MB

Directory structure:
gitextract_kny5h8t2/

├── .cargo/
│   └── config.toml
├── .envrc
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yaml
│   │   └── enhancement.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── build.yml
│       ├── cachix.yml
│       ├── gh-pages.yml
│       ├── languages.toml
│       └── release.yml
├── .gitignore
├── CHANGELOG.md
├── Cargo.toml
├── LICENSE
├── README.md
├── base16_theme.toml
├── contrib/
│   ├── Helix.appdata.xml
│   ├── Helix.desktop
│   ├── completion/
│   │   ├── hx.bash
│   │   ├── hx.elv
│   │   ├── hx.fish
│   │   ├── hx.nu
│   │   └── hx.zsh
│   └── hx_launcher.sh
├── default.nix
├── docs/
│   ├── CONTRIBUTING.md
│   ├── architecture.md
│   ├── releases.md
│   └── vision.md
├── flake.nix
├── grammars.nix
├── helix-core/
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── src/
│   │   ├── auto_pairs.rs
│   │   ├── case_conversion.rs
│   │   ├── chars.rs
│   │   ├── command_line.rs
│   │   ├── comment.rs
│   │   ├── completion.rs
│   │   ├── config.rs
│   │   ├── diagnostic.rs
│   │   ├── diff.rs
│   │   ├── doc_formatter/
│   │   │   └── test.rs
│   │   ├── doc_formatter.rs
│   │   ├── editor_config.rs
│   │   ├── fuzzy.rs
│   │   ├── graphemes.rs
│   │   ├── history.rs
│   │   ├── increment/
│   │   │   ├── date_time.rs
│   │   │   ├── integer.rs
│   │   │   └── mod.rs
│   │   ├── indent.rs
│   │   ├── lib.rs
│   │   ├── line_ending.rs
│   │   ├── macros.rs
│   │   ├── match_brackets.rs
│   │   ├── movement.rs
│   │   ├── object.rs
│   │   ├── position.rs
│   │   ├── rope_reader.rs
│   │   ├── search.rs
│   │   ├── selection.rs
│   │   ├── snippets/
│   │   │   ├── active.rs
│   │   │   ├── elaborate.rs
│   │   │   ├── parser.rs
│   │   │   └── render.rs
│   │   ├── snippets.rs
│   │   ├── surround.rs
│   │   ├── syntax/
│   │   │   └── config.rs
│   │   ├── syntax.rs
│   │   ├── test.rs
│   │   ├── text_annotations.rs
│   │   ├── textobject.rs
│   │   ├── transaction.rs
│   │   ├── uri.rs
│   │   └── wrap.rs
│   └── tests/
│       ├── data/
│       │   └── indent/
│       │       ├── cpp.cpp
│       │       ├── languages.toml
│       │       └── rust.rs
│       └── indent.rs
├── helix-dap/
│   ├── Cargo.toml
│   └── src/
│       ├── client.rs
│       ├── lib.rs
│       ├── registry.rs
│       └── transport.rs
├── helix-dap-types/
│   ├── Cargo.toml
│   └── src/
│       └── lib.rs
├── helix-event/
│   ├── Cargo.toml
│   └── src/
│       ├── cancel.rs
│       ├── debounce.rs
│       ├── hook.rs
│       ├── lib.rs
│       ├── redraw.rs
│       ├── registry.rs
│       ├── runtime.rs
│       ├── status.rs
│       └── test.rs
├── helix-loader/
│   ├── Cargo.toml
│   ├── build.rs
│   └── src/
│       ├── config.rs
│       ├── grammar.rs
│       ├── lib.rs
│       └── main.rs
├── helix-lsp/
│   ├── Cargo.toml
│   └── src/
│       ├── client.rs
│       ├── file_event.rs
│       ├── file_operations.rs
│       ├── jsonrpc.rs
│       ├── lib.rs
│       └── transport.rs
├── helix-lsp-types/
│   ├── Cargo.toml
│   ├── LICENSE
│   ├── README.md
│   └── src/
│       ├── call_hierarchy.rs
│       ├── code_action.rs
│       ├── code_lens.rs
│       ├── color.rs
│       ├── completion.rs
│       ├── document_diagnostic.rs
│       ├── document_highlight.rs
│       ├── document_link.rs
│       ├── document_symbols.rs
│       ├── error_codes.rs
│       ├── file_operations.rs
│       ├── folding_range.rs
│       ├── formatting.rs
│       ├── hover.rs
│       ├── inlay_hint.rs
│       ├── inline_completion.rs
│       ├── inline_value.rs
│       ├── lib.rs
│       ├── linked_editing.rs
│       ├── lsif.rs
│       ├── moniker.rs
│       ├── notification.rs
│       ├── progress.rs
│       ├── references.rs
│       ├── rename.rs
│       ├── request.rs
│       ├── selection_range.rs
│       ├── semantic_tokens.rs
│       ├── signature_help.rs
│       ├── trace.rs
│       ├── type_hierarchy.rs
│       ├── window.rs
│       ├── workspace_diagnostic.rs
│       ├── workspace_folders.rs
│       └── workspace_symbols.rs
├── helix-parsec/
│   ├── Cargo.toml
│   └── src/
│       └── lib.rs
├── helix-stdx/
│   ├── Cargo.toml
│   ├── src/
│   │   ├── env.rs
│   │   ├── faccess.rs
│   │   ├── lib.rs
│   │   ├── path.rs
│   │   ├── range.rs
│   │   └── rope.rs
│   └── tests/
│       └── path.rs
├── helix-term/
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── build.rs
│   ├── src/
│   │   ├── application.rs
│   │   ├── args.rs
│   │   ├── commands/
│   │   │   ├── dap.rs
│   │   │   ├── lsp.rs
│   │   │   ├── syntax.rs
│   │   │   └── typed.rs
│   │   ├── commands.rs
│   │   ├── compositor.rs
│   │   ├── config.rs
│   │   ├── events.rs
│   │   ├── handlers/
│   │   │   ├── auto_save.rs
│   │   │   ├── completion/
│   │   │   │   ├── item.rs
│   │   │   │   ├── path.rs
│   │   │   │   ├── request.rs
│   │   │   │   ├── resolve.rs
│   │   │   │   └── word.rs
│   │   │   ├── completion.rs
│   │   │   ├── diagnostics.rs
│   │   │   ├── document_colors.rs
│   │   │   ├── document_highlight.rs
│   │   │   ├── document_links.rs
│   │   │   ├── prompt.rs
│   │   │   ├── signature_help.rs
│   │   │   └── snippet.rs
│   │   ├── handlers.rs
│   │   ├── health.rs
│   │   ├── job.rs
│   │   ├── keymap/
│   │   │   ├── default.rs
│   │   │   └── macros.rs
│   │   ├── keymap.rs
│   │   ├── lib.rs
│   │   ├── main.rs
│   │   └── ui/
│   │       ├── completion.rs
│   │       ├── document.rs
│   │       ├── editor.rs
│   │       ├── info.rs
│   │       ├── lsp/
│   │       │   ├── hover.rs
│   │       │   └── signature_help.rs
│   │       ├── lsp.rs
│   │       ├── markdown.rs
│   │       ├── menu.rs
│   │       ├── mod.rs
│   │       ├── overlay.rs
│   │       ├── picker/
│   │       │   ├── handlers.rs
│   │       │   └── query.rs
│   │       ├── picker.rs
│   │       ├── popup.rs
│   │       ├── prompt.rs
│   │       ├── select.rs
│   │       ├── spinner.rs
│   │       ├── statusline.rs
│   │       ├── text.rs
│   │       ├── text_decorations/
│   │       │   └── diagnostics.rs
│   │       └── text_decorations.rs
│   └── tests/
│       ├── integration.rs
│       └── test/
│           ├── auto_indent.rs
│           ├── auto_pairs.rs
│           ├── command_line.rs
│           ├── commands/
│           │   ├── insert.rs
│           │   ├── movement.rs
│           │   ├── reverse_selection_contents.rs
│           │   ├── rotate_selection_contents.rs
│           │   └── write.rs
│           ├── commands.rs
│           ├── helpers.rs
│           ├── languages/
│           │   ├── go.rs
│           │   ├── mod.rs
│           │   └── yaml.rs
│           ├── movement.rs
│           └── splits.rs
├── helix-tui/
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── README.md
│   ├── src/
│   │   ├── backend/
│   │   │   ├── crossterm.rs
│   │   │   ├── mod.rs
│   │   │   ├── termina.rs
│   │   │   └── test.rs
│   │   ├── buffer.rs
│   │   ├── layout.rs
│   │   ├── lib.rs
│   │   ├── symbols.rs
│   │   ├── terminal.rs
│   │   ├── text.rs
│   │   └── widgets/
│   │       ├── block.rs
│   │       ├── list.rs
│   │       ├── mod.rs
│   │       ├── paragraph.rs
│   │       ├── reflow.rs
│   │       └── table.rs
│   └── tests/
│       ├── terminal.rs
│       ├── text.rs
│       ├── widgets_block.rs
│       ├── widgets_list.rs
│       ├── widgets_paragraph.rs
│       └── widgets_table.rs
├── helix-vcs/
│   ├── Cargo.toml
│   └── src/
│       ├── diff/
│       │   ├── line_cache.rs
│       │   ├── worker/
│       │   │   └── test.rs
│       │   └── worker.rs
│       ├── diff.rs
│       ├── git/
│       │   └── test.rs
│       ├── git.rs
│       ├── lib.rs
│       └── status.rs
├── helix-view/
│   ├── Cargo.toml
│   ├── src/
│   │   ├── annotations/
│   │   │   └── diagnostics.rs
│   │   ├── annotations.rs
│   │   ├── clipboard.rs
│   │   ├── document.rs
│   │   ├── editor.rs
│   │   ├── events.rs
│   │   ├── expansion.rs
│   │   ├── graphics.rs
│   │   ├── gutter.rs
│   │   ├── handlers/
│   │   │   ├── completion.rs
│   │   │   ├── dap.rs
│   │   │   ├── diagnostics.rs
│   │   │   ├── lsp.rs
│   │   │   └── word_index.rs
│   │   ├── handlers.rs
│   │   ├── info.rs
│   │   ├── input.rs
│   │   ├── keyboard.rs
│   │   ├── lib.rs
│   │   ├── macros.rs
│   │   ├── register.rs
│   │   ├── theme.rs
│   │   ├── tree.rs
│   │   └── view.rs
│   └── tests/
│       └── encoding/
│           ├── LICENSE-WHATWG
│           ├── big5_in.txt
│           ├── big5_in_ref.txt
│           ├── big5_out.txt
│           ├── big5_out_ref.txt
│           ├── euc_kr_in.txt
│           ├── euc_kr_in_ref.txt
│           ├── euc_kr_out.txt
│           ├── euc_kr_out_ref.txt
│           ├── gb18030_in.txt
│           ├── gb18030_in_ref.txt
│           ├── gb18030_out.txt
│           ├── gb18030_out_ref.txt
│           ├── iso_2022_jp_in.txt
│           ├── iso_2022_jp_in_ref.txt
│           ├── iso_2022_jp_out.txt
│           ├── iso_2022_jp_out_ref.txt
│           ├── jis0208_in.txt
│           ├── jis0208_in_ref.txt
│           ├── jis0208_out.txt
│           ├── jis0208_out_ref.txt
│           ├── jis0212_in.txt
│           ├── jis0212_in_ref.txt
│           ├── shift_jis_in.txt
│           ├── shift_jis_in_ref.txt
│           ├── shift_jis_out.txt
│           └── shift_jis_out_ref.txt
├── languages.toml
├── runtime/
│   ├── queries/
│   │   ├── _gjs/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── _javascript/
│   │   │   ├── highlights.scm
│   │   │   ├── locals.scm
│   │   │   └── tags.scm
│   │   ├── _jsx/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── _typescript/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── ada/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── adl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── agda/
│   │   │   └── highlights.scm
│   │   ├── alloy/
│   │   │   └── highlights.scm
│   │   ├── amber/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── astro/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── awk/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── bash/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── basic/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── bass/
│   │   │   └── highlights.scm
│   │   ├── beancount/
│   │   │   ├── folds.scm
│   │   │   └── highlights.scm
│   │   ├── bibtex/
│   │   │   └── highlights.scm
│   │   ├── bicep/
│   │   │   └── highlights.scm
│   │   ├── bitbake/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── blade/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── blueprint/
│   │   │   └── highlights.scm
│   │   ├── c/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── c-sharp/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── c3/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── caddyfile/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── cairo/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── capnp/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── cel/
│   │   │   └── highlights.scm
│   │   ├── chuck/
│   │   │   └── highlights.scm
│   │   ├── circom/
│   │   │   ├── highlights.scm
│   │   │   └── locals.scm
│   │   ├── clarity/
│   │   │   └── highlights.scm
│   │   ├── clojure/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── cmake/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── codeql/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── comment/
│   │   │   └── highlights.scm
│   │   ├── common-lisp/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── cpon/
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── cpp/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── cross-config/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── crystal/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── css/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── csv/
│   │   │   └── highlights.scm
│   │   ├── cue/
│   │   │   └── highlights.scm
│   │   ├── cylc/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── cython/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── tags.scm
│   │   ├── d/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── dart/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── dbml/
│   │   │   └── highlights.scm
│   │   ├── debian/
│   │   │   └── highlights.scm
│   │   ├── devicetree/
│   │   │   └── highlights.scm
│   │   ├── dhall/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── diff/
│   │   │   └── highlights.scm
│   │   ├── djot/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── docker-bake/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── docker-compose/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── dockerfile/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── dot/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── doxyfile/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── dtd/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── dune/
│   │   │   └── highlights.scm
│   │   ├── dunstrc/
│   │   │   └── highlights.scm
│   │   ├── earthfile/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── ecma/
│   │   │   ├── README.md
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── edoc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── eex/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── eiffel/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── ejs/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── elisp/
│   │   │   ├── highlights.scm
│   │   │   └── tags.scm
│   │   ├── elixir/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── elm/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── elvish/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── embedded-perl/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── env/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── erb/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── erlang/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── esdl/
│   │   │   └── highlights.scm
│   │   ├── fennel/
│   │   │   ├── highlights.scm
│   │   │   └── rainbows.scm
│   │   ├── fga/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── fidl/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── fish/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── flatbuffers/
│   │   │   └── highlights.scm
│   │   ├── forth/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── fortran/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── freebasic/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── fsharp/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── gas/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── gdscript/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gemini/
│   │   │   └── highlights.scm
│   │   ├── gherkin/
│   │   │   └── highlights.scm
│   │   ├── ghostty/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── git-attributes/
│   │   │   └── highlights.scm
│   │   ├── git-cliff-config/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── git-commit/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── git-config/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── git-ignore/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── git-notes/
│   │   │   └── highlights.scm
│   │   ├── git-rebase/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── github-action/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── gitlab-ci/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gjs/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gleam/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── glimmer/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── glsl/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gn/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── gnuplot/
│   │   │   └── highlights.scm
│   │   ├── go/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── go-format-string/
│   │   │   ├── highlights.scm
│   │   │   └── rainbows.scm
│   │   ├── godot-resource/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gomod/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── gotmpl/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── gowork/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── gpr/
│   │   │   └── highlights.scm
│   │   ├── graphql/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── gren/
│   │   │   ├── highlights.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── groovy/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── gts/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── hare/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── haskell/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── haskell-literate/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── haskell-persistent/
│   │   │   ├── folds.scm
│   │   │   └── highlights.scm
│   │   ├── haxe/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── tags.scm
│   │   ├── hcl/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── hdl/
│   │   │   └── highlights.scm
│   │   ├── heex/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── helm/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── hocon/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── hoon/
│   │   │   └── highlights.scm
│   │   ├── hosts/
│   │   │   └── highlights.scm
│   │   ├── html/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── htmldjango/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── hurl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── hy/
│   │   │   └── highlights.scm
│   │   ├── hyprlang/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── iex/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── ini/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── ink/
│   │   │   └── highlights.scm
│   │   ├── inko/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── janet/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── java/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── javascript/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── jinja/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── jjconfig/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── jjdescription/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── jjrevset/
│   │   │   └── highlights.scm
│   │   ├── jjtemplate/
│   │   │   └── highlights.scm
│   │   ├── jq/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── jsdoc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── json/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── json-ld/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── json5/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── jsonc/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── jsonnet/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── jsx/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── julia/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── just/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── kcl/
│   │   │   └── highlights.scm
│   │   ├── kconfig/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── kdl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── klog/
│   │   │   └── highlights.scm
│   │   ├── koka/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── kotlin/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── koto/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── latex/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── ld/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── ldif/
│   │   │   └── highlights.scm
│   │   ├── lean/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── ledger/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── less/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── llvm/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── llvm-mir/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── llvm-mir-yaml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── log/
│   │   │   └── highlights.scm
│   │   ├── lpf/
│   │   │   └── highlights.scm
│   │   ├── lua/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── lua-format-string/
│   │   │   └── highlights.scm
│   │   ├── luap/
│   │   │   └── highlights.scm
│   │   ├── luau/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── mail/
│   │   │   ├── highlights.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── make/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── markdoc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── markdown/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── markdown-rustdoc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── markdown.inline/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── matlab/
│   │   │   ├── context.scm
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── mermaid/
│   │   │   └── highlights.scm
│   │   ├── meson/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── miseconfig/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── mojo/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── move/
│   │   │   └── highlights.scm
│   │   ├── msbuild/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── nasm/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── nearley/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── nestedtext/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── nginx/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── nickel/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── nim/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── nix/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── nu/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── nunjucks/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── ocaml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── ocaml-interface/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── odin/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── ohm/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── opencl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── openscad/
│   │   │   └── highlights.scm
│   │   ├── org/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── pascal/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── passwd/
│   │   │   └── highlights.scm
│   │   ├── pem/
│   │   │   └── highlights.scm
│   │   ├── penrose/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── perl/
│   │   │   ├── fold.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── pest/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── php/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── php-only/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── picat/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── pip-requirements/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── pkgbuild/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── pkl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── po/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── pod/
│   │   │   └── highlights.scm
│   │   ├── ponylang/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── powershell/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── prisma/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── prolog/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── properties/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── protobuf/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── proverif/
│   │   │   └── highlights.scm
│   │   ├── prql/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── ptx/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── pug/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── purescript/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── python/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── qml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── quarto/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── quint/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── r/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── racket/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── regex/
│   │   │   ├── highlights.scm
│   │   │   └── rainbows.scm
│   │   ├── rego/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── rescript/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── ripple/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── readme.md
│   │   │   └── tags.scm
│   │   ├── rmarkdown/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── robot/
│   │   │   └── highlights.scm
│   │   ├── robots.txt/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── ron/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── tags.scm
│   │   ├── rpmspec/
│   │   │   └── highlights.scm
│   │   ├── rshtml/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── rst/
│   │   │   ├── highlights.scm
│   │   │   └── tags.scm
│   │   ├── ruby/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── rust/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── rust-format-args/
│   │   │   └── highlights.scm
│   │   ├── rust-format-args-macro/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── sage/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── scala/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── scfg/
│   │   │   └── highlights.scm
│   │   ├── scheme/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── scss/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── shellcheckrc/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── slang/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── slint/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── slisp/
│   │   │   ├── highlights.scm
│   │   │   └── tags.scm
│   │   ├── smali/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── smithy/
│   │   │   └── highlights.scm
│   │   ├── sml/
│   │   │   └── highlights.scm
│   │   ├── snakemake/
│   │   │   ├── LICENSE
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── solidity/
│   │   │   ├── highlights.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── sourcepawn/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── spade/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── rainbows.scm
│   │   ├── spicedb/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── sql/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── sshclientconfig/
│   │   │   └── highlights.scm
│   │   ├── starlark/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── strace/
│   │   │   └── highlights.scm
│   │   ├── strictdoc/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── styx/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── supercollider/
│   │   │   ├── folds.scm
│   │   │   └── highlights.scm
│   │   ├── svelte/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── sway/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── swift/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── systemd/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── systemverilog/
│   │   │   └── highlights.scm
│   │   ├── t32/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── tablegen/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── tact/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── task/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── tcl/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── teal/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── locals.scm
│   │   ├── templ/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── tera/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── textproto/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── tfvars/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── thrift/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── tilt/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── tlaplus/
│   │   │   ├── highlights.scm
│   │   │   └── locals.scm
│   │   ├── todotxt/
│   │   │   └── highlights.scm
│   │   ├── toml/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── tql/
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── tsq/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── tsx/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── twig/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── typescript/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── typespec/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── typst/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── ungrammar/
│   │   │   └── highlights.scm
│   │   ├── unison/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── uxntal/
│   │   │   └── highlights.scm
│   │   ├── v/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── vala/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── vento/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── verilog/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── vhdl/
│   │   │   └── highlights.scm
│   │   ├── vhs/
│   │   │   └── highlights.scm
│   │   ├── vim/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── vue/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── wast/
│   │   │   └── highlights.scm
│   │   ├── wat/
│   │   │   └── highlights.scm
│   │   ├── webc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── werk/
│   │   │   └── highlights.scm
│   │   ├── wesl/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── wgsl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── wikitext/
│   │   │   ├── folds.scm
│   │   │   └── highlights.scm
│   │   ├── wit/
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── woodpecker-ci/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── wren/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── xit/
│   │   │   └── highlights.scm
│   │   ├── xml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── xtc/
│   │   │   └── highlights.scm
│   │   ├── yaml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── yara/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── yuck/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   └── zig/
│   │       ├── highlights.scm
│   │       ├── indents.scm
│   │       ├── injections.scm
│   │       └── textobjects.scm
│   ├── themes/
│   │   ├── README.md
│   │   ├── acid.toml
│   │   ├── acme.toml
│   │   ├── adwaita-dark.toml
│   │   ├── adwaita-light.toml
│   │   ├── akari-dawn.toml
│   │   ├── akari-night.toml
│   │   ├── amberwood.toml
│   │   ├── andromeda.toml
│   │   ├── ao.toml
│   │   ├── ashen.toml
│   │   ├── ashokai.toml
│   │   ├── ashokai_brahn.toml
│   │   ├── ashokai_evermoor.toml
│   │   ├── ashokai_urple.toml
│   │   ├── ataraxia.toml
│   │   ├── aura-dark-soft.toml
│   │   ├── aura-dark.toml
│   │   ├── aurara.toml
│   │   ├── autumn.toml
│   │   ├── autumn_night.toml
│   │   ├── ayu_dark.toml
│   │   ├── ayu_evolve.toml
│   │   ├── ayu_light.toml
│   │   ├── ayu_mirage.toml
│   │   ├── base16_default_dark.toml
│   │   ├── base16_default_light.toml
│   │   ├── base16_terminal.toml
│   │   ├── base16_transparent.toml
│   │   ├── beans.toml
│   │   ├── bogster.toml
│   │   ├── bogster_light.toml
│   │   ├── boo_berry.toml
│   │   ├── carbon.toml
│   │   ├── carbonfox.toml
│   │   ├── catppuccin_frappe.toml
│   │   ├── catppuccin_latte.toml
│   │   ├── catppuccin_macchiato.toml
│   │   ├── catppuccin_mocha.toml
│   │   ├── curzon.toml
│   │   ├── cyan_light.toml
│   │   ├── darcula-solid.toml
│   │   ├── darcula.toml
│   │   ├── dark-synthwave.toml
│   │   ├── dark_high_contrast.toml
│   │   ├── dark_plus.toml
│   │   ├── doom-one.toml
│   │   ├── doom_acario_dark.toml
│   │   ├── dracula.toml
│   │   ├── dracula_at_night.toml
│   │   ├── earl_grey.toml
│   │   ├── eiffel.toml
│   │   ├── eldritch.toml
│   │   ├── eldritch_transparent.toml
│   │   ├── emacs.toml
│   │   ├── everblush.toml
│   │   ├── everforest_dark.toml
│   │   ├── everforest_light.toml
│   │   ├── faded-prism.toml
│   │   ├── ferra.toml
│   │   ├── flatwhite.toml
│   │   ├── fleet_dark.toml
│   │   ├── flexoki_dark.toml
│   │   ├── flexoki_light.toml
│   │   ├── focus_nova.toml
│   │   ├── github_dark.toml
│   │   ├── github_dark_colorblind.toml
│   │   ├── github_dark_dimmed.toml
│   │   ├── github_dark_high_contrast.toml
│   │   ├── github_dark_tritanopia.toml
│   │   ├── github_light.toml
│   │   ├── github_light_colorblind.toml
│   │   ├── github_light_high_contrast.toml
│   │   ├── github_light_tritanopia.toml
│   │   ├── gruber-darker.toml
│   │   ├── gruvbox-material.toml
│   │   ├── gruvbox.toml
│   │   ├── gruvbox_dark_hard.toml
│   │   ├── gruvbox_dark_soft.toml
│   │   ├── gruvbox_light.toml
│   │   ├── gruvbox_light_hard.toml
│   │   ├── gruvbox_light_soft.toml
│   │   ├── gruvbox_material_dark_hard.toml
│   │   ├── gruvbox_material_dark_medium.toml
│   │   ├── gruvbox_material_dark_soft.toml
│   │   ├── gruvbox_material_light_hard.toml
│   │   ├── gruvbox_material_light_medium.toml
│   │   ├── gruvbox_material_light_soft.toml
│   │   ├── hazyland.toml
│   │   ├── heisenberg.toml
│   │   ├── hex_lavender.toml
│   │   ├── hex_poison.toml
│   │   ├── hex_steel.toml
│   │   ├── hex_toxic.toml
│   │   ├── horizon-dark.toml
│   │   ├── iceberg-dark.toml
│   │   ├── iceberg-light.toml
│   │   ├── ingrid.toml
│   │   ├── iroaseta.toml
│   │   ├── jellybeans.toml
│   │   ├── jetbrains_cyan_light.toml
│   │   ├── jetbrains_dark.toml
│   │   ├── kanagawa-dragon.toml
│   │   ├── kanagawa-lotus.toml
│   │   ├── kanagawa.toml
│   │   ├── kaolin-dark.toml
│   │   ├── kaolin-light.toml
│   │   ├── kaolin-valley-dark.toml
│   │   ├── kinda_nvim.toml
│   │   ├── kinda_nvim_light.toml
│   │   ├── lapis_aquamarine.toml
│   │   ├── licenses/
│   │   │   ├── akari.license
│   │   │   ├── ashen.license
│   │   │   ├── aura.LICENSE
│   │   │   ├── carbonfox.license
│   │   │   ├── dark-synthwave.license
│   │   │   ├── doom-one.LICENSE
│   │   │   ├── everforest.LICENSE
│   │   │   ├── faded-prism.LICENSE
│   │   │   ├── jetbrains_cyan_light.LICENSE
│   │   │   ├── kinda_nvim.LICENSE
│   │   │   ├── lapis_aquamarine.LICENSE
│   │   │   ├── modus_vivendi.LICENSE
│   │   │   ├── modus_vivendi_deuteranopia.LICENSE
│   │   │   ├── modus_vivendi_tinted.LICENSE
│   │   │   ├── modus_vivendi_tritanopia.LICENSE
│   │   │   ├── noctis.LICENSE
│   │   │   ├── poimandres.LICENSE
│   │   │   ├── serika-syntax.LICENSE
│   │   │   ├── sonokai.LICENSE
│   │   │   ├── starlight.LICENSE
│   │   │   ├── vesper.LICENSE
│   │   │   └── zenburn.license
│   │   ├── material_darker.toml
│   │   ├── material_deep_ocean.toml
│   │   ├── material_oceanic.toml
│   │   ├── material_palenight.toml
│   │   ├── meliora.toml
│   │   ├── mellow.toml
│   │   ├── merionette.toml
│   │   ├── modus_operandi.toml
│   │   ├── modus_operandi_deuteranopia.toml
│   │   ├── modus_operandi_tinted.toml
│   │   ├── modus_operandi_tritanopia.toml
│   │   ├── modus_vivendi.toml
│   │   ├── modus_vivendi_deuteranopia.toml
│   │   ├── modus_vivendi_tinted.toml
│   │   ├── modus_vivendi_tritanopia.toml
│   │   ├── molokai.toml
│   │   ├── monokai.toml
│   │   ├── monokai_aqua.toml
│   │   ├── monokai_pro.toml
│   │   ├── monokai_pro_machine.toml
│   │   ├── monokai_pro_octagon.toml
│   │   ├── monokai_pro_ristretto.toml
│   │   ├── monokai_pro_spectrum.toml
│   │   ├── monokai_soda.toml
│   │   ├── naysayer.toml
│   │   ├── neonotte.toml
│   │   ├── neonotte84.toml
│   │   ├── new_moon.toml
│   │   ├── night_owl.toml
│   │   ├── night_rider.toml
│   │   ├── nightfox.toml
│   │   ├── noctis.toml
│   │   ├── noctis_bordo.toml
│   │   ├── nord-night.toml
│   │   ├── nord.toml
│   │   ├── nord_light.toml
│   │   ├── nvchad_solarized_dark.toml
│   │   ├── nvim-dark.toml
│   │   ├── nyxvamp-obsidian.toml
│   │   ├── nyxvamp-radiance.toml
│   │   ├── nyxvamp-transparent.toml
│   │   ├── nyxvamp-veil.toml
│   │   ├── ocean-space.toml
│   │   ├── omicron_dark.toml
│   │   ├── omicron_light.toml
│   │   ├── onedark.toml
│   │   ├── onedark_vibrant.toml
│   │   ├── onedarker.toml
│   │   ├── onedarker_vibrant.toml
│   │   ├── onelight.toml
│   │   ├── papercolor-dark.toml
│   │   ├── papercolor-light.toml
│   │   ├── peachpuff.toml
│   │   ├── penumbra+.toml
│   │   ├── poimandres.toml
│   │   ├── poimandres_storm.toml
│   │   ├── pop-dark.toml
│   │   ├── rasmus.toml
│   │   ├── rose_pine.toml
│   │   ├── rose_pine_dawn.toml
│   │   ├── rose_pine_moon.toml
│   │   ├── seoul256-dark-hard.toml
│   │   ├── seoul256-dark-soft.toml
│   │   ├── seoul256-dark.toml
│   │   ├── seoul256-light-hard.toml
│   │   ├── seoul256-light-soft.toml
│   │   ├── seoul256-light.toml
│   │   ├── serika-dark.toml
│   │   ├── serika-light.toml
│   │   ├── sidra.toml
│   │   ├── snazzy.toml
│   │   ├── solarized_dark.toml
│   │   ├── solarized_light.toml
│   │   ├── sonokai.toml
│   │   ├── spacebones_light.toml
│   │   ├── starlight.toml
│   │   ├── sunset.toml
│   │   ├── term16_dark.toml
│   │   ├── term16_light.toml
│   │   ├── tokyonight.toml
│   │   ├── tokyonight_day.toml
│   │   ├── tokyonight_moon.toml
│   │   ├── tokyonight_storm.toml
│   │   ├── ttox.toml
│   │   ├── ttox_soft.toml
│   │   ├── varua.toml
│   │   ├── vesper-transparent.toml
│   │   ├── vesper.toml
│   │   ├── vim_dark_high_contrast.toml
│   │   ├── vintage.toml
│   │   ├── voxed.toml
│   │   ├── wolf-alabaster-dark-bg.toml
│   │   ├── wolf-alabaster-dark-mono.toml
│   │   ├── wolf-alabaster-dark.toml
│   │   ├── wolf-alabaster-light-bg.toml
│   │   ├── wolf-alabaster-light-mono.toml
│   │   ├── wolf-alabaster-light.toml
│   │   ├── yellowed.toml
│   │   ├── yo.toml
│   │   ├── yo_berry.toml
│   │   ├── yo_light.toml
│   │   ├── zed_onedark.toml
│   │   ├── zed_onelight.toml
│   │   └── zenburn.toml
│   └── tutor
├── rust-toolchain.toml
├── rustfmt.toml
├── shell.nix
├── theme.toml
└── xtask/
    ├── Cargo.toml
    └── src/
        ├── docgen.rs
        ├── helpers.rs
        ├── main.rs
        └── path.rs

================================================
FILE CONTENTS
================================================

================================================
FILE: .cargo/config.toml
================================================
# we use tokio_unstable to enable runtime::Handle::id so we can separate
# globals from multiple parallel tests. If that function ever does get removed
# its possible to replace (with some additional overhead and effort)
# Annoyingly build.rustflags doesn't work here because it gets overwritten
# if people have their own global target.<..> config (for example to enable mold)
# specifying flags this way is more robust as they get merged
# This still gets overwritten by RUST_FLAGS though, luckily it shouldn't be necessary
# to set those most of the time. If downstream does overwrite this its not a huge
# deal since it will only break tests anyway
[target."cfg(all())"]
rustflags = ["--cfg", "tokio_unstable", "-C", "target-feature=-crt-static"]


[alias]
xtask = "run --package xtask --"
integration-test = "test --features integration --profile integration --workspace --test integration"



================================================
FILE: .envrc
================================================
watch_file shell.nix
watch_file default.nix
watch_file flake.lock
watch_file rust-toolchain.toml

# try to use flakes, if it fails use normal nix (ie. shell.nix)
use flake || use nix
eval "$shellHook"


================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform normalization
*          text=auto

*.rs       text diff=rust
*.toml     text diff=toml

*.scm      text diff=scheme
*.md       text diff=markdown

book/theme/highlight.js linguist-vendored
runtime/queries/**/*.scm linguist-language=Tree-sitter-Query
Cargo.lock text


================================================
FILE: .github/FUNDING.yml
================================================
open_collective: helix-editor


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yaml
================================================
name: Bug Report
description: Create a report to help us improve
labels: C-bug
body:
  - type: markdown
    attributes:
      value: Thank you for filing a bug report! 🐛
  - type: textarea
    id: problem
    attributes:
      label: Summary
      description: >
        Please provide a short summary of the bug, along with any information
        you feel relevant to replicate the bug.
    validations:
      required: true
  - type: textarea
    id: reproduction-steps
    attributes:
      label: Reproduction Steps
      value: |
        <!-- Ideally provide a key sequence and/or asciinema.org recording. --> 

        I tried this:

        1. `hx`

        I expected this to happen:

        Instead, this happened:
  - type: textarea
    id: helix-log
    attributes:
      label: Helix log
      description: See `hx -h` for log file path. If you can reproduce the issue run `RUST_BACKTRACE=1 hx -vv` to generate a more detailed log file.
      value: |
        <details><summary>~/.cache/helix/helix.log</summary>

        ```
        please provide a copy of `~/.cache/helix/helix.log` here if possible, you may need to redact some of the lines
        ```

        </details>
  - type: input
    id: platform
    attributes:
      label: Platform
      placeholder: Linux / macOS / Windows
    validations:
      required: true
  - type: input
    id: terminal-emulator
    attributes:
      label: Terminal Emulator
      placeholder: wezterm 20220101-133340-7edc5b5a
    validations:
      required: true
  - type: input
    id: installation-method
    attributes:
      label: Installation Method
      description: >
        How you installed Helix - from a package manager like Homebrew or the
        AUR, built from source, downloaded a binary from the releases page, etc.
      placeholder: "source / brew / nixpkgs / flake / releases page"
    validations:
      required: true
  - type: input
    id: helix-version
    attributes:
      label: Helix Version
      description: >
        Helix version (`hx -V` if using a release, `git describe` if building
        from master).
        **Make sure that you are using the [latest helix release](https://github.com/helix-editor/helix/releases) or a newer master build**
      placeholder: "helix 22.12 (5eaa6d97)"
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/enhancement.md
================================================
---
name: Enhancement
about: Suggest an improvement
title: ''
labels: C-enhancement
assignees: ''
---

<!--
Your enhancement may already be reported!
Please search on the issue tracker before creating a new issue.
If this is an idea for a feature, please open an "Idea" Discussion instead.
-->


================================================
FILE: .github/dependabot.yml
================================================
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  - package-ecosystem: "cargo"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      rust-dependencies:
        update-types:
          - "minor"
          - "patch"

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"


================================================
FILE: .github/workflows/build.yml
================================================
name: Build
on:
  pull_request:
  push:
    branches:
      - master
  merge_group:
  schedule:
    - cron: "00 01 * * *"

env:
  MSRV: "1.87"
  # This key can be changed to bust the cache of tree-sitter grammars.
  GRAMMAR_CACHE_VERSION: ""

jobs:
  check:
    name: Check (msrv)
    runs-on: ubuntu-latest
    if: github.repository == 'helix-editor/helix' || github.event_name != 'schedule'
    steps:
      - name: Checkout sources
        uses: actions/checkout@v6

      - name: Install MSRV toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.MSRV }}

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: "build"

      - name: Cache tree-sitter grammars
        uses: actions/cache@v5
        with:
          path: runtime/grammars
          key: ${{ runner.os }}-${{ runner.arch }}-stable-v${{ env.GRAMMAR_CACHE_VERSION }}-tree-sitter-grammars-${{ hashFiles('languages.toml') }}
          restore-keys: ${{ runner.os }}-${{ runner.arch }}-stable-v${{ env.GRAMMAR_CACHE_VERSION }}-tree-sitter-grammars-

      - name: Run cargo check
        run: cargo check

  test:
    name: Test Suite
    runs-on: ${{ matrix.os }}
    if: github.repository == 'helix-editor/helix' || github.event_name != 'schedule'
    timeout-minutes: 30
    env:
      RUST_BACKTRACE: 1
      HELIX_LOG_LEVEL: info
    steps:
      - name: Checkout sources
        uses: actions/checkout@v6

      - name: Install MSRV toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.MSRV }}

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: "build"

      - name: Cache tree-sitter grammars
        uses: actions/cache@v5
        with:
          path: runtime/grammars
          key: ${{ runner.os }}-${{ runner.arch }}-stable-v${{ env.GRAMMAR_CACHE_VERSION }}-tree-sitter-grammars-${{ hashFiles('languages.toml') }}
          restore-keys: ${{ runner.os }}-${{ runner.arch }}-stable-v${{ env.GRAMMAR_CACHE_VERSION }}-tree-sitter-grammars-

      - name: Run cargo test
        run: cargo test --workspace

      - name: Run cargo integration-test
        run: cargo integration-test

    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest, ubuntu-24.04-arm]

  lints:
    name: Lints
    runs-on: ubuntu-latest
    if: github.repository == 'helix-editor/helix' || github.event_name != 'schedule'
    steps:
      - name: Checkout sources
        uses: actions/checkout@v6

      - name: Install MSRV toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.MSRV }}
          components: rustfmt, clippy

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: "build"

      - name: Cache tree-sitter grammars
        uses: actions/cache@v5
        with:
          path: runtime/grammars
          key: ${{ runner.os }}-${{ runner.arch }}-stable-v${{ env.GRAMMAR_CACHE_VERSION }}-tree-sitter-grammars-${{ hashFiles('languages.toml') }}
          restore-keys: ${{ runner.os }}-${{ runner.arch }}-stable-v${{ env.GRAMMAR_CACHE_VERSION }}-tree-sitter-grammars-

      - name: Run cargo fmt
        run: cargo fmt --all --check

      - name: Run cargo clippy
        run: cargo clippy --workspace --all-targets -- -D warnings

      - name: Run cargo doc
        run: cargo doc --no-deps --workspace --document-private-items
        env:
          RUSTDOCFLAGS: -D warnings

  docs:
    name: Docs
    runs-on: ubuntu-latest
    if: github.repository == 'helix-editor/helix' || github.event_name != 'schedule'
    steps:
      - name: Checkout sources
        uses: actions/checkout@v6

      - name: Install MSRV toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.MSRV }}

      - uses: Swatinem/rust-cache@v2
        with:
          shared-key: "build"

      - name: Cache tree-sitter grammars
        uses: actions/cache@v5
        with:
          path: runtime/grammars
          key: ${{ runner.os }}-${{ runner.arch }}-stable-v${{ env.GRAMMAR_CACHE_VERSION }}-tree-sitter-grammars-${{ hashFiles('languages.toml') }}
          restore-keys: ${{ runner.os }}-${{ runner.arch }}-stable-v${{ env.GRAMMAR_CACHE_VERSION }}-tree-sitter-grammars-

      - name: Validate queries
        run: cargo xtask query-check

      - name: Validate themes
        run: cargo xtask theme-check

      - name: Generate docs
        run: cargo xtask docgen

      - name: Check uncommitted documentation changes
        run: |
          git diff
          git diff-files --quiet \
            || (echo "Run 'cargo xtask docgen', commit the changes and push again" \
            && exit 1)


================================================
FILE: .github/workflows/cachix.yml
================================================
# Publish the Nix flake outputs to Cachix
name: Cachix
on:
  push:
    branches:
      - master

jobs:
  publish:
    name: Publish Flake
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    steps:
    - name: Checkout sources
      uses: actions/checkout@v6

    - name: Install nix
      uses: cachix/install-nix-action@v31

    - name: Authenticate with Cachix
      uses: cachix/cachix-action@v16
      with:
        name: helix
        authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}

    - name: Build nix flake
      run: nix build -L


================================================
FILE: .github/workflows/gh-pages.yml
================================================
name: GitHub Pages

on:
  push:
    branches:
      - master
    tags:
      - '*'

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Setup mdBook
        uses: peaceiris/actions-mdbook@v2
        with:
          # mdbook-version: 'latest'
          mdbook-version: '0.5.2'

      - run: mdbook build book
      
      - name: Set output directory
        run: |
          OUTDIR=$(basename ${{ github.ref }})
          echo "OUTDIR=$OUTDIR" >> $GITHUB_ENV

      - name: Deploy stable
        uses: peaceiris/actions-gh-pages@v4
        if: startswith(github.ref, 'refs/tags/')
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./book/book

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./book/book
          destination_dir: ./${{ env.OUTDIR }}


================================================
FILE: .github/workflows/languages.toml
================================================
# This languages.toml is used for testing in CI.

[[language]]
name = "rust"
scope = "source.rust"
injection-regex = "rust"
file-types = ["rs"]
comment-token = "//"
roots = ["Cargo.toml", "Cargo.lock"]
indent = { tab-width = 4, unit = "    " }

[[grammar]]
name = "rust"
source = { git = "https://github.com/tree-sitter/tree-sitter-rust", rev = "0431a2c60828731f27491ee9fdefe25e250ce9c9" }

[[language]]
name = "nix"
scope = "source.nix"
injection-regex = "nix"
file-types = ["nix"]
shebangs = []
roots = []
comment-token = "#"

# A grammar entry is not necessary for this language - it is only used for
# testing TOML merging behavior.


================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
  push:
    tags:
    - '[0-9]+.[0-9]+'
    - '[0-9]+.[0-9]+.[0-9]+'
    branches:
    - 'patch/ci-release-*'
  pull_request:
    paths:
    - '.github/workflows/release.yml'

env:
  # Preview mode: Publishes the build output as a CI artifact instead of creating
  # a release, allowing for manual inspection of the output. This mode is
  # activated if the CI run was triggered by events other than pushed tags, or
  # if the repository is a fork.
  preview: ${{ !startsWith(github.ref, 'refs/tags/') || github.repository != 'helix-editor/helix' }}

jobs:
  fetch-grammars:
    name: Fetch Grammars
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v6

      - name: Install stable toolchain
        uses: dtolnay/rust-toolchain@stable

      - uses: Swatinem/rust-cache@v2

      - name: Fetch tree-sitter grammars
        run: cargo run --package=helix-loader --bin=hx-loader

      - name: Bundle grammars
        run: tar cJf grammars.tar.xz -C runtime/grammars/sources .

      - uses: actions/upload-artifact@v7
        with:
          name: grammars
          path: grammars.tar.xz

  dist:
    name: Dist
    needs: [fetch-grammars]
    env:
      # For some builds, we use cross to test on 32-bit and big-endian
      # systems.
      CARGO: cargo
      # When CARGO is set to CROSS, this is set to `--target matrix.target`.
      TARGET_FLAGS:
      # When CARGO is set to CROSS, TARGET_DIR includes matrix.target.
      TARGET_DIR: ./target
      # Emit backtraces on panics.
      RUST_BACKTRACE: 1
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false # don't fail other jobs if one fails
      matrix:
        build: [x86_64-linux, aarch64-linux, x86_64-macos, x86_64-windows, aarch64-macos] #, x86_64-win-gnu, win32-msvc
        include:
        - build: x86_64-linux
          # WARN: When changing this to a newer version, make sure that the GLIBC isnt too new, as this can cause issues
          # with portablity on older systems that dont follow ubuntus more rapid release cadence.
          os: ubuntu-22.04
          rust: stable
          target: x86_64-unknown-linux-gnu
          cross: false
        - build: aarch64-linux
          # Version should be kept in lockstep with the x86_64 version
          os: ubuntu-22.04-arm
          rust: stable
          target: aarch64-unknown-linux-gnu
          cross: false
        - build: x86_64-macos
          os: macos-latest
          rust: stable
          target: x86_64-apple-darwin
          cross: false
        - build: x86_64-windows
          os: windows-latest
          rust: stable
          target: x86_64-pc-windows-msvc
          cross: false
        - build: aarch64-macos
          os: macos-latest
          rust: stable
          target: aarch64-apple-darwin
          cross: false
        # - build: riscv64-linux
        #   os: ubuntu-22.04
        #   rust: stable
        #   target: riscv64gc-unknown-linux-gnu
        #   cross: true
        # - build: x86_64-win-gnu
        #   os: windows-2019
        #   rust: stable-x86_64-gnu
        #   target: x86_64-pc-windows-gnu
        # - build: win32-msvc
        #   os: windows-2019
        #   rust: stable
        #   target: i686-pc-windows-msvc

    steps:
      - name: Checkout sources
        uses: actions/checkout@v6

      - name: Download grammars
        uses: actions/download-artifact@v8

      - name: Move grammars under runtime
        if: "!startsWith(matrix.os, 'windows')"
        run: |
          mkdir -p runtime/grammars/sources
          tar xJf grammars.tar.xz -C runtime/grammars/sources

      # The rust-toolchain action ignores rust-toolchain.toml files.
      # Removing this before building with cargo ensures that the rust-toolchain
      # is considered the same between installation and usage.
      - name: Remove the rust-toolchain.toml file
        run: rm rust-toolchain.toml

      - name: Install ${{ matrix.rust }} toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.target }}

      # Install a pre-release version of Cross
      # TODO: We need to pre-install Cross because we need cross-rs/cross#591 to
      #       get a newer C++ compiler toolchain. Remove this step when Cross
      #       0.3.0, which includes cross-rs/cross#591, is released.
      - name: Install Cross
        if: "matrix.cross"
        run: |
          cargo install cross --git https://github.com/cross-rs/cross.git --rev 47df5c76e7cba682823a0b6aa6d95c17b31ba63a
          echo "CARGO=cross" >> $GITHUB_ENV
        # echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV
        # echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV

      - name: Show command used for Cargo
        run: |
          echo "cargo command is: ${{ env.CARGO }}"
          echo "target flag is: ${{ env.TARGET_FLAGS }}"

      - name: Run cargo test
        if: "!matrix.skip_tests"
        run: ${{ env.CARGO }} test --release --locked --target ${{ matrix.target }} --workspace

      - name: Build release binary
        run: ${{ env.CARGO }} build --profile opt --locked --target ${{ matrix.target }}

      - name: Build AppImage
        shell: bash
        if: matrix.build == 'x86_64-linux'
        run: |
          # Required as of 22.x https://github.com/AppImage/AppImageKit/wiki/FUSE
          sudo add-apt-repository universe
          sudo apt install libfuse2

          mkdir dist

          name=dev
          if [[ $GITHUB_REF == refs/tags/* ]]; then
            name=${GITHUB_REF:10}
          fi

          build="${{ matrix.build }}"

          export VERSION="$name"
          export ARCH=${build%-linux}
          export APP=helix
          export OUTPUT="helix-$VERSION-$ARCH.AppImage"
          export UPDATE_INFORMATION="gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|helix|latest|$APP-*-$ARCH.AppImage.zsync"

          mkdir -p "$APP.AppDir"/usr/{bin,lib/helix}

          cp "target/${{ matrix.target }}/opt/hx" "$APP.AppDir/usr/bin/hx"
          rm -rf runtime/grammars/sources
          cp -r runtime "$APP.AppDir/usr/lib/helix/runtime"

          cat << 'EOF' > "$APP.AppDir/AppRun"
          #!/bin/sh

          APPDIR="$(dirname "$(readlink -f "${0}")")"
          HELIX_RUNTIME="$APPDIR/usr/lib/helix/runtime" exec "$APPDIR/usr/bin/hx" "$@"
          EOF
          chmod 755 "$APP.AppDir/AppRun"

          curl -Lo linuxdeploy-x86_64.AppImage \
              https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
          chmod +x linuxdeploy-x86_64.AppImage

          ./linuxdeploy-x86_64.AppImage \
              --appdir "$APP.AppDir" -d contrib/Helix.desktop \
              -i contrib/helix.png --output appimage

          mv "$APP-$VERSION-$ARCH.AppImage" \
              "$APP-$VERSION-$ARCH.AppImage.zsync" dist

      - name: Build Deb
        shell: bash
        if: matrix.build == 'x86_64-linux'
        run: |
          cargo install cargo-deb
          mkdir -p target/release
          cp target/${{ matrix.target }}/opt/hx target/release/
          cargo deb --no-build
          mkdir -p dist
          mv target/debian/*.deb dist/

      - name: Build archive
        shell: bash
        run: |
          mkdir -p dist
          if [ "${{ matrix.os }}" = "windows-latest" ]; then
            cp "target/${{ matrix.target }}/opt/hx.exe" "dist/"
          else
            cp "target/${{ matrix.target }}/opt/hx" "dist/"
          fi
          if [ -d runtime/grammars/sources ]; then
            rm -rf runtime/grammars/sources
          fi
          cp -r runtime dist

      - uses: actions/upload-artifact@v7
        with:
          name: bins-${{ matrix.build }}
          path: dist

  publish:
    name: Publish
    needs: [dist]
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v6

      - uses: actions/download-artifact@v8

      - name: Build archive
        shell: bash
        run: |
          set -ex

          source="$(pwd)"
          tag=${GITHUB_REF_NAME//\//}
          mkdir -p runtime/grammars/sources
          tar xJf grammars/grammars.tar.xz -C runtime/grammars/sources
          rm -rf grammars

          cd "$(mktemp -d)"
          mv $source/bins-* .
          mkdir dist

          for dir in bins-* ; do
              platform=${dir#"bins-"}
              if [[ $platform =~ "windows" ]]; then
                  exe=".exe"
              fi
              pkgname=helix-$tag-$platform
              mkdir -p $pkgname
              cp $source/LICENSE $source/README.md $pkgname
              mkdir $pkgname/contrib
              cp -r $source/contrib/completion $pkgname/contrib
              mv bins-$platform/runtime $pkgname/
              mv bins-$platform/hx$exe $pkgname
              chmod +x $pkgname/hx$exe

              if [[ "$platform" = "x86_64-linux" ]]; then
                  mv bins-$platform/helix-*.AppImage* dist/
                  mv bins-$platform/*.deb dist/
              fi

              if [ "$exe" = "" ]; then
                  tar cJf dist/$pkgname.tar.xz $pkgname
              else
                  7z a -r dist/$pkgname.zip $pkgname
              fi
          done

          tar cJf dist/helix-$tag-source.tar.xz -C $source .
          mv dist $source/

      - name: Upload binaries to release
        uses: svenstaro/upload-release-action@v2
        if: env.preview == 'false'
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: dist/*
          file_glob: true
          tag: ${{ github.ref_name }}
          overwrite: true

      - name: Upload binaries as artifact
        uses: actions/upload-artifact@v7
        if: env.preview == 'true'
        with:
          name: release
          path: dist/*


================================================
FILE: .gitignore
================================================
target
.direnv
helix-term/rustfmt.toml
result
runtime/grammars
.DS_Store


================================================
FILE: CHANGELOG.md
================================================
<!--
# YY.0M (YYYY-0M-0D)

Breaking changes:

Features:

Commands:

Usability improvements:

Fixes:

Themes:

New languages:

Updated languages and queries:

Packaging:
-->

# 25.07.1 (2025-07-18)

This is a patch release which lowers the GLIBC requirements of the release artifacts published to GitHub ([#13983](https://github.com/helix-editor/helix/pull/13983))

# 25.07 (2025-07-15)

As always, a big thank you to all of the contributors! This release saw changes from 195 contributors.

Breaking changes:

* The parsing of the command line has been rewritten and now supports flags and expansions ([#12527](https://github.com/helix-editor/helix/pull/12527), [#13018](https://github.com/helix-editor/helix/pull/13018), [9574e55](https://github.com/helix-editor/helix/commit/9574e55), [2d4c2a1](https://github.com/helix-editor/helix/commit/2d4c2a1), [#13192](https://github.com/helix-editor/helix/pull/13192), [67f1fe2](https://github.com/helix-editor/helix/commit/67f1fe2), [#13466](https://github.com/helix-editor/helix/pull/13466), [#13467](https://github.com/helix-editor/helix/pull/13467), [#13840](https://github.com/helix-editor/helix/pull/13840))
    * Quoting and spaces are now handled differently. This can break existing keymaps which use typable commands, in particular `:sh`, `:set-option` or `:toggle-option`.
    * The `:rsort` command has been removed. Use the reverse flag instead: `:sort --reverse`

Features:

* Add a picker which explores directories ([#11285](https://github.com/helix-editor/helix/pull/11285), [d4aed40](https://github.com/helix-editor/helix/commit/d4aed40))
* Allow cycling through multiple LSP Hover responses with `A-n`/`A-p` ([#10122](https://github.com/helix-editor/helix/pull/10122), [2367b20](https://github.com/helix-editor/helix/commit/2367b20))
* Add support for incomplete LSP completions ([5c1f3f8](https://github.com/helix-editor/helix/commit/5c1f3f8))
* Add support for EditorConfig ([#13056](https://github.com/helix-editor/helix/pull/13056), [#13443](https://github.com/helix-editor/helix/pull/13443))
* Add support for LSP document colors ([#12308](https://github.com/helix-editor/helix/pull/12308), [d43de14](https://github.com/helix-editor/helix/commit/d43de14), [47cdd23](https://github.com/helix-editor/helix/commit/47cdd23), [ba54b6a](https://github.com/helix-editor/helix/commit/ba54b6a), [#13188](https://github.com/helix-editor/helix/pull/13188))
* Support expansions in external formatter arguments ([#13429](https://github.com/helix-editor/helix/pull/13429))
* Switch out the highlighter for the `tree-house` crate ([#12972](https://github.com/helix-editor/helix/pull/12972), [09bc67a](https://github.com/helix-editor/helix/commit/09bc67a), [a7c3a43](https://github.com/helix-editor/helix/commit/a7c3a43), [3ceae88](https://github.com/helix-editor/helix/commit/3ceae88), [05ae617](https://github.com/helix-editor/helix/commit/05ae617), [5a1dcc2](https://github.com/helix-editor/helix/commit/5a1dcc2), [ebf96bd](https://github.com/helix-editor/helix/commit/ebf96bd), [#13644](https://github.com/helix-editor/helix/pull/13644), [b1f4717](https://github.com/helix-editor/helix/commit/b1f4717), [7410fe3](https://github.com/helix-editor/helix/commit/7410fe3), [633c5fb](https://github.com/helix-editor/helix/commit/633c5fb), [362e97e](https://github.com/helix-editor/helix/commit/362e97e), [#13828](https://github.com/helix-editor/helix/pull/13828), [6fd1efd](https://github.com/helix-editor/helix/commit/6fd1efd))
    * This fixes a number of highlighter bugs.
    * Locals like parameter highlights are now highlighted even when the definition is not in view.
    * Markdown is now injected into rust doc comments (`///` and `//!`).
* Add support for the DAP `startDebugging` reverse request ([#13403](https://github.com/helix-editor/helix/pull/13403))

Commands:

* Add `copy_between_registers` for interactive copying between two registers ([066e938](https://github.com/helix-editor/helix/commit/066e938))
* Add `extend_to_file_{start,end}`, select-mode variants of `goto_file_{start,end}` ([#11767](https://github.com/helix-editor/helix/pull/11767))
* Add `:!` alias for `:sh` and `:|` for `:pipe` ([#13263](https://github.com/helix-editor/helix/pull/13263))
* Add `goto_column` and `extend_to_column` ([#13440](https://github.com/helix-editor/helix/pull/13440))
* Add an `--insensitive`/`-i` flag to the `:sort` command ([#13560](https://github.com/helix-editor/helix/pull/13560))
* Add `rotate_selections_first` and `rotate_selections_last` ([#13615](https://github.com/helix-editor/helix/pull/13615))
* Add a `--no-format` flag for all `:write` commands ([2f56091](https://github.com/helix-editor/helix/commit/2f56091))
* Add a `--skip-visible` flag for `:buffer-close-others` and `:buffer-close-others!` ([#5393](https://github.com/helix-editor/helix/pull/5393))

Usability improvements:

* Replace current file using `A-ret` in pickers rather than loading it in the background ([#12605](https://github.com/helix-editor/helix/pull/12605))
* Set multiple selections when passing a file with multiple locations to `hx` ([#12192](https://github.com/helix-editor/helix/pull/12192))
* Add path completion for multiple cursors ([#12550](https://github.com/helix-editor/helix/pull/12550), [c9dc940](https://github.com/helix-editor/helix/commit/c9dc940))
* Truncate long prompt lines with "…" ([#12036](https://github.com/helix-editor/helix/pull/12036), [9d6ea77](https://github.com/helix-editor/helix/commit/9d6ea77), [0b9701e](https://github.com/helix-editor/helix/commit/0b9701e), [d3fb8fc](https://github.com/helix-editor/helix/commit/d3fb8fc))
* Allow specifying languages in `:lsp-stop` and `:lsp-restart` ([#12578](https://github.com/helix-editor/helix/pull/12578), [3d7e273](https://github.com/helix-editor/helix/commit/3d7e273))
* Add `m` (nearest matching pair) to infobox popups for `md` and `mr` ([#12650](https://github.com/helix-editor/helix/pull/12650))
* Add a hint message in the statusline when using `:sort` on a single selection ([#12585](https://github.com/helix-editor/helix/pull/12585))
* Avoid wrapping around in `goto_{next,prev}_diag` ([#12704](https://github.com/helix-editor/helix/pull/12704))
* Support responses from multiple language servers for LSP goto-definition (and declaration, type definition and implementation) and goto-references ([f7394d5](https://github.com/helix-editor/helix/commit/f7394d5), [1a821ac](https://github.com/helix-editor/helix/commit/1a821ac), [d285a8a](https://github.com/helix-editor/helix/commit/d285a8a))
* Show formatter errors in `:format` ([47f84d0](https://github.com/helix-editor/helix/commit/47f84d0))
* Show typable command docs in keybinding infobox popups when the command takes no arguments ([e9c16b7](https://github.com/helix-editor/helix/commit/e9c16b7))
* Add per-command titles to register selection infobox popups for `select_register`, `insert_register` and `copy_between_registers` ([e0da129](https://github.com/helix-editor/helix/commit/e0da129))
* Add container name column to the LSP symbol picker ([#12930](https://github.com/helix-editor/helix/pull/12930))
* Add a theme key for highlighting directories in completions and picker items ([#12855](https://github.com/helix-editor/helix/pull/12855), [7bebe0a](https://github.com/helix-editor/helix/commit/7bebe0a))
* Add `editor.trim-final-newlines` and `editor.trim-trailing-whitespace` config options ([aa20eb8](https://github.com/helix-editor/helix/commit/aa20eb8))
* Warn when the configured theme is unusable because true-color is not available ([#13058](https://github.com/helix-editor/helix/pull/13058))
* Allow configuring `[workspace-]diagnostic` statusline element severities ([#13288](https://github.com/helix-editor/helix/pull/13288), [b0528bb](https://github.com/helix-editor/helix/commit/b0528bb))
* Improve completion for shell commands ([#12883](https://github.com/helix-editor/helix/pull/12883), [532f241](https://github.com/helix-editor/helix/commit/532f241))
* Show the primary selection index in the `selections` statusline element when there are multiple selections ([#12326](https://github.com/helix-editor/helix/pull/12326))
* Use configured language server names when possible in `--health` output ([#13573](https://github.com/helix-editor/helix/pull/13573))
* Add a statusline element for indentation style ([#13632](https://github.com/helix-editor/helix/pull/13632))
* Set the working directory of language server commands to the workspace root ([#13691](https://github.com/helix-editor/helix/pull/13691))
* Avoid jumpiness in the picker preview for languages with non-default tab widths ([#13761](https://github.com/helix-editor/helix/pull/13761))
* Add a config option for limiting LSP inlay hint length ([#13742](https://github.com/helix-editor/helix/pull/13742))
* Improve heuristics used in the diff gutter ([#13722](https://github.com/helix-editor/helix/pull/13722))
* Allow moving a file with `:move` when its old path does not exist ([#13748](https://github.com/helix-editor/helix/pull/13748))
* Allow moving a file into a directory with `:move` ([#13922](https://github.com/helix-editor/helix/pull/13922))
* Show human-readable file sizes in the statusline message for file writes ([#13627](https://github.com/helix-editor/helix/pull/13627))
* Add diagnostic source to the diagnosics pickers ([#13758](https://github.com/helix-editor/helix/pull/13758))
* Show all active scopes under the cursor in `:tree-sitter-highlight-name` ([4a85171](https://github.com/helix-editor/helix/commit/4a85171))
* Auto-close the LSP code-actions popup ([#13832](https://github.com/helix-editor/helix/pull/13832))
* Add a configuration option for controlling atomic writes to disk ([#13656](https://github.com/helix-editor/helix/pull/13656))

Fixes:

* Fix panic from using `search_selection_detect_word_boundaries` (`*`) at the end of the file ([#12611](https://github.com/helix-editor/helix/pull/12611))
* Discard placeholder text for zero tabstop `${0:placeholder}` ([#12647](https://github.com/helix-editor/helix/pull/12647))
* Fix panic in `goto_file` (`gf`) on file names with non-ASCII characters ([#12673](https://github.com/helix-editor/helix/pull/12673))
* Only accept unmodified characters in `goto_word` (`gw`) ([f5f9f49](https://github.com/helix-editor/helix/commit/f5f9f49), [0364521](https://github.com/helix-editor/helix/commit/0364521))
* Skip recording keys pressed by macros while recording a macro ([#12733](https://github.com/helix-editor/helix/pull/12733))
* Deny unknown fields in `editor.smart-tab` config ([28047fe](https://github.com/helix-editor/helix/commit/28047fe))
* Fix soft-wrap word boundary detection for Unicode combining accent characters ([#12483](https://github.com/helix-editor/helix/pull/12483))
* Fix clearing of infobox popups in `select_register` and `insert_register` commands ([e882a75](https://github.com/helix-editor/helix/commit/e882a75))
* Fix handling of `stderr` of DAP child processes ([d0d1693](https://github.com/helix-editor/helix/commit/d0d1693))
* Cancel all pending requests when a DAP session terminates ([26db541](https://github.com/helix-editor/helix/commit/26db541))
* Properly discard out-of-date diagnostics ([313a647](https://github.com/helix-editor/helix/commit/313a647))
* Fix display of multiple language servers in `hx --health` ([#12841](https://github.com/helix-editor/helix/pull/12841))
* Respect `editor.default-yank-register` in `:yank-joined` ([#12890](https://github.com/helix-editor/helix/pull/12890))
* Escape percent character when pasting the history register into the picker ([#12886](https://github.com/helix-editor/helix/pull/12886))
* Render rulers before the cursor ([2d3b75a](https://github.com/helix-editor/helix/commit/2d3b75a))
* Avoid inserting final newlines in empty files ([67879a1](https://github.com/helix-editor/helix/commit/67879a1))
* Gracefully handle partial failure in multi-language-server requests ([#13156](https://github.com/helix-editor/helix/pull/13156), [14cab4b](https://github.com/helix-editor/helix/commit/14cab4b))
* Improve LSP progress message display in the statusline ([#13180](https://github.com/helix-editor/helix/pull/13180))
* Fix behavior of `<esc>` removing added indentation in documents with CRLF line endings ([702a961](https://github.com/helix-editor/helix/commit/702a961))
* Append changes to document history before pushing jumplist jumps ([#13619](https://github.com/helix-editor/helix/pull/13619))
* Fix overflow in the display of large chunks of text in the signature-help component ([#13566](https://github.com/helix-editor/helix/pull/13566))
* Fix panic from clearing whitespace when changing multiple selections on one line ([#13673](https://github.com/helix-editor/helix/pull/13673))
* Include formatting options in LSP range formatting request ([#13734](https://github.com/helix-editor/helix/pull/13734))
* Consistently set statusline errors when LSP features are not available ([#12577](https://github.com/helix-editor/helix/pull/12577))
* Fix `goto_file` on Windows ([#13770](https://github.com/helix-editor/helix/pull/13770))
* Fix crash in `goto_word` (`gw`) when `editor.jump-label-alphabet` is configured to be empty ([#13863](https://github.com/helix-editor/helix/pull/13863))
* Fix `open_above` / `open_below` (`o` / `O`) when using a count on a document with CRLF line-endings ([#13905](https://github.com/helix-editor/helix/pull/13905))

Themes:

* Update `modus` themes ([#12670](https://github.com/helix-editor/helix/pull/12670))
* Update `snazzy` ([#11089](https://github.com/helix-editor/helix/pull/11089))
* Update `gruber-darker` ([#12797](https://github.com/helix-editor/helix/pull/12797))
* Update `cyan_light` ([#12864](https://github.com/helix-editor/helix/pull/12864), [#12891](https://github.com/helix-editor/helix/pull/12891))
* Update `onedarker` ([#12833](https://github.com/helix-editor/helix/pull/12833))
* Update `github_light` ([#12907](https://github.com/helix-editor/helix/pull/12907))
* Update `kanagawa` ([#12895](https://github.com/helix-editor/helix/pull/12895))
* Add `beans` ([#12963](https://github.com/helix-editor/helix/pull/12963))
* Update `base16_transparent` ([#13080](https://github.com/helix-editor/helix/pull/13080))
* Update `sunset` ([#13086](https://github.com/helix-editor/helix/pull/13086))
* Add `carbon` ([#13067](https://github.com/helix-editor/helix/pull/13067))
* Update `soralized` ([#13121](https://github.com/helix-editor/helix/pull/13121))
* Add `focus_nova` ([#13144](https://github.com/helix-editor/helix/pull/13144))
* Update `onedark` ([#13166](https://github.com/helix-editor/helix/pull/13166))
* Update `adwaita-light` ([#13174](https://github.com/helix-editor/helix/pull/13174))
* Add `earl_grey` ([#13203](https://github.com/helix-editor/helix/pull/13203))
* Update `spacebones` ([#13213](https://github.com/helix-editor/helix/pull/13213))
* Add `peachpuff` ([#13225](https://github.com/helix-editor/helix/pull/13225))
* Update catppuccin themes ([#13262](https://github.com/helix-editor/helix/pull/13262))
* Update gruvbox themes ([#13315](https://github.com/helix-editor/helix/pull/13315))
* Update serika themes ([#13341](https://github.com/helix-editor/helix/pull/13341))
* Add `gruvbox-material` ([#13311](https://github.com/helix-editor/helix/pull/13311))
* Add `ashen` ([#13366](https://github.com/helix-editor/helix/pull/13366))
* Update Zed themes ([#13370](https://github.com/helix-editor/helix/pull/13370))
* Update Tokyonight themes ([#13375](https://github.com/helix-editor/helix/pull/13375))
* Update `onelight` ([#13413](https://github.com/helix-editor/helix/pull/13413))
* Add `ataraxia` ([#13390](https://github.com/helix-editor/helix/pull/13390))
* Add `vesper` ([#13394](https://github.com/helix-editor/helix/pull/13394))
* Add `kinda_nvim` and `kinda_nvim_light` ([#13406](https://github.com/helix-editor/helix/pull/13406))
* Update `sonokai` ([#13410](https://github.com/helix-editor/helix/pull/13410))
* Add `nyxvamp` themes ([#12185](https://github.com/helix-editor/helix/pull/12185))
* Update nord themes ([#13574](https://github.com/helix-editor/helix/pull/13574))
* Add `lapis_aquamarine` ([#13726](https://github.com/helix-editor/helix/pull/13726))
* Add `sidra` ([#13575](https://github.com/helix-editor/helix/pull/13575))
* Add `dark-synthwave` ([#13857](https://github.com/helix-editor/helix/pull/13857))
* Update `rose_pine` ([#13908](https://github.com/helix-editor/helix/pull/13908))
* Add `doom-one` ([#13933](https://github.com/helix-editor/helix/pull/13933))
* Update `nightfox` ([#13957](https://github.com/helix-editor/helix/pull/13957))

New languages:

* Ghostty config ([#12703](https://github.com/helix-editor/helix/pull/12703))
* Tera ([#12756](https://github.com/helix-editor/helix/pull/12756))
* FGA ([#12763](https://github.com/helix-editor/helix/pull/12763))
* CSV ([#11973](https://github.com/helix-editor/helix/pull/11973))
* Yara ([#12753](https://github.com/helix-editor/helix/pull/12753))
* Djot ([#12562](https://github.com/helix-editor/helix/pull/12562))
* Ink ([#12773](https://github.com/helix-editor/helix/pull/12773))
* Mail ([#12945](https://github.com/helix-editor/helix/pull/12945))
* SourcePawn ([#13028](https://github.com/helix-editor/helix/pull/13028))
* TLA+ ([#13081](https://github.com/helix-editor/helix/pull/13081))
* Werk ([#13136](https://github.com/helix-editor/helix/pull/13136))
* Debian control file ([#13245](https://github.com/helix-editor/helix/pull/13245))
* WESL ([#13267](https://github.com/helix-editor/helix/pull/13267))
* Fennel ([#13260](https://github.com/helix-editor/helix/pull/13260), [6081a5d](https://github.com/helix-editor/helix/commit/6081a5d))
* Quarto ([#13339](https://github.com/helix-editor/helix/pull/13339))
* Pug ([#13435](https://github.com/helix-editor/helix/pull/13435))
* Slang ([#13449](https://github.com/helix-editor/helix/pull/13449))
* Dunst config ([#13458](https://github.com/helix-editor/helix/pull/13458))
* Luau ([#13702](https://github.com/helix-editor/helix/pull/13702))
* Caddyfile ([#13859](https://github.com/helix-editor/helix/pull/13859))
* Java properties ([#13874](https://github.com/helix-editor/helix/pull/13874))
* Git notes ([#13885](https://github.com/helix-editor/helix/pull/13885))
* systemd (split from INI) ([#13907](https://github.com/helix-editor/helix/pull/13907))
* JSON-LD (split from JSON) ([#13925](https://github.com/helix-editor/helix/pull/13925))
* Django HTML ([#13935](https://github.com/helix-editor/helix/pull/13935))

Updated languages and queries:

* Add `ruby-lsp` for Ruby ([#12511](https://github.com/helix-editor/helix/pull/12511))
* Add `wat_server` for Wat ([#12581](https://github.com/helix-editor/helix/pull/12581))
* Recognize `bun.lock` as JSONC ([fcf981b](https://github.com/helix-editor/helix/commit/fcf981b))
* Update tree-sitter-rust ([#12607](https://github.com/helix-editor/helix/pull/12607), [1afa63d](https://github.com/helix-editor/helix/commit/1afa63d))
* Fix configuration of `cs-lsp` ([#12615](https://github.com/helix-editor/helix/pull/12615))
* Add `beancount-language-server` for Beancount ([#12610](https://github.com/helix-editor/helix/pull/12610))
* Update tree-sitter-fish ([#12456](https://github.com/helix-editor/helix/pull/12456))
* Add `fish-lsp` for Fish ([#12456](https://github.com/helix-editor/helix/pull/12456))
* Update tree-sitter-ini ([#12456](https://github.com/helix-editor/helix/pull/12456), [#13088](https://github.com/helix-editor/helix/pull/13088))
* Recognize `hgrc` as INI ([#12456](https://github.com/helix-editor/helix/pull/12456))
* Restrict tagged template injection languages for ECMA languages ([#12217](https://github.com/helix-editor/helix/pull/12217))
* Update tree-sitter-zig ([#11980](https://github.com/helix-editor/helix/pull/11980), [#12708](https://github.com/helix-editor/helix/pull/12708))
* Update tree-sitter-elixir ([8bf9adf](https://github.com/helix-editor/helix/commit/8bf9adf))
* Add `asm-lsp` for Assembly dialects ([#12684](https://github.com/helix-editor/helix/pull/12684))
* Update tree-sitter-just ([#12692](https://github.com/helix-editor/helix/pull/12692), #)
* Update tree-sitter-cairo ([#12712](https://github.com/helix-editor/helix/pull/12712))
* Configure a comment token for Svelte ([#12743](https://github.com/helix-editor/helix/pull/12743))
* Recognize `.sublime-*` files ([#12750](https://github.com/helix-editor/helix/pull/12750))
* Highlight `$` tagged templates as shell commands in ECMA languages ([#12751](https://github.com/helix-editor/helix/pull/12751))
* Add `#'` comment token for R ([#12748](https://github.com/helix-editor/helix/pull/12748))
* Fix module/namespace highlight in Unison ([93fa990](https://github.com/helix-editor/helix/commit/93fa990))
* Add missing `#not-eq?` and `#not-match?` highlights in TSQ ([3824010](https://github.com/helix-editor/helix/commit/3824010))
* Reverse the precedence order of highlight queries ([#9458](https://github.com/helix-editor/helix/pull/9458), [#12777](https://github.com/helix-editor/helix/pull/12777), [#12795](https://github.com/helix-editor/helix/pull/12795), [144a4f4](https://github.com/helix-editor/helix/commit/144a4f4), [e1c26eb](https://github.com/helix-editor/helix/commit/e1c26eb), [e1060a2](https://github.com/helix-editor/helix/commit/e1060a2), [7f41670](https://github.com/helix-editor/helix/commit/7f41670), [#13293](https://github.com/helix-editor/helix/pull/13293))
* Update Rust highlights ([b8bfc44](https://github.com/helix-editor/helix/commit/b8bfc44), [#12871](https://github.com/helix-editor/helix/pull/12871), [#13664](https://github.com/helix-editor/helix/pull/13664))
* Add block comment configuration for PHP ([0ab403d](https://github.com/helix-editor/helix/commit/0ab403d))
* Update Gren highlights ([#12769](https://github.com/helix-editor/helix/pull/12769))
* Remove `ERROR` node highlighting from all highlight queries ([16ff063](https://github.com/helix-editor/helix/commit/16ff063))
* Update tree-sitter-erlang and highlights ([18b9eb9](https://github.com/helix-editor/helix/commit/18b9eb9), [9f3b193](https://github.com/helix-editor/helix/commit/9f3b193), [12139a4](https://github.com/helix-editor/helix/commit/12139a4))
* Update Nix injections ([#12776](https://github.com/helix-editor/helix/pull/12776), [#12774](https://github.com/helix-editor/helix/pull/12774), [#13851](https://github.com/helix-editor/helix/pull/13851))
* Add indent queries for Nix ([#12829](https://github.com/helix-editor/helix/pull/12829))
* Update Markdown highlights ([#12696](https://github.com/helix-editor/helix/pull/12696))
* Recognize `xsl` as XML ([#12834](https://github.com/helix-editor/helix/pull/12834))
* Remove deprecated `typst-lsp` config ([5a66270](https://github.com/helix-editor/helix/commit/5a66270))
* Replace `pkgbuild-language-server` with `termux-language-server` ([c3c9a0d](https://github.com/helix-editor/helix/commit/c3c9a0d))
* Update SQL highlights ([#12837](https://github.com/helix-editor/helix/pull/12837))
* Recognize `mpd` and `smil` as XML ([#12916](https://github.com/helix-editor/helix/pull/12916))
* Add indents and textojbects for Kotlin ([#12925](https://github.com/helix-editor/helix/pull/12925))
* Fix module highlights in Koto ([7e87a36](https://github.com/helix-editor/helix/commit/7e87a36))
* Update language servers for Protobuf ([#12936](https://github.com/helix-editor/helix/pull/12936))
* Add `astro-ls` for Astro ([#12939](https://github.com/helix-editor/helix/pull/12939))
* Fix recognition of "scons*" files as Python ([#12943](https://github.com/helix-editor/helix/pull/12943))
* Update C# queries ([#12948](https://github.com/helix-editor/helix/pull/12948))
* Add comment textojbect to TOML ([#12952](https://github.com/helix-editor/helix/pull/12952))
* Add `starpls` as Starlark language server ([#12958](https://github.com/helix-editor/helix/pull/12958))
* Add `pkl-lsp` for PKL ([#12962](https://github.com/helix-editor/helix/pull/12962))
* Add `kdlfmt` formatter for KDL ([#12967](https://github.com/helix-editor/helix/pull/12967))
* Update CSS highlights ([#12497](https://github.com/helix-editor/helix/pull/12497), [fed3edc](https://github.com/helix-editor/helix/commit/fed3edc))
* Add `harper-ls` ([#13029](https://github.com/helix-editor/helix/pull/13029))
* Change `wgsl_analyzer` to `wgsl-analyzer` ([#13063](https://github.com/helix-editor/helix/pull/13063))
* Update tree-sitter-vhdl ([#13091](https://github.com/helix-editor/helix/pull/13091))
* Update tree-sitter-openscad ([#13033](https://github.com/helix-editor/helix/pull/13033))
* Update Rust injections ([694b615](https://github.com/helix-editor/helix/commit/694b615), [1bd7a39](https://github.com/helix-editor/helix/commit/1bd7a39))
* Update Ruby highlights ([#13055](https://github.com/helix-editor/helix/pull/13055))
* Recognize `gitconfig` as an extension ([#13115](https://github.com/helix-editor/helix/pull/13115))
* Add `///` comment token for Amber ([#13122](https://github.com/helix-editor/helix/pull/13122))
* Add indent queries for Starlark ([#13126](https://github.com/helix-editor/helix/pull/13126))
* Recognize more systemd file types as INI ([#13139](https://github.com/helix-editor/helix/pull/13139))
* Update scheme queries ([#13143](https://github.com/helix-editor/helix/pull/13143))
* Recognize `tmTheme` as XML ([#13202](https://github.com/helix-editor/helix/pull/13202))
* Update `golangci-lint` command for v2 ([#13204](https://github.com/helix-editor/helix/pull/13204))
* Add `just-lsp` for Just ([#13276](https://github.com/helix-editor/helix/pull/13276))
* Add a tree-sitter-prolog grammar ([#11611](https://github.com/helix-editor/helix/pull/11611))
* Fix typos in Ada queries ([#13251](https://github.com/helix-editor/helix/pull/13251))
* Update mint language server args ([#13248](https://github.com/helix-editor/helix/pull/13248))
* Update typescript highlights ([#13250](https://github.com/helix-editor/helix/pull/13250))
* Update tree-sitter-jjdescription ([#13329](https://github.com/helix-editor/helix/pull/13329))
* Add injection queries for Quint ([#13322](https://github.com/helix-editor/helix/pull/13322))
* Update tree-sitter-scss and highlights ([#13414](https://github.com/helix-editor/helix/pull/13414))
* Update tree-sitter-go-mod ([#13395](https://github.com/helix-editor/helix/pull/13395))
* Update tree-sitter-svelte ([#13423](https://github.com/helix-editor/helix/pull/13423))
* Update Lua highlights ([#13401](https://github.com/helix-editor/helix/pull/13401))
* Update Go highlights ([#13425](https://github.com/helix-editor/helix/pull/13425), [25b299a](https://github.com/helix-editor/helix/commit/25b299a), [#13825](https://github.com/helix-editor/helix/pull/13825))
* Recognize `.git-blame-ignore-revs` as gitignore ([#13460](https://github.com/helix-editor/helix/pull/13460))
* Update Verilog highlights ([#13473](https://github.com/helix-editor/helix/pull/13473), [#13493](https://github.com/helix-editor/helix/pull/13493))
* Update tree-sitter-v ([#13469](https://github.com/helix-editor/helix/pull/13469))
* Update WGSL highlights ([#13479](https://github.com/helix-editor/helix/pull/13479))
* Update Bash highlights ([#13477](https://github.com/helix-editor/helix/pull/13477))
* Update tree-sitter-cpp ([#13504](https://github.com/helix-editor/helix/pull/13504))
* Update rust-analyzer config to use server-side file watching ([#13432](https://github.com/helix-editor/helix/pull/13432))
* Update Vue injections ([#13511](https://github.com/helix-editor/helix/pull/13511))
* Recognize `sld` as Scheme ([#13528](https://github.com/helix-editor/helix/pull/13528))
* Recognize more files as git-attributes ([#13540](https://github.com/helix-editor/helix/pull/13540))
* Update tree-sitter-haskell and queries ([#13475](https://github.com/helix-editor/helix/pull/13475))
* Align INI highlights with TOML ([#13589](https://github.com/helix-editor/helix/pull/13589))
* Add tree-sitter-rust-format-args for `format_args!` injections in Rust ([#13533](https://github.com/helix-editor/helix/pull/13533), [#13657](https://github.com/helix-editor/helix/pull/13657), [4dd4ba7](https://github.com/helix-editor/helix/commit/4dd4ba7), [86f10ae](https://github.com/helix-editor/helix/commit/86f10ae))
* Update Ungrammar highlights ([8d58f6c](https://github.com/helix-editor/helix/commit/8d58f6c))
* Add `ty` language server for Python ([#13643](https://github.com/helix-editor/helix/pull/13643))
* Add `clarinet` language server for Clarity ([#13647](https://github.com/helix-editor/helix/pull/13647))
* Update prisma config to avoid a crash in the language server ([f6878f6](https://github.com/helix-editor/helix/commit/f6878f6))
* Add `pyrefly` for Python ([#13713](https://github.com/helix-editor/helix/pull/13713))
* Update Python highlights ([#13715](https://github.com/helix-editor/helix/pull/13715))
* Update Mojo language server and formatter to `pixi` ([#13648](https://github.com/helix-editor/helix/pull/13648))
* Add `tombi` for TOML ([#13723](https://github.com/helix-editor/helix/pull/13723))
* Add `neocmakelsp` for CMake ([#13740](https://github.com/helix-editor/helix/pull/13740))
* Update C and C++ highlights ([#13747](https://github.com/helix-editor/helix/pull/13747), [#13772](https://github.com/helix-editor/helix/pull/13772))
* Highlight escape sequences in ECMA languages ([#13762](https://github.com/helix-editor/helix/pull/13762))
* Add an external formatter config for Crystal ([#13759](https://github.com/helix-editor/helix/pull/13759))
* Add `amber-lsp` for Amber ([#13763](https://github.com/helix-editor/helix/pull/13763))
* Update HTML highlights ([#13753](https://github.com/helix-editor/helix/pull/13753))
* Update tree-sitter-purescript and highlights ([#13782](https://github.com/helix-editor/helix/pull/13782))
* Update tree-sitter-gleam and highlights ([#13793](https://github.com/helix-editor/helix/pull/13793), [#13807](https://github.com/helix-editor/helix/pull/13807), [#13813](https://github.com/helix-editor/helix/pull/13813))
* Recognize Buck files as Starlark ([#13810](https://github.com/helix-editor/helix/pull/13810))
* Use tree-sitter-crystal instead of tree-sitter-ruby for Crystal and add custom queries ([#13805](https://github.com/helix-editor/helix/pull/13805))
* Update tree-sitter-twig ([#13689](https://github.com/helix-editor/helix/pull/13689))
* Recognize `jsconfig.json` as JSONC, use as JavaScript and JSX roots ([#13822](https://github.com/helix-editor/helix/pull/13822))
* Recognize `.gem/credentials` as YAML ([#13843](https://github.com/helix-editor/helix/pull/13843))
* Update Dockerfile injections ([#13845](https://github.com/helix-editor/helix/pull/13845), 13852)
* Change tree-sitter parser for Git commit message files ([44293df](https://github.com/helix-editor/helix/commit/44293df))
* Recognize `mimeapps.list` as INI ([#13850](https://github.com/helix-editor/helix/pull/13850))
* Update tree-sitter-odin, highlights and indents ([#13877](https://github.com/helix-editor/helix/pull/13877), [#13917](https://github.com/helix-editor/helix/pull/13917))
* Add locals queries for C, improve parameter highlighting ([#13876](https://github.com/helix-editor/helix/pull/13876))
* Add textobjects for QML ([#13855](https://github.com/helix-editor/helix/pull/13855))
* Add comment tokens for DTD ([#13904](https://github.com/helix-editor/helix/pull/13904))
* Add `dts-lsp` for DeviceTree ([#13907](https://github.com/helix-editor/helix/pull/13907))
* Update gomod highlights ([#13913](https://github.com/helix-editor/helix/pull/13913))
* Recognize `compose.yaml` and `compose.yml` as Docker Compose ([#13930](https://github.com/helix-editor/helix/pull/13930))

Packaging:

* Fix handling of spaces in Bash completion ([#12828](https://github.com/helix-editor/helix/pull/12828))
* Refactor Nix flake ([#12831](https://github.com/helix-editor/helix/pull/12831), [#13024](https://github.com/helix-editor/helix/pull/13024), [cb1ecc9](https://github.com/helix-editor/helix/commit/cb1ecc9), [#13305](https://github.com/helix-editor/helix/pull/13305))
* Add `ConsoleOnly` to `Helix.desktop` categories ([#13236](https://github.com/helix-editor/helix/pull/13236))
* Drop Nix flake dependency on flake-utils ([60a03a3](https://github.com/helix-editor/helix/commit/60a03a3))
* Increase the MSRV to 1.82 ([#13275](https://github.com/helix-editor/helix/pull/13275))

# 25.01.1 (2025-01-19)

25.01.1 is a patch release focusing on fixing bugs and panics from changes in 25.01.

Usability improvements:

* Run external formatters from the document's directory ([#12315](https://github.com/helix-editor/helix/pull/12315))

Fixes:

* Fix blank buffer picker preview on doc with no views ([917174e](https://github.com/helix-editor/helix/commit/917174e))
* Fix `join_selections` behavior on tabs ([#12452](https://github.com/helix-editor/helix/pull/12452))
* Fix recognition for color LSP completion hex codes for some language servers ([#12501](https://github.com/helix-editor/helix/pull/12501))
* Fix offsets to selections updated by `open_below`/`open_above` (`o`/`O`) in multi-cursor scenarios ([#12465](https://github.com/helix-editor/helix/pull/12465))
* Fix offsets to selections updated by `insert_newline` when trimming whitespace in multi-cursor scenarios ([4bd17e5](https://github.com/helix-editor/helix/commit/4bd17e5))
* Fix panic in path completion from resolving variables like `${HOME:-$HOME}` ([#12556](https://github.com/helix-editor/helix/pull/12556))
* Prevent line comment continuation when using `change_selection` (`c`) on a line above a comment ([#12575](https://github.com/helix-editor/helix/pull/12575))

Themes:

* Update `onelight` ([#12399](https://github.com/helix-editor/helix/pull/12399))
* Add cursorline color to iceberg themes ([#12404](https://github.com/helix-editor/helix/pull/12404))
* Update `special`, `ui.text.directory` and `ui.virtual.wrap` in `dark_plus` ([#12530](https://github.com/helix-editor/helix/pull/12530))

New languages:

* CodeQL ([#12470](https://github.com/helix-editor/helix/pull/12470))
* Gren ([#12525](https://github.com/helix-editor/helix/pull/12525))

Updated languages and queries:

* Fix Teal LSP name ([#12395](https://github.com/helix-editor/helix/pull/12395))
* Highlight `:` in Rust as a delimiter ([#12408](https://github.com/helix-editor/helix/pull/12408))
* Update Swift highlights ([#12409](https://github.com/helix-editor/helix/pull/12409))
* Highlight JSX attributes as `@attribute` ([#12416](https://github.com/helix-editor/helix/pull/12416))
* Improve markdown heading highlights ([#12417](https://github.com/helix-editor/helix/pull/12417))
* Add comment tokens configuration for JSONC ([b26903c](https://github.com/helix-editor/helix/commit/b26903c))
* Highlight the never type `!` as a type in Rust ([#12485](https://github.com/helix-editor/helix/pull/12485))
* Expand builtin function highlights for ECMA languages, Rust and Haskell ([#12488](https://github.com/helix-editor/helix/pull/12488))
* Recognize `.clang-tidy` as YAML ([#12498](https://github.com/helix-editor/helix/pull/12498))
* Update MATLAB grammar and indent queries ([#12518](https://github.com/helix-editor/helix/pull/12518))
* Recognize `rockspec` as Lua ([#12516](https://github.com/helix-editor/helix/pull/12516))
* Add `///` to Dart comment tokens configuration ([99d33c7](https://github.com/helix-editor/helix/commit/99d33c7))
* Update Solidity grammar and queries ([#12457](https://github.com/helix-editor/helix/pull/12457))
* Update Spade grammar and queries ([#12583](https://github.com/helix-editor/helix/pull/12583))
* Re-enable Hare fetching and building by default ([#11507](https://github.com/helix-editor/helix/pull/11507))

Packaging:

* `--version` now prints a leading zero for single-digit months, for example `25.01` (03f35af)
* Pin the Ubuntu GitHub Actions runners used for releases to `ubuntu-22.04` ([#12464](https://github.com/helix-editor/helix/pull/12464))
* Produce a Debian package (`.deb` file) in the release GitHub Actions workflow ([#12453](https://github.com/helix-editor/helix/pull/12453))

# 25.01 (2025-01-03)

As always, a big thank you to all of the contributors! This release saw changes from 171 contributors.

Breaking changes:

* The `editor.lsp.display-messages` key now controls messages sent with the LSP `window/showMessage` notification rather than progress messages. If you want to enable progress messages you should now enable the `editor.lsp.display-progress-messages` key instead. ([#5535](https://github.com/helix-editor/helix/pull/5535))

Features:

* Big refactor for `Picker`s ([#9647](https://github.com/helix-editor/helix/pull/9647), [#11209](https://github.com/helix-editor/helix/pull/11209), [#11216](https://github.com/helix-editor/helix/pull/11216), [#11211](https://github.com/helix-editor/helix/pull/11211), [#11343](https://github.com/helix-editor/helix/pull/11343), [#11406](https://github.com/helix-editor/helix/pull/11406))
    * Use a table layout and allow filtering by column
    * Reimplement `global_search` to allow changing the query dynamically
* Add an alternative "inline" display for LSP diagnostics ([#6417](https://github.com/helix-editor/helix/pull/6417), [#11815](https://github.com/helix-editor/helix/pull/11815))
* Support defining keybindings as macros ([#4709](https://github.com/helix-editor/helix/pull/4709))
* Continue line comments in `o`/`O` and on `<ret>` in insert mode ([#10996](https://github.com/helix-editor/helix/pull/10996), [#12213](https://github.com/helix-editor/helix/pull/12213), [#12215](https://github.com/helix-editor/helix/pull/12215))
* Allow configuring and switching clipboard providers at runtime ([#10839](https://github.com/helix-editor/helix/pull/10839), [b855cd0](https://github.com/helix-editor/helix/commit/b855cd0), [467fad5](https://github.com/helix-editor/helix/commit/467fad5), [191b0f0](https://github.com/helix-editor/helix/commit/191b0f0))
* Add support for path completion ([#2608](https://github.com/helix-editor/helix/pull/2608))
* Support bindings with the Super (Cmd/Win/Meta) modifier ([#6592](https://github.com/helix-editor/helix/pull/6592))
* Support rendering and jumping between tabstops in snippet completions ([#9801](https://github.com/helix-editor/helix/pull/9801))
* Allow theming directory completions ([#12205](https://github.com/helix-editor/helix/pull/12205), [#12295](https://github.com/helix-editor/helix/pull/12295))

Commands:

* Add commands to move within snake_case or camelCase words ([#8147](https://github.com/helix-editor/helix/pull/8147))
* Add `search_selection_detect_word_boundaries` ([#12126](https://github.com/helix-editor/helix/pull/12126))
    * This command takes the `*` key in normal and select mode, replacing `search_selection` which was moved to `A-*`.

Usability improvements:

* Add `:edit` and `:e` aliases for `:open` ([#11186](https://github.com/helix-editor/helix/pull/11186), [#11196](https://github.com/helix-editor/helix/pull/11196))
* Trim trailing newline from pipe command outputs when the input doesn't have a trailing newline ([#11183](https://github.com/helix-editor/helix/pull/11183), [4f63a46](https://github.com/helix-editor/helix/commit/4f63a46))
* Add `:mv` alias for `:move` ([#11256](https://github.com/helix-editor/helix/pull/11256))
* Return document display name instead of absolute path from the `%` special register ([#11275](https://github.com/helix-editor/helix/pull/11275))
* Track view position on a per-view instead of per-document basis ([#10559](https://github.com/helix-editor/helix/pull/10559))
* Improve scrolloff calculation to leave a gap in the middle ([#11323](https://github.com/helix-editor/helix/pull/11323))
* Show a popup for stderr printed by failed `:sh` commands ([#11239](https://github.com/helix-editor/helix/pull/11239))
* Add statusline errors when nothing is selected with `s`, `K`, `A-K` ([#11370](https://github.com/helix-editor/helix/pull/11370))
* Add `.svn` as a workspace root marker ([#11429](https://github.com/helix-editor/helix/pull/11429))
* Trim the end of `:sh` outputs ([#11161](https://github.com/helix-editor/helix/pull/11161))
* Show LSP `window/showMessage` messages in the statusline ([#5535](https://github.com/helix-editor/helix/pull/5535))
* Support finding workspace directories via `.jj` directories ([#11685](https://github.com/helix-editor/helix/pull/11685))
* Join single-line comments with `join_selections` (`J`) ([#11742](https://github.com/helix-editor/helix/pull/11742))
* Show anonymous syntax tree nodes in `:tree-sitter-subtree` ([#11663](https://github.com/helix-editor/helix/pull/11663), [38e8382](https://github.com/helix-editor/helix/commit/38e8382))
* Save an undo checkpoint before paste in insert mode ([#8121](https://github.com/helix-editor/helix/pull/8121))
* Only break on ASCII spaces in `:reflow` ([#12048](https://github.com/helix-editor/helix/pull/12048))
* Add a `default-yank-register` config option ([#11430](https://github.com/helix-editor/helix/pull/11430))
* Show a statusline error for `:format` when a formatter is not available ([#12183](https://github.com/helix-editor/helix/pull/12183))
* Change to the home directory with `:cd` with no arguments ([#12042](https://github.com/helix-editor/helix/pull/12042))
* Change default comment token to `#` for unrecognized files ([#12080](https://github.com/helix-editor/helix/pull/12080), [#12266](https://github.com/helix-editor/helix/pull/12266), [bae6a58](https://github.com/helix-editor/helix/commit/bae6a58))
* Trim all trailing whitespace on `insert_newline` ([#12177](https://github.com/helix-editor/helix/pull/12177))
* Change to the prior directory with `:cd -` ([#12194](https://github.com/helix-editor/helix/pull/12194))
* Allow parsing `-` (with no modifiers) as a keybinding ([#12191](https://github.com/helix-editor/helix/pull/12191))
* Improve opening statusline and error messages when opening duplicate files or directories ([#12199](https://github.com/helix-editor/helix/pull/12199))
* Trim trailing colons in paths passed on the argv ([#9963](https://github.com/helix-editor/helix/pull/9963))
* Show tree-sitter parser availability in `hx --health <lang>` ([#12228](https://github.com/helix-editor/helix/pull/12228))
* Show a preview block for colors in the LSP completion menu ([#12299](https://github.com/helix-editor/helix/pull/12299))
* Add infobox help for `surround_add`, `surround_replace` and `surround_delete` ([#12262](https://github.com/helix-editor/helix/pull/12262))

Fixes:

* Respect document indentation settings in `format_selections` (`=`) ([#11169](https://github.com/helix-editor/helix/pull/11169))
* Avoid switching the current document to normal mode during an LSP `workspace/applyEdit` operation ([#11176](https://github.com/helix-editor/helix/pull/11176))
* Fix off-by-one in LSP `find_completion_range` ([#11266](https://github.com/helix-editor/helix/pull/11266))
* Prefer file-system mtime to local system time for detecting external modifications ([#11142](https://github.com/helix-editor/helix/pull/11142), [#11352](https://github.com/helix-editor/helix/pull/11352), [#11358](https://github.com/helix-editor/helix/pull/11358), [#11361](https://github.com/helix-editor/helix/pull/11361))
* Fix writing of hardlinks ([#11340](https://github.com/helix-editor/helix/pull/11340))
* Prevent language servers from being automatically restarted when stopped with `:lsp-stop` ([#11321](https://github.com/helix-editor/helix/pull/11321))
* Stable-sort LSP text edits ([#11357](https://github.com/helix-editor/helix/pull/11357))
* Fix determination of current language layer in documents with nested language injections ([#11365](https://github.com/helix-editor/helix/pull/11365))
* Fix a panic from `:move`ing a file to a new extension which starts a language server ([#11387](https://github.com/helix-editor/helix/pull/11387))
* Fix a panic from duplicating the diff gutter ([#11092](https://github.com/helix-editor/helix/pull/11092))
* Keep cursor position when exactly replacing text ([#5930](https://github.com/helix-editor/helix/pull/5930))
* Fix a panic from `jump_backward` on a newly opened split ([#11508](https://github.com/helix-editor/helix/pull/11508))
* Fix a panic from language servers sending an unknown diagnostic severity ([#11569](https://github.com/helix-editor/helix/pull/11569))
* Fix a panic when drawing at the edge of the screen ([#11737](https://github.com/helix-editor/helix/pull/11737))
* Fix git repo detection on symlinks ([#11732](https://github.com/helix-editor/helix/pull/11732))
* Fix a panic from a language server sending an out-of-range active signature index in `textDocument/signatureHelp` ([#11825](https://github.com/helix-editor/helix/pull/11825))
* Fix a panic from using `C-k` in a prompt ending in a multi-byte character ([#12237](https://github.com/helix-editor/helix/pull/12237))
* Expand tildes in paths passed to `:read` ([#12271](https://github.com/helix-editor/helix/pull/12271))
* Respect per-language `workspace-lsp-roots` configuration when opening new documents ([#12223](https://github.com/helix-editor/helix/pull/12223))
* Consistently replace line-endings in paste/replace commands ([c262fe4](https://github.com/helix-editor/helix/commit/c262fe4))
* Fix formatting in error statusline messages when inspecting variables in DAP ([#12354](https://github.com/helix-editor/helix/pull/12354))
* Fix invisible printing of headers in `--health` output on light terminals ([#12355](https://github.com/helix-editor/helix/pull/12355))
* Accept integers serialized as floats in the JSONRPC `id` field ([#12376](https://github.com/helix-editor/helix/pull/12376))

Themes:

* Bring `kanagawa` colors better in line with neovim version ([#11187](https://github.com/helix-editor/helix/pull/11187), [#11270](https://github.com/helix-editor/helix/pull/11270))
* Add `ao` ([#11063](https://github.com/helix-editor/helix/pull/11063))
* Update `dark_plus` ([#11415](https://github.com/helix-editor/helix/pull/11415))
* Add `iceberg-light` and `iceberg-dark` ([#10674](https://github.com/helix-editor/helix/pull/10674))
* Update everforest themes ([#11459](https://github.com/helix-editor/helix/pull/11459))
* Update gruvbox themes ([#11477](https://github.com/helix-editor/helix/pull/11477))
* Change primary selection cursor color for `naysayer` ([#11617](https://github.com/helix-editor/helix/pull/11617))
* Style picker column names in `horizon-dark` ([#11649](https://github.com/helix-editor/helix/pull/11649))
* Style picker column names in Darcula themes ([#11649](https://github.com/helix-editor/helix/pull/11649))
* Update diagnostics colors in `snazzy` ([#11731](https://github.com/helix-editor/helix/pull/11731))
* Update bogster themes ([#11353](https://github.com/helix-editor/helix/pull/11353))
* Highlight `keyword.storage` in `onedark` ([#11802](https://github.com/helix-editor/helix/pull/11802))
* Add `ui.virtual.jump-label` to `serika-dark` ([#11911](https://github.com/helix-editor/helix/pull/11911))
* Add `adwaita-light` ([#10869](https://github.com/helix-editor/helix/pull/10869))
* Add seoul256 themes ([#11466](https://github.com/helix-editor/helix/pull/11466))
* Add yo themes ([#11703](https://github.com/helix-editor/helix/pull/11703))
* Add `eiffel` ([#11679](https://github.com/helix-editor/helix/pull/11679))
* Add `carbonfox` ([#11558](https://github.com/helix-editor/helix/pull/11558))
* Set tags color in monokai themes ([#11917](https://github.com/helix-editor/helix/pull/11917))
* Improve readability of spacebones picker selection ([#12064](https://github.com/helix-editor/helix/pull/12064))
* Update modus themes ([#11949](https://github.com/helix-editor/helix/pull/11949))
* Use bold for statusline mode indicator in `onedarker` ([#11958](https://github.com/helix-editor/helix/pull/11958))
* Update hex themes, add a new hex theme ([#10849](https://github.com/helix-editor/helix/pull/10849))
* Add `sunset` ([#12093](https://github.com/helix-editor/helix/pull/12093))
* Add bufferline highlighting for flexoki themes ([#12146](https://github.com/helix-editor/helix/pull/12146))
* Add colors for (un)checked list items to catppuccin themes ([#12167](https://github.com/helix-editor/helix/pull/12167))
* Update `voxed` ([#9328](https://github.com/helix-editor/helix/pull/9328))
* Add `vintage` ([#9361](https://github.com/helix-editor/helix/pull/9361))
* Add directory style to everforest themes ([#12287](https://github.com/helix-editor/helix/pull/12287))
* Add inactive text and update jump label highlights in `dark_plus` ([#12289](https://github.com/helix-editor/helix/pull/12289))
* Sync changes with catppuccin themes ([#12304](https://github.com/helix-editor/helix/pull/12304))
* Add `ui.text.directory` to `nightfox` ([#12328](https://github.com/helix-editor/helix/pull/12328))
* Add `ui.text.directory` to `sunset` ([#12328](https://github.com/helix-editor/helix/pull/12328))
* Add `diagnostic.unnecessary` to Catppuccin themes ([#12391](https://github.com/helix-editor/helix/pull/12391))

New languages:

* `jjdescription` ([#11271](https://github.com/helix-editor/helix/pull/11271), [#11857](https://github.com/helix-editor/helix/pull/11857), [#12305](https://github.com/helix-editor/helix/pull/12305))
* i3wm and Sway configs ([#11424](https://github.com/helix-editor/helix/pull/11424))
* TypeSpec ([#11412](https://github.com/helix-editor/helix/pull/11412))
* jq ([#11393](https://github.com/helix-editor/helix/pull/11393))
* Thrift ([#11367](https://github.com/helix-editor/helix/pull/11367))
* Gherkin ([#11083](https://github.com/helix-editor/helix/pull/11083))
* Circom ([#11676](https://github.com/helix-editor/helix/pull/11676))
* Dune ([#11829](https://github.com/helix-editor/helix/pull/11829))
* Snakemake ([#11858](https://github.com/helix-editor/helix/pull/11858), [#11936](https://github.com/helix-editor/helix/pull/11936))
* Cylc ([#11830](https://github.com/helix-editor/helix/pull/11830))
* textproto ([#11874](https://github.com/helix-editor/helix/pull/11874))
* Spade ([#11448](https://github.com/helix-editor/helix/pull/11448), [#12276](https://github.com/helix-editor/helix/pull/12276))
* NestedText ([#11987](https://github.com/helix-editor/helix/pull/11987))
* Quint ([#11898](https://github.com/helix-editor/helix/pull/11898))
* Amber-lang ([#12021](https://github.com/helix-editor/helix/pull/12021))
* Vento ([#12147](https://github.com/helix-editor/helix/pull/12147))
* Teal ([#12081](https://github.com/helix-editor/helix/pull/12081))
* Koto ([#12307](https://github.com/helix-editor/helix/pull/12307))
* NGINX ([#12309](https://github.com/helix-editor/helix/pull/12309))

Updated languages and queries:

* Add comment injections for Hare ([#11173](https://github.com/helix-editor/helix/pull/11173))
* Improve highlights for `blade.php` files ([#11138](https://github.com/helix-editor/helix/pull/11138))
* Update tree-sitter-slint ([#11224](https://github.com/helix-editor/helix/pull/11224), [#11757](https://github.com/helix-editor/helix/pull/11757), [#12297](https://github.com/helix-editor/helix/pull/12297))
* Recognize `just` files as Just ([#11286](https://github.com/helix-editor/helix/pull/11286))
* Recognize `mdx` as Markdown ([#11122](https://github.com/helix-editor/helix/pull/11122))
* Update Just grammar and queries ([#11306](https://github.com/helix-editor/helix/pull/11306))
* Recognize `tclsh` as TCL ([#11236](https://github.com/helix-editor/helix/pull/11236))
* Update Godot grammar and queries ([#11235](https://github.com/helix-editor/helix/pull/11235))
* Update Gleam grammar and queries ([#11427](https://github.com/helix-editor/helix/pull/11427))
* Add `mesonlsp` for Meson ([#11416](https://github.com/helix-editor/helix/pull/11416))
* Update HTML highlights ([#11400](https://github.com/helix-editor/helix/pull/11400))
* Add comment textobjects for Verilog ([#11388](https://github.com/helix-editor/helix/pull/11388))
* Switch tree-sitter-just grammar ([#11380](https://github.com/helix-editor/helix/pull/11380), [#11606](https://github.com/helix-editor/helix/pull/11606), [#12141](https://github.com/helix-editor/helix/pull/12141))
* Update tree-sitter-fsharp ([#11061](https://github.com/helix-editor/helix/pull/11061))
* Add `nixd` for Nix ([#10767](https://github.com/helix-editor/helix/pull/10767))
* Highlight types and enum members from the Rust prelude ([#8535](https://github.com/helix-editor/helix/pull/8535))
* Improve textobjects for HCL, Nix ([#11513](https://github.com/helix-editor/helix/pull/11513))
* Add textobjects queries for docker-compose, dockerfile, env, git-config, hcl, hocon, prisma, SQL and YAML ([#11513](https://github.com/helix-editor/helix/pull/11513))
* Recognize cshtml files as HTML ([#11540](https://github.com/helix-editor/helix/pull/11540))
* Set a memory limit for the Lean language server ([#11683](https://github.com/helix-editor/helix/pull/11683))
* Add configurations for jedi and ruff language servers ([#11630](https://github.com/helix-editor/helix/pull/11630))
* Update Vue highlights ([#11706](https://github.com/helix-editor/helix/pull/11706))
* Switch tree-sitter-hcl grammar ([#11749](https://github.com/helix-editor/helix/pull/11749))
* Fix `odinfmt` formatter configuration ([#11759](https://github.com/helix-editor/helix/pull/11759))
* Recognize `rbs` files as Ruby ([#11786](https://github.com/helix-editor/helix/pull/11786))
* Update tree-sitter-nickel ([#11771](https://github.com/helix-editor/helix/pull/11771))
* Recognize `ldtk` and `ldtkl` files as JSON ([#11793](https://github.com/helix-editor/helix/pull/11793))
* Fix highlights for builtin functions in Fish ([#11792](https://github.com/helix-editor/helix/pull/11792))
* Add `superhtml` for HTML ([#11609](https://github.com/helix-editor/helix/pull/11609))
* Add a configuration for the Vale language server ([#11636](https://github.com/helix-editor/helix/pull/11636))
* Add Erlang Language Platform (`elp`) for Erlang ([#11499](https://github.com/helix-editor/helix/pull/11499))
* Update Odin highlights ([#11804](https://github.com/helix-editor/helix/pull/11804))
* Remove auto-pairs for single quotes in SML ([#11838](https://github.com/helix-editor/helix/pull/11838))
* Add `glsl_analyzer` for GLSL ([#11891](https://github.com/helix-editor/helix/pull/11891))
* Recognize `.prettierrc` as YAML ([#11997](https://github.com/helix-editor/helix/pull/11997))
* Fix `swift-format` formatter configuration ([#12052](https://github.com/helix-editor/helix/pull/12052))
* Add `package.json` and `tsconfig.json` as JS/TS workspace roots ([#10652](https://github.com/helix-editor/helix/pull/10652))
* Add "INVARIANT" to comment error highlights ([#12094](https://github.com/helix-editor/helix/pull/12094))
* Update Rescript grammar and queries ([#11165](https://github.com/helix-editor/helix/pull/11165))
* Update tree-sitter-nasm ([#11795](https://github.com/helix-editor/helix/pull/11795))
* Update LLVM grammars ([#11851](https://github.com/helix-editor/helix/pull/11851))
* Update Perl and Pod grammars ([#11848](https://github.com/helix-editor/helix/pull/11848))
* Add Nim injections in Nix ([#11837](https://github.com/helix-editor/helix/pull/11837))
* Recognize `livemd` as Markdown ([#12034](https://github.com/helix-editor/helix/pull/12034))
* Update Unison grammar and queries ([#12039](https://github.com/helix-editor/helix/pull/12039))
* Turn off Swift auto-format by default ([#12071](https://github.com/helix-editor/helix/pull/12071))
* Recognize `.swift-format` as JSON ([#12071](https://github.com/helix-editor/helix/pull/12071))
* Recognize `.clangd` and `.clang-format` as YAML ([#12032](https://github.com/helix-editor/helix/pull/12032))
* Recognize `ssh_config.d/*.conf` as sshclientconfig ([#11947](https://github.com/helix-editor/helix/pull/11947))
* Update comment token configs for Zig ([#12049](https://github.com/helix-editor/helix/pull/12049))
* Update tree-sitter-bicep ([#11525](https://github.com/helix-editor/helix/pull/11525))
* Add `hyperls` for Hyperlang ([#11056](https://github.com/helix-editor/helix/pull/11056))
* Add highlight queries for Solidity ([#12102](https://github.com/helix-editor/helix/pull/12102))
* Recognize `WORKSPACE.bzlmod` as Starlark ([#12103](https://github.com/helix-editor/helix/pull/12103))
* Update Ada grammar and queries ([#12131](https://github.com/helix-editor/helix/pull/12131))
* Restrict Hocon file-types glob patterns ([#12156](https://github.com/helix-editor/helix/pull/12156))
* Update Mojo language server to Magic ([#12195](https://github.com/helix-editor/helix/pull/12195))
* Switch tree-sitter-v grammar ([#12236](https://github.com/helix-editor/helix/pull/12236))
* Add "COMPLIANCE" to comment error highlights ([#12094](https://github.com/helix-editor/helix/pull/12094))
* Add a language server configuration for `ltex-ls-plus` ([#12251](https://github.com/helix-editor/helix/pull/12251))
* Update tree-sitter-dockerfile ([#12230](https://github.com/helix-editor/helix/pull/12230))
* Add `]` to PHP outdents ([#12286](https://github.com/helix-editor/helix/pull/12286))
* Add textobjects for Odin ([#12302](https://github.com/helix-editor/helix/pull/12302))
* Update tree-sitter-heex and queries ([#12334](https://github.com/helix-editor/helix/pull/12334))
* Update protobuf highlights ([#12339](https://github.com/helix-editor/helix/pull/12339))
* Switch tree-sitter-query (TSQ) grammar ([#12148](https://github.com/helix-editor/helix/pull/12148), [e0bccd2](https://github.com/helix-editor/helix/commit/e0bccd2))
* Add block comment configurations for jinja and nunjucks ([#12348](https://github.com/helix-editor/helix/pull/12348))
* Add `uv` shebang for python ([#12360](https://github.com/helix-editor/helix/pull/12360))
* Update tree-sitter-vento ([#12368](https://github.com/helix-editor/helix/pull/12368))
* Switch Protobuf tree-sitter grammar ([#12225](https://github.com/helix-editor/helix/pull/12225))
* Recognize `hypr/*.conf` as Hyprland ([#12384](https://github.com/helix-editor/helix/pull/12384))

Packaging:

* Add completions for Nushell ([#11262](https://github.com/helix-editor/helix/pull/11262), [#11346](https://github.com/helix-editor/helix/pull/11346))
* Fix completion of flags in Bash completions ([#11246](https://github.com/helix-editor/helix/pull/11246))
* Include shell completions in Nix outputs ([#11518](https://github.com/helix-editor/helix/pull/11518))

# 24.07 (2024-07-14)

Thanks to all of the contributors! This release has changes from 160 contributors.

Breaking changes:

Features:

- Add a textobject for entries/elements of list-like things ([#8150](https://github.com/helix-editor/helix/pull/8150))
- Add a picker showing files changed in VCS ([#5645](https://github.com/helix-editor/helix/pull/5645))
- Use a temporary file for writes ([#9236](https://github.com/helix-editor/helix/pull/9236), [#10339](https://github.com/helix-editor/helix/pull/10339), [#10790](https://github.com/helix-editor/helix/pull/10790))
- Allow cycling through LSP signature-help signatures with `A-n`/`A-p` ([#9974](https://github.com/helix-editor/helix/pull/9974), [#10654](https://github.com/helix-editor/helix/pull/10654), [#10655](https://github.com/helix-editor/helix/pull/10655))
- Use tree-sitter when finding matching brackets and closest pairs ([#8294](https://github.com/helix-editor/helix/pull/8294), [#10613](https://github.com/helix-editor/helix/pull/10613), [#10777](https://github.com/helix-editor/helix/pull/10777))
- Auto-save all buffers after a delay ([#10899](https://github.com/helix-editor/helix/pull/10899), [#11047](https://github.com/helix-editor/helix/pull/11047))

Commands:

- `select_all_siblings` (`A-a`) - select all siblings of each selection ([87c4161](https://github.com/helix-editor/helix/commit/87c4161))
- `select_all_children` (`A-I`) - select all children of each selection ([fa67c5c](https://github.com/helix-editor/helix/commit/fa67c5c))
- `:read` - insert the contents of the given file at each selection ([#10447](https://github.com/helix-editor/helix/pull/10447))

Usability improvements:

- Support scrolling popup contents using the mouse ([#10053](https://github.com/helix-editor/helix/pull/10053))
- Sort the jumplist picker so that most recent items come first ([#10095](https://github.com/helix-editor/helix/pull/10095))
- Improve `goto_file`'s (`gf`) automatic path detection strategy ([#9065](https://github.com/helix-editor/helix/pull/9065))
- Respect language server definition order in code action menu ([#9590](https://github.com/helix-editor/helix/pull/9590))
- Allow using a count with `goto_next_buffer` (`gn`) and `goto_previous_buffer` (`gp`) ([#10463](https://github.com/helix-editor/helix/pull/10463))
- Improve the positioning of popups ([#10257](https://github.com/helix-editor/helix/pull/10257), [#10573](https://github.com/helix-editor/helix/pull/10573))
- Reset all changes overlapped by selections in `:reset-diff-change` ([#10728](https://github.com/helix-editor/helix/pull/10728))
- Await pending writes in the `suspend` command (`C-z`) ([#10797](https://github.com/helix-editor/helix/pull/10797))
- Remove special handling of line ending characters in `replace` (`r`) ([#10786](https://github.com/helix-editor/helix/pull/10786))
- Use the selected register as a history register for `rename_symbol` (`<space>r`) ([#10932](https://github.com/helix-editor/helix/pull/10932))
- Use the configured insert-mode cursor for prompt entry ([#10945](https://github.com/helix-editor/helix/pull/10945))
- Add tilted quotes to the matching brackets list ([#10971](https://github.com/helix-editor/helix/pull/10971))
- Prevent improper files like `/dev/urandom` from being used as file arguments ([#10733](https://github.com/helix-editor/helix/pull/10733))
- Allow multiple language servers to provide `:lsp-workspace-command`s ([#10176](https://github.com/helix-editor/helix/pull/10176), [#11105](https://github.com/helix-editor/helix/pull/11105))
- Trim output of commands executed through `:pipe` ([#10952](https://github.com/helix-editor/helix/pull/10952))

Fixes:

- Use `lldb-dap` instead of `lldb-vscode` in default DAP configuration ([#10091](https://github.com/helix-editor/helix/pull/10091))
- Fix creation of uneven splits when closing windows ([#10004](https://github.com/helix-editor/helix/pull/10004))
- Avoid setting a register in `delete_selection_noyank`, fixing the command's use in command sequences ([#10050](https://github.com/helix-editor/helix/pull/10050), [#10148](https://github.com/helix-editor/helix/pull/10148))
- Fix jump alphabet config resetting when using `:config-reload` ([#10156](https://github.com/helix-editor/helix/pull/10156))
- Overlay LSP unnecessary/deprecated diagnostic tag highlights onto regular diagnostic highlights ([#10084](https://github.com/helix-editor/helix/pull/10084))
- Fix crash on LSP text edits with invalid ranges ([#9649](https://github.com/helix-editor/helix/pull/9649))
- Handle partial failure when sending multiple LSP `textDocument/didSave` notifications ([#10168](https://github.com/helix-editor/helix/pull/10168))
- Fix off-by-one error for completion-replace option ([#10279](https://github.com/helix-editor/helix/pull/10279))
- Fix mouse right-click selection behavior ([#10067](https://github.com/helix-editor/helix/pull/10067))
- Fix scrolling to the end within a popup ([#10181](https://github.com/helix-editor/helix/pull/10181))
- Fix jump label highlight locations when jumping in non-ascii text ([#10317](https://github.com/helix-editor/helix/pull/10317))
- Fix crashes from tree-sitter query captures that return non-grapheme aligned ranges ([#10310](https://github.com/helix-editor/helix/pull/10310))
- Include VCS change in `mi`/`ma` textobject infobox ([#10496](https://github.com/helix-editor/helix/pull/10496))
- Override crossterm's support for `NO_COLOR` ([#10514](https://github.com/helix-editor/helix/pull/10514))
- Respect mode when starting a search ([#10505](https://github.com/helix-editor/helix/pull/10505))
- Simplify first-in-line computation for indent queries ([#10527](https://github.com/helix-editor/helix/pull/10527))
- Ignore .svn version controlled files in file pickers ([#10536](https://github.com/helix-editor/helix/pull/10536))
- Fix overloading language servers with `completionItem/resolve` requests ([38ee845](https://github.com/helix-editor/helix/commit/38ee845), [#10873](https://github.com/helix-editor/helix/pull/10873))
- Specify direction for `select_next_sibling` / `select_prev_sibling` ([#10542](https://github.com/helix-editor/helix/pull/10542))
- Fix restarting language servers ([#10614](https://github.com/helix-editor/helix/pull/10614))
- Don't stop at the first URL in `goto_file` ([#10622](https://github.com/helix-editor/helix/pull/10622))
- Fix overflows in window size calculations for small terminals ([#10620](https://github.com/helix-editor/helix/pull/10620))
- Allow missing or empty completion lists in DAP ([#10332](https://github.com/helix-editor/helix/pull/10332))
- Revert statusline refactor that could cause the statusline to blank out on files with long paths ([#10642](https://github.com/helix-editor/helix/pull/10642))
- Synchronize files after writing ([#10735](https://github.com/helix-editor/helix/pull/10735))
- Avoid `cnorm` for cursor-type detection in certain terminals ([#10769](https://github.com/helix-editor/helix/pull/10769))
- Reset inlay hints when stopping or restarting a language server ([#10741](https://github.com/helix-editor/helix/pull/10741))
- Fix logic for updating `--version` when development VCS HEAD changes ([#10896](https://github.com/helix-editor/helix/pull/10896))
- Set a max value for the count ([#10930](https://github.com/helix-editor/helix/pull/10930))
- Deserialize number IDs in DAP module types ([#10943](https://github.com/helix-editor/helix/pull/10943))
- Fix the behavior of `jump_backwords` when the jumplist is at capacity ([#10968](https://github.com/helix-editor/helix/pull/10968))
- Fix injection layer heritage tracking for reused tree-sitter injection layers ([#1098](https://github.com/helix-editor/helix/pull/1098))
- Fix pluralization of "buffers" in the statusline for `:q`, `:q!`, `:wq` ([#11018](https://github.com/helix-editor/helix/pull/11018))
- Declare LSP formatting client capabilities ([#11064](https://github.com/helix-editor/helix/pull/11064))
- Commit uncommitted changes before attempting undo/earlier ([#11090](https://github.com/helix-editor/helix/pull/11090))
- Expand tilde for selected paths in `goto_file` ([#10964](https://github.com/helix-editor/helix/pull/10964))
- Commit undo checkpoints before `:write[-all]`, fixing the modification indicator ([#11062](https://github.com/helix-editor/helix/pull/11062))

Themes:

- Add jump label styles to `nightfox` ([#10052](https://github.com/helix-editor/helix/pull/10052))
- Add jump label styles to Solarized themes ([#10056](https://github.com/helix-editor/helix/pull/10056))
- Add jump label styles to `cyan_light` ([#10058](https://github.com/helix-editor/helix/pull/10058))
- Add jump label styles to `onelight` ([#10061](https://github.com/helix-editor/helix/pull/10061))
- Add `flexoki-dark` and `flexoki-light` ([#10002](https://github.com/helix-editor/helix/pull/10002))
- Add default theme keys for LSP diagnostics tags to existing themes ([#10064](https://github.com/helix-editor/helix/pull/10064))
- Add jump label styles to base16 themes ([#10076](https://github.com/helix-editor/helix/pull/10076))
- Dim primary selection in `kanagawa` ([#10094](https://github.com/helix-editor/helix/pull/10094), [#10500](https://github.com/helix-editor/helix/pull/10500))
- Add jump label styles to tokyonight themes ([#10106](https://github.com/helix-editor/helix/pull/10106))
- Add jump label styles to papercolor themes ([#10104](https://github.com/helix-editor/helix/pull/10104))
- Add jump label styles to Darcula themes ([#10116](https://github.com/helix-editor/helix/pull/10116))
- Add jump label styles to `autumn` ([#10134](https://github.com/helix-editor/helix/pull/10134))
- Add jump label styles to Ayu themes ([#10133](https://github.com/helix-editor/helix/pull/10133))
- Add jump label styles to `dark_high_contrast` ([#10133](https://github.com/helix-editor/helix/pull/10133))
- Update material themes ([#10290](https://github.com/helix-editor/helix/pull/10290))
- Add jump label styles to `varua` ([#10299](https://github.com/helix-editor/helix/pull/10299))
- Add ruler style to `adwaita-dark` ([#10260](https://github.com/helix-editor/helix/pull/10260))
- Remove `ui.highlight` effects from `solarized_dark` ([#10261](https://github.com/helix-editor/helix/pull/10261))
- Fix statusline color in material themes ([#10308](https://github.com/helix-editor/helix/pull/10308))
- Brighten `nord` selection highlight ([#10307](https://github.com/helix-editor/helix/pull/10307))
- Add inlay-hint styles to monokai themes ([#10334](https://github.com/helix-editor/helix/pull/10334))
- Add bufferline and cursorline colors to `vim_dark_high_contrast` ([#10444](https://github.com/helix-editor/helix/pull/10444))
- Switch themes with foreground rulers to background ([#10309](https://github.com/helix-editor/helix/pull/10309))
- Fix statusline colors for `everblush` ([#10394](https://github.com/helix-editor/helix/pull/10394))
- Use `yellow1` for `gruvbox` warning diagnostics ([#10506](https://github.com/helix-editor/helix/pull/10506))
- Add jump label styles to Modus themes ([#10538](https://github.com/helix-editor/helix/pull/10538))
- Refactor `dark_plus` and switch maintainers ([#10543](https://github.com/helix-editor/helix/pull/10543), [#10574](https://github.com/helix-editor/helix/pull/10574))
- Add debug highlights to `dark_plus` ([#10593](https://github.com/helix-editor/helix/pull/10593))
- Fix per-mode cursor colors in the default theme ([#10608](https://github.com/helix-editor/helix/pull/10608))
- Add `tag` and `attribute` highlights to `dark_high_contrast` ([#10705](https://github.com/helix-editor/helix/pull/10705))
- Improve readability of virtual text with `noctis` theme ([#10910](https://github.com/helix-editor/helix/pull/10910))
- Sync `catppuccin` themes with upstream ([#10954](https://github.com/helix-editor/helix/pull/10954))
- Improve jump colors for `github_dark` themes ([#10946](https://github.com/helix-editor/helix/pull/10946))
- Add modeline and default virtual highlights to `base16_default` ([#10858](https://github.com/helix-editor/helix/pull/10858))
- Add `iroaseta` ([#10381](https://github.com/helix-editor/helix/pull/10381))
- Refactor `gruvbox` ([#10773](https://github.com/helix-editor/helix/pull/10773), [#11071](https://github.com/helix-editor/helix/pull/11071))
- Add cursorcolumn and cursorline to `base16_transparent` ([#11099](https://github.com/helix-editor/helix/pull/11099))
- Update cursorline color for `fleet_dark` ([#11046](https://github.com/helix-editor/helix/pull/11046))
- Add `kanagawa-dragon` ([#10172](https://github.com/helix-editor/helix/pull/10172))

New languages:

- BitBake ([#10010](https://github.com/helix-editor/helix/pull/10010))
- Earthfile ([#10111](https://github.com/helix-editor/helix/pull/10111), [#10489](https://github.com/helix-editor/helix/pull/10489), [#10779](https://github.com/helix-editor/helix/pull/10779))
- TCL ([#9837](https://github.com/helix-editor/helix/pull/9837))
- ADL ([#10029](https://github.com/helix-editor/helix/pull/10029))
- LDIF ([#10330](https://github.com/helix-editor/helix/pull/10330))
- XTC ([#10448](https://github.com/helix-editor/helix/pull/10448))
- Move ([f06a166](https://github.com/helix-editor/helix/commit/f06a166))
- Pest ([#10616](https://github.com/helix-editor/helix/pull/10616))
- GJS/GTS ([#9940](https://github.com/helix-editor/helix/pull/9940))
- Inko ([#10656](https://github.com/helix-editor/helix/pull/10656))
- Mojo ([#10743](https://github.com/helix-editor/helix/pull/10743))
- Elisp ([#10644](https://github.com/helix-editor/helix/pull/10644))

Updated languages and queries:

- Recognize `mkdn` files as markdown ([#10065](https://github.com/helix-editor/helix/pull/10065))
- Add comment injections for Gleam ([#10062](https://github.com/helix-editor/helix/pull/10062))
- Recognize BuildKite commands in YAML injections ([#10090](https://github.com/helix-editor/helix/pull/10090))
- Add F# block comment token configuration ([#10108](https://github.com/helix-editor/helix/pull/10108))
- Update tree-sitter-templ and queries ([#10114](https://github.com/helix-editor/helix/pull/10114))
- Recognize `Tiltfile` as Starlark ([#10072](https://github.com/helix-editor/helix/pull/10072))
- Remove `todo.txt` from files recognized as todotxt ([5fece00](https://github.com/helix-editor/helix/commit/5fece00))
- Highlight `type` keyword in Python from PEP695 ([#10165](https://github.com/helix-editor/helix/pull/10165))
- Update tree-sitter-koka, add language server config ([#10119](https://github.com/helix-editor/helix/pull/10119))
- Recognize node and Python history files ([#10120](https://github.com/helix-editor/helix/pull/10120))
- Recognize more shell files as bash ([#10120](https://github.com/helix-editor/helix/pull/10120))
- Recognize the bun shebang as typescript ([#10120](https://github.com/helix-editor/helix/pull/10120))
- Add a configuration for the angular language server ([#10166](https://github.com/helix-editor/helix/pull/10166))
- Add textobject queries for Solidity ([#10318](https://github.com/helix-editor/helix/pull/10318))
- Recognize `meson.options` as Meson ([#10323](https://github.com/helix-editor/helix/pull/10323))
- Improve Solidity highlighting ([4fc0a4d](https://github.com/helix-editor/helix/commit/4fc0a4d))
- Recognize `_.tpl` files as Helm ([#10344](https://github.com/helix-editor/helix/pull/10344))
- Update tree-sitter-ld and highlights ([#10379](https://github.com/helix-editor/helix/pull/10379))
- Add `lldb-dap` configuration for Odin ([#10175](https://github.com/helix-editor/helix/pull/10175))
- Update tree-sitter-rust ([#10365](https://github.com/helix-editor/helix/pull/10365))
- Update tree-sitter-typst ([#10321](https://github.com/helix-editor/helix/pull/10321))
- Recognize `hyprpaper.conf`, `hypridle.conf` and `hyprlock.conf` as Hyprlang ([#10383](https://github.com/helix-editor/helix/pull/10383))
- Improve HTML highlighting ([#10503](https://github.com/helix-editor/helix/pull/10503))
- Add `rust-script` and `cargo` as shebangs for Rust ([#10484](https://github.com/helix-editor/helix/pull/10484))
- Fix precedence of tag highlights in Svelte ([#10487](https://github.com/helix-editor/helix/pull/10487))
- Update tree-sitter-bash ([#10526](https://github.com/helix-editor/helix/pull/10526))
- Recognize `*.ignore` files as ignore ([#10579](https://github.com/helix-editor/helix/pull/10579))
- Add configuration to enable inlay hints in metals ([#10597](https://github.com/helix-editor/helix/pull/10597))
- Enable highlighting private members in ECMA languages ([#10554](https://github.com/helix-editor/helix/pull/10554))
- Add comment injection to typst queries ([#10628](https://github.com/helix-editor/helix/pull/10628))
- Add textobject queries for Hurl ([#10594](https://github.com/helix-editor/helix/pull/10594))
- Add `try` keyword to Rust ([#10641](https://github.com/helix-editor/helix/pull/10641))
- Add `is not` and `not in` to Python highlights ([#10647](https://github.com/helix-editor/helix/pull/10647))
- Remove ' and ⟨⟩ from Lean autopair configuration ([#10688](https://github.com/helix-editor/helix/pull/10688))
- Match TOML/YAML highlights for JSON keys ([#10676](https://github.com/helix-editor/helix/pull/10676))
- Recognize WORKSPACE files as Starlark ([#10713](https://github.com/helix-editor/helix/pull/10713))
- Switch Odin tree-sitter grammar and highlights ([#10698](https://github.com/helix-editor/helix/pull/10698))
- Update `tree-sitter-slint` ([#10749](https://github.com/helix-editor/helix/pull/10749))
- Add missing operators for Solidity highlights ([#10735](https://github.com/helix-editor/helix/pull/10735))
- Update `tree-sitter-inko` ([#10805](https://github.com/helix-editor/helix/pull/10805))
- Add `py`, `hs`, `rs` and `typ` injection regexes ([#10785](https://github.com/helix-editor/helix/pull/10785))
- Update Swift grammar and queries ([#10802](https://github.com/helix-editor/helix/pull/10802))
- Update Cairo grammar and queries ([#10919](https://github.com/helix-editor/helix/pull/10919), [#11067](https://github.com/helix-editor/helix/pull/11067))
- Update Rust grammar ([#10973](https://github.com/helix-editor/helix/pull/10973))
- Add block comment tokens for typst ([#10955](https://github.com/helix-editor/helix/pull/10955))
- Recognize `jsonl` as JSON ([#11004](https://github.com/helix-editor/helix/pull/11004))
- Add rulers and text-width at 100 columns for Lean language ([#10969](https://github.com/helix-editor/helix/pull/10969))
- Improve VDHL highlights ([#10845](https://github.com/helix-editor/helix/pull/10845))
- Recognize `hsc` as Haskell ([#11074](https://github.com/helix-editor/helix/pull/11074))
- Fix heredoc and `$'<ansi_string>'` highlights in Bash ([#11118](https://github.com/helix-editor/helix/pull/11118))
- Add LSP configuration for `basedpyright` ([#11121](https://github.com/helix-editor/helix/pull/11121))
- Recognize `npmrc` and `.nmprc` files as INI ([#11131](https://github.com/helix-editor/helix/pull/11131))
- Recognize `~/.config/git/ignore` as git-ignore ([#11131](https://github.com/helix-editor/helix/pull/11131))
- Recognize `pdm.lock` and `uv.lock` as TOML ([#11131](https://github.com/helix-editor/helix/pull/11131))
- Recognize `.yml` as well as `.yaml` for Helm chart templates ([#11135](https://github.com/helix-editor/helix/pull/11135))
- Add regex injections for Bash ([#11112](https://github.com/helix-editor/helix/pull/11112))
- Update tree-sitter-todo ([#11097](https://github.com/helix-editor/helix/pull/11097))

Packaging:

- Make `Helix.appdata.xml` spec-compliant ([#10051](https://github.com/helix-editor/helix/pull/10051))
- Expose all flake outputs through flake-compat ([#10673](https://github.com/helix-editor/helix/pull/10673))
- Bump the MSRV to 1.74.0 ([#10714](https://github.com/helix-editor/helix/pull/10714))
- Improve FiSH completions ([#10853](https://github.com/helix-editor/helix/pull/10853))
- Improve ZSH completions ([#10853](https://github.com/helix-editor/helix/pull/10853))

# 24.03 (2024-03-30)

As always, a big thank you to all of the contributors! This release saw changes from 125 contributors.

Breaking changes:

- `suffix` file-types in the `file-types` key in language configuration have been removed ([#8006](https://github.com/helix-editor/helix/pull/8006))
- The `file-types` key in language configuration no longer matches full filenames without a glob pattern ([#8006](https://github.com/helix-editor/helix/pull/8006))

Features:

- Open URLs with the `goto_file` command ([#5820](https://github.com/helix-editor/helix/pull/5820))
- Support drawing a border around popups and menus ([#4313](https://github.com/helix-editor/helix/pull/4313), [#9508](https://github.com/helix-editor/helix/pull/9508))
- Track long lived diagnostic sources like Clippy or `rustc` ([#6447](https://github.com/helix-editor/helix/pull/6447), [#9280](https://github.com/helix-editor/helix/pull/9280))
    - This improves the handling of diagnostics from sources that only update the diagnostic positions on save.
- Add support for LSP `window/showDocument` requests ([#8865](https://github.com/helix-editor/helix/pull/8865))
- Refactor ad-hoc hooks to use a new generic event system ([#8021](https://github.com/helix-editor/helix/pull/8021), [#9668](https://github.com/helix-editor/helix/pull/9668), [#9660](https://github.com/helix-editor/helix/pull/9660))
    - This improves the behavior of autocompletions. For example navigating in insert mode no longer automatically triggers completions.
- Allow using globs in the language configuration `file-types` key ([#8006](https://github.com/helix-editor/helix/pull/8006))
- Allow specifying required roots for situational LSP activation ([#8696](https://github.com/helix-editor/helix/pull/8696))
- Extend selections using mouse clicks in select mode ([#5436](https://github.com/helix-editor/helix/pull/5436))
- Toggle block comments ([#4718](https://github.com/helix-editor/helix/pull/4718), [#9894](https://github.com/helix-editor/helix/pull/9894))
- Support LSP diagnostic tags ([#9780](https://github.com/helix-editor/helix/pull/9780))
- Add a `file-absolute-path` statusline element ([#4535](https://github.com/helix-editor/helix/pull/4535))
- Cross injection layers in tree-sitter motions (`A-p`/`A-o`/`A-i`/`A-n`) ([#5176](https://github.com/helix-editor/helix/pull/5176))
- Add a Amp-editor-like jumping command ([#8875](https://github.com/helix-editor/helix/pull/8875))

Commands:

- `:move` - move buffers with LSP support ([#8584](https://github.com/helix-editor/helix/pull/8584))
     - Also see [#8949](https://github.com/helix-editor/helix/pull/8949) which made path changes conform to the LSP spec and fixed the behavior of this command.
- `page_cursor_up`, `page_cursor_down`, `page_cursor_half_up`, `page_cursor_half_down` - commands for scrolling the cursor and page together ([#8015](https://github.com/helix-editor/helix/pull/8015))
- `:yank-diagnostic` - yank the diagnostic(s) under the primary cursor ([#9640](https://github.com/helix-editor/helix/pull/9640))
- `select_line_above` / `select_line_below` - extend or shrink a selection based on the direction and anchor ([#9080](https://github.com/helix-editor/helix/pull/9080))

Usability improvements:

- Make `roots` key of `[[language]]` entries in `languages.toml` configuration optional ([#8803](https://github.com/helix-editor/helix/pull/8803))
- Exit select mode in commands that modify the buffer ([#8689](https://github.com/helix-editor/helix/pull/8689))
- Use crossterm cursor when out of focus ([#6858](https://github.com/helix-editor/helix/pull/6858), [#8934](https://github.com/helix-editor/helix/pull/8934))
- Join empty lines with only one space in `join_selections` ([#8989](https://github.com/helix-editor/helix/pull/8989))
- Introduce a hybrid tree-sitter and contextual indentation heuristic ([#8307](https://github.com/helix-editor/helix/pull/8307))
- Allow configuring the indentation heuristic ([#8307](https://github.com/helix-editor/helix/pull/8307))
- Check for LSP rename support before showing rename prompt ([#9277](https://github.com/helix-editor/helix/pull/9277))
- Normalize `S-<lower-ascii>` keymaps to uppercase ascii ([#9213](https://github.com/helix-editor/helix/pull/9213))
- Add formatter status to `--health` output ([#7986](https://github.com/helix-editor/helix/pull/7986))
- Change path normalization strategy to not resolve symlinks ([#9330](https://github.com/helix-editor/helix/pull/9330))
- Select subtree within injections in `:tree-sitter-subtree` ([#9309](https://github.com/helix-editor/helix/pull/9309))
- Use tilde expansion and normalization for `$HELIX_RUNTIME` paths ([1bc7aac](https://github.com/helix-editor/helix/commit/1bc7aac))
- Improve failure message for LSP goto references ([#9382](https://github.com/helix-editor/helix/pull/9382))
- Use injection syntax trees for bracket matching ([5e0b3cc](https://github.com/helix-editor/helix/commit/5e0b3cc))
- Respect injections in `:tree-sitter-highlight-name` ([8b6565c](https://github.com/helix-editor/helix/commit/8b6565c))
- Respect injections in `move_parent_node_end` ([035b8ea](https://github.com/helix-editor/helix/commit/035b8ea))
- Use `gix` pipeline filter instead of manual CRLF implementation ([#9503](https://github.com/helix-editor/helix/pull/9503))
- Follow Neovim's truecolor detection ([#9577](https://github.com/helix-editor/helix/pull/9577))
- Reload language configuration with `:reload`, SIGHUP ([#9415](https://github.com/helix-editor/helix/pull/9415))
- Allow numbers as bindings ([#8471](https://github.com/helix-editor/helix/pull/8471), [#9887](https://github.com/helix-editor/helix/pull/9887))
- Respect undercurl config when terminfo is not available ([#9897](https://github.com/helix-editor/helix/pull/9897))
- Ignore `.pijul`, `.hg`, `.jj` in addition to `.git` in file pickers configured to show hidden files ([#9935](https://github.com/helix-editor/helix/pull/9935))
- Add completion for registers to `:clear-register` and `:yank-diagnostic` ([#9936](https://github.com/helix-editor/helix/pull/9936))
- Repeat last motion for goto next/prev diagnostic ([#9966](https://github.com/helix-editor/helix/pull/9966))
- Allow configuring a character to use when rendering narrow no-breaking space ([#9604](https://github.com/helix-editor/helix/pull/9604))
- Switch to a streaming regex engine (regex-cursor crate) to significantly speed up regex-based commands and features ([#9422](https://github.com/helix-editor/helix/pull/9422), [#9756](https://github.com/helix-editor/helix/pull/9756), [#9891](https://github.com/helix-editor/helix/pull/9891))

Fixes:

- Swap `*` and `+` registers ([#8703](https://github.com/helix-editor/helix/pull/8703), [#8708](https://github.com/helix-editor/helix/pull/8708))
- Use terminfo to reset terminal cursor style ([#8591](https://github.com/helix-editor/helix/pull/8591))
- Fix precedence of `@align` captures in indentat computation ([#8659](https://github.com/helix-editor/helix/pull/8659))
- Only render the preview if a Picker has a preview function ([#8667](https://github.com/helix-editor/helix/pull/8667))
- Fix the precedence of `ui.virtual.whitespace` ([#8750](https://github.com/helix-editor/helix/pull/8750), [#8879](https://github.com/helix-editor/helix/pull/8879))
- Fix crash in `:indent-style` ([#9087](https://github.com/helix-editor/helix/pull/9087))
- Fix `didSave` text inclusion when sync capability is a kind variant ([#9101](https://github.com/helix-editor/helix/pull/9101))
- Update the history of newly focused views ([#9271](https://github.com/helix-editor/helix/pull/9271))
- Initialize diagnostics when opening a document ([#8873](https://github.com/helix-editor/helix/pull/8873))
- Sync views when applying edits to unfocused views ([#9173](https://github.com/helix-editor/helix/pull/9173))
    - This fixes crashes that could occur from LSP workspace edits or `:write-all`.
- Treat non-numeric `+arg`s passed in the CLI args as filenames ([#9333](https://github.com/helix-editor/helix/pull/9333))
- Fix crash when using `mm` on an empty plaintext file ([2fb7e50](https://github.com/helix-editor/helix/commit/2fb7e50))
- Ignore empty tree-sitter nodes in match bracket ([445f7a2](https://github.com/helix-editor/helix/commit/445f7a2))
- Exit a language server if it sends a message with invalid JSON ([#9332](https://github.com/helix-editor/helix/pull/9332))
- Handle failures to enable bracketed paste ([#9353](https://github.com/helix-editor/helix/pull/9353))
- Gate all captures in a pattern behind `#is-not? local` predicates ([#9390](https://github.com/helix-editor/helix/pull/9390))
- Make path changes LSP spec conformant ([#8949](https://github.com/helix-editor/helix/pull/8949))
- Use range positions to determine `insert_newline` motion ([#9448](https://github.com/helix-editor/helix/pull/9448))
- Fix division by zero when prompt completion area is too small ([#9524](https://github.com/helix-editor/helix/pull/9524))
- Add changes to history in clipboard replacement typable commands ([#9625](https://github.com/helix-editor/helix/pull/9625))
- Fix a crash in DAP with an unspecified `line` in breakpoints ([#9632](https://github.com/helix-editor/helix/pull/9632))
- Fix space handling for filenames in bash completion ([#9702](https://github.com/helix-editor/helix/pull/9702), [#9708](https://github.com/helix-editor/helix/pull/9708))
- Key diagnostics off of paths instead of LSP URIs ([#7367](https://github.com/helix-editor/helix/pull/7367))
- Fix panic when using `join_selections_space` ([#9783](https://github.com/helix-editor/helix/pull/9783))
- Fix panic when using `surround_replace`, `surround_delete` ([#9796](https://github.com/helix-editor/helix/pull/9796))
- Fix panic in `surround_replace`, `surround_delete` with nested surrounds and multiple cursors ([#9815](https://github.com/helix-editor/helix/pull/9815))
- Fix panic in `select_textobject_around` ([#9832](https://github.com/helix-editor/helix/pull/9832))
- Don't stop reloading documents when reloading fails in `:reload-all` ([#9870](https://github.com/helix-editor/helix/pull/9870))
- Prevent `shell_keep_pipe` from stopping on nonzero exit status codes ([#9817](https://github.com/helix-editor/helix/pull/9817))

Themes:

- Add `gruber-dark` ([#8598](https://github.com/helix-editor/helix/pull/8598))
- Update `everblush` ([#8705](https://github.com/helix-editor/helix/pull/8705))
- Update `papercolor` ([#8718](https://github.com/helix-editor/helix/pull/8718), [#8827](https://github.com/helix-editor/helix/pull/8827))
- Add `polmandres` ([#8759](https://github.com/helix-editor/helix/pull/8759))
- Add `starlight` ([#8787](https://github.com/helix-editor/helix/pull/8787))
- Update `naysayer` ([#8838](https://github.com/helix-editor/helix/pull/8838))
- Add modus operandi themes ([#8728](https://github.com/helix-editor/helix/pull/8728), [#9912](https://github.com/helix-editor/helix/pull/9912))
- Update `rose_pine` ([#8946](https://github.com/helix-editor/helix/pull/8946))
- Update `darcula` ([#8738](https://github.com/helix-editor/helix/pull/8738), [#9002](https://github.com/helix-editor/helix/pull/9002), [#9449](https://github.com/helix-editor/helix/pull/9449), [#9588](https://github.com/helix-editor/helix/pull/9588))
- Add modus vivendi themes ([#8894](https://github.com/helix-editor/helix/pull/8894), [#9912](https://github.com/helix-editor/helix/pull/9912))
- Add `horizon-dark` ([#9008](https://github.com/helix-editor/helix/pull/9008), [#9493](https://github.com/helix-editor/helix/pull/9493))
- Update `noctis` ([#9123](https://github.com/helix-editor/helix/pull/9123))
- Update `nord` ([#9135](https://github.com/helix-editor/helix/pull/9135))
- Update monokai pro themes ([#9148](https://github.com/helix-editor/helix/pull/9148))
- Update tokyonight themes ([#9099](https://github.com/helix-editor/helix/pull/9099), [#9724](https://github.com/helix-editor/helix/pull/9724), [#9789](https://github.com/helix-editor/helix/pull/9789))
- Add `ttox` ([#8524](https://github.com/helix-editor/helix/pull/8524))
- Add `voxed` ([#9164](https://github.com/helix-editor/helix/pull/9164))
- Update `sonokai` ([#9370](https://github.com/helix-editor/helix/pull/9370), [#9376](https://github.com/helix-editor/helix/pull/9376), [#5379](https://github.com/helix-editor/helix/pull/5379))
- Update `onedark`, `onedarker` ([#9397](https://github.com/helix-editor/helix/pull/9397))
- Update `cyan_light` ([#9375](https://github.com/helix-editor/helix/pull/9375), [#9688](https://github.com/helix-editor/helix/pull/9688))
- Add `gruvbox_light_soft`, `gruvbox_light_hard` ([#9266](https://github.com/helix-editor/helix/pull/9266))
- Update GitHub themes ([#9487](https://github.com/helix-editor/helix/pull/9487))
- Add `term16_dark`, `term16_light` ([#9477](https://github.com/helix-editor/helix/pull/9477))
- Update Zed themes ([#9544](https://github.com/helix-editor/helix/pull/9544), [#9549](https://github.com/helix-editor/helix/pull/9549))
- Add `curzon` ([#9553](https://github.com/helix-editor/helix/pull/9553))
- Add `monokai_soda` ([#9651](https://github.com/helix-editor/helix/pull/9651))
- Update catppuccin themes ([#9859](https://github.com/helix-editor/helix/pull/9859))
- Update `rasmus` ([#9939](https://github.com/helix-editor/helix/pull/9939))
- Update `dark_plus` ([#9949](https://github.com/helix-editor/helix/pull/9949), [628dcd5](https://github.com/helix-editor/helix/commit/628dcd5))
- Update gruvbox themes ([#9960](https://github.com/helix-editor/helix/pull/9960))
- Add jump label theming to `dracula` ([#9973](https://github.com/helix-editor/helix/pull/9973))
- Add jump label theming to `horizon-dark` ([#9984](https://github.com/helix-editor/helix/pull/9984))
- Add jump label theming to catppuccin themes ([2178adf](https://github.com/helix-editor/helix/commit/2178adf), [#9983](https://github.com/helix-editor/helix/pull/9983))
- Add jump label theming to `onedark` themes ([da2dec1](https://github.com/helix-editor/helix/commit/da2dec1))
- Add jump label theming to rose-pine themes ([#9981](https://github.com/helix-editor/helix/pull/9981))
- Add jump label theming to Nord themes ([#10008](https://github.com/helix-editor/helix/pull/10008))
- Add jump label theming to Monokai themes ([#10009](https://github.com/helix-editor/helix/pull/10009))
- Add jump label theming to gruvbox themes ([#10012](https://github.com/helix-editor/helix/pull/10012))
- Add jump label theming to `kanagawa` ([#10030](https://github.com/helix-editor/helix/pull/10030))
- Update material themes ([#10043](https://github.com/helix-editor/helix/pull/10043))
- Add `jetbrains_dark` ([#9967](https://github.com/helix-editor/helix/pull/9967))

New languages:

- Typst ([#7474](https://github.com/helix-editor/helix/pull/7474))
- LPF ([#8536](https://github.com/helix-editor/helix/pull/8536))
- GN ([#6969](https://github.com/helix-editor/helix/pull/6969))
- DBML ([#8860](https://github.com/helix-editor/helix/pull/8860))
- log ([#8916](https://github.com/helix-editor/helix/pull/8916))
- Janet ([#9081](https://github.com/helix-editor/helix/pull/9081), [#9247](https://github.com/helix-editor/helix/pull/9247))
- Agda ([#8285](https://github.com/helix-editor/helix/pull/8285))
- Avro ([#9113](https://github.com/helix-editor/helix/pull/9113))
- Smali ([#9089](https://github.com/helix-editor/helix/pull/9089))
- HOCON ([#9203](https://github.com/helix-editor/helix/pull/9203))
- Tact ([#9512](https://github.com/helix-editor/helix/pull/9512))
- PKL ([#9515](https://github.com/helix-editor/helix/pull/9515))
- CEL ([#9296](https://github.com/helix-editor/helix/pull/9296))
- SpiceDB ([#9296](https://github.com/helix-editor/helix/pull/9296))
- Hoon ([#9190](https://github.com/helix-editor/helix/pull/9190))
- DockerCompose ([#9661](https://github.com/helix-editor/helix/pull/9661), [#9916](https://github.com/helix-editor/helix/pull/9916))
- Groovy ([#9350](https://github.com/helix-editor/helix/pull/9350), [#9681](https://github.com/helix-editor/helix/pull/9681), [#9677](https://github.com/helix-editor/helix/pull/9677))
- FIDL ([#9713](https://github.com/helix-editor/helix/pull/9713))
- Powershell ([#9827](https://github.com/helix-editor/helix/pull/9827))
- ld ([#9835](https://github.com/helix-editor/helix/pull/9835))
- Hyperland config ([#9899](https://github.com/helix-editor/helix/pull/9899))
- JSONC ([#9906](https://github.com/helix-editor/helix/pull/9906))
- PHP Blade ([#9513](https://github.com/helix-editor/helix/pull/9513))
- SuperCollider ([#9329](https://github.com/helix-editor/helix/pull/9329))
- Koka ([#8727](https://github.com/helix-editor/helix/pull/8727))
- PKGBUILD ([#9909](https://github.com/helix-editor/helix/pull/9909), [#9943](https://github.com/helix-editor/helix/pull/9943))
- Ada ([#9908](https://github.com/helix-editor/helix/pull/9908))
- Helm charts ([#9900](https://github.com/helix-editor/helix/pull/9900))
- Ember.js templates ([#9902](https://github.com/helix-editor/helix/pull/9902))
- Ohm ([#9991](https://github.com/helix-editor/helix/pull/9991))

Updated languages and queries:

- Add HTML injection queries for Rust ([#8603](https://github.com/helix-editor/helix/pull/8603))
- Switch to tree-sitter-ron for RON ([#8624](https://github.com/helix-editor/helix/pull/8624))
- Update and improve comment highlighting ([#8564](https://github.com/helix-editor/helix/pull/8564), [#9253](https://github.com/helix-editor/helix/pull/9253), [#9800](https://github.com/helix-editor/helix/pull/9800), [#10014](https://github.com/helix-editor/helix/pull/10014))
- Highlight type parameters in Rust ([#8660](https://github.com/helix-editor/helix/pull/8660))
- Change KDL tree-sitter parsers ([#8652](https://github.com/helix-editor/helix/pull/8652))
- Update tree-sitter-markdown ([#8721](https://github.com/helix-editor/helix/pull/8721), [#10039](https://github.com/helix-editor/helix/pull/10039))
- Update tree-sitter-purescript ([#8712](https://github.com/helix-editor/helix/pull/8712))
- Add type parameter highlighting to TypeScript, Go, Haskell, OCaml and Kotlin ([#8718](https://github.com/helix-editor/helix/pull/8718))
- Add indentation queries for Scheme and lisps using tree-sitter-scheme ([#8720](https://github.com/helix-editor/helix/pull/8720))
- Recognize `meson_options.txt` as Meson ([#8794](https://github.com/helix-editor/helix/pull/8794))
- Add language server configuration for Nushell ([#8878](https://github.com/helix-editor/helix/pull/8878))
- Recognize `musicxml` as XML ([#8935](https://github.com/helix-editor/helix/pull/8935))
- Update tree-sitter-rescript ([#8962](https://github.com/helix-editor/helix/pull/8962))
- Update tree-sitter-python ([#8976](https://github.com/helix-editor/helix/pull/8976))
- Recognize `.envrc.local` and `.envrc.private` as env ([#8988](https://github.com/helix-editor/helix/pull/8988))
- Update tree-sitter-gleam ([#9003](https://github.com/helix-editor/helix/pull/9003), [9ceeea5](https://github.com/helix-editor/helix/commit/9ceeea5))
- Update tree-sitter-d ([#9021](https://github.com/helix-editor/helix/pull/9021))
- Fix R-markdown language name for LSP detection ([#9012](https://github.com/helix-editor/helix/pull/9012))
- Add haskell-language-server LSP configuration ([#9111](https://github.com/helix-editor/helix/pull/9111))
- Recognize `glif` as XML ([#9130](https://github.com/helix-editor/helix/pull/9130))
- Recognize `.prettierrc` as JSON ([#9214](https://github.com/helix-editor/helix/pull/9214))
- Add auto-pairs configuration for scheme ([#9232](https://github.com/helix-editor/helix/pull/9232))
- Add textobject queries for Scala ([#9191](https://github.com/helix-editor/helix/pull/9191))
- Add textobject queries for Protobuf ([#9184](https://github.com/helix-editor/helix/pull/9184))
- Update tree-sitter-wren ([#8544](https://github.com/helix-editor/helix/pull/8544))
- Add `spago.yaml` as an LSP root for PureScript ([#9362](https://github.com/helix-editor/helix/pull/9362))
- Improve highlight and indent queries for Bash, Make and CSS ([#9393](https://github.com/helix-editor/helix/pull/9393))
- Update tree-sitter-scala ([#9348](https://github.com/helix-editor/helix/pull/9348), [#9340](https://github.com/helix-editor/helix/pull/9340), [#9475](https://github.com/helix-editor/helix/pull/9475))
- Recognize `.bash_history` as Bash ([#9401](https://github.com/helix-editor/helix/pull/9401))
- Recognize Helix ignore files as ignore ([#9447](https://github.com/helix-editor/helix/pull/9447))
- Inject SQL into Scala SQL strings ([#9428](https://github.com/helix-editor/helix/pull/9428))
- Update gdscript textobjects ([#9288](https://github.com/helix-editor/helix/pull/9288))
- Update Go queries ([#9510](https://github.com/helix-editor/helix/pull/9510), [#9525](https://github.com/helix-editor/helix/pull/9525))
- Update tree-sitter-nushell ([#9502](https://github.com/helix-editor/helix/pull/9502))
- Update tree-sitter-unison, add indent queries ([#9505](https://github.com/helix-editor/helix/pull/9505))
- Update tree-sitter-slint ([#9551](https://github.com/helix-editor/helix/pull/9551), [#9698](https://github.com/helix-editor/helix/pull/9698))
- Update tree-sitter-swift ([#9586](https://github.com/helix-editor/helix/pull/9586))
- Add `fish_indent` as formatter for fish ([78ed3ad](https://github.com/helix-editor/helix/commit/78ed3ad))
- Recognize `zon` as Zig ([#9582](https://github.com/helix-editor/helix/pull/9582))
- Add a formatter for Odin ([#9537](https://github.com/helix-editor/helix/pull/9537))
- Update tree-sitter-erlang ([#9627](https://github.com/helix-editor/helix/pull/9627), [fdcd461](https://github.com/helix-editor/helix/commit/fdcd461))
- Capture Rust fields as argument textobjects ([#9637](https://github.com/helix-editor/helix/pull/9637))
- Improve Dart textobjects ([#9644](https://github.com/helix-editor/helix/pull/9644))
- Recognize `tmux.conf` as a bash file-type ([#9653](https://github.com/helix-editor/helix/pull/9653))
- Add textobjects queries for Nix ([#9659](https://github.com/helix-editor/helix/pull/9659))
- Add textobjects queries for HCL ([#9658](https://github.com/helix-editor/helix/pull/9658))
- Recognize osm and osc extensions as XML ([#9697](https://github.com/helix-editor/helix/pull/9697))
- Update tree-sitter-sql ([#9634](https://github.com/helix-editor/helix/pull/9634))
- Recognize pde Processing files as Java ([#9741](https://github.com/helix-editor/helix/pull/9741))
- Update tree-sitter-lua ([#9727](https://github.com/helix-editor/helix/pull/9727))
- Switch tree-sitter-nim parsers ([#9722](https://github.com/helix-editor/helix/pull/9722))
- Recognize GTK builder ui files as XML ([#9754](https://github.com/helix-editor/helix/pull/9754))
- Add configuration for markdown-oxide language server ([#9758](https://github.com/helix-editor/helix/pull/9758))
- Add a shebang for elvish ([#9779](https://github.com/helix-editor/helix/pull/9779))
- Fix precedence of Svelte TypeScript injection ([#9777](https://github.com/helix-editor/helix/pull/9777))
- Recognize common Dockerfile file types ([#9772](https://github.com/helix-editor/helix/pull/9772))
- Recognize NUON files as Nu ([#9839](https://github.com/helix-editor/helix/pull/9839))
- Add textobjects for Java native functions and constructors ([#9806](https://github.com/helix-editor/helix/pull/9806))
- Fix "braket" typo in JSX highlights ([#9910](https://github.com/helix-editor/helix/pull/9910))
- Update tree-sitter-hurl ([#9775](https://github.com/helix-editor/helix/pull/9775))
- Add textobjects queries for Vala ([#8541](https://github.com/helix-editor/helix/pull/8541))
- Update tree-sitter-git-config ([9610254](https://github.com/helix-editor/helix/commit/9610254))
- Recognize 'mmd' as Mermaid ([459eb9a](https://github.com/helix-editor/helix/commit/459eb9a))
- Highlight Rust extern crate aliases ([c099dde](https://github.com/helix-editor/helix/commit/c099dde))
- Improve parameter highlighting in C++ ([f5d95de](https://github.com/helix-editor/helix/commit/f5d95de))
- Recognize 'rclone.conf' as INI ([#9959](https://github.com/helix-editor/helix/pull/9959))
- Add injections for GraphQL and ERB in Ruby heredocs ([#10036](https://github.com/helix-editor/helix/pull/10036))
- Add `main.odin` to Odin LSP roots ([#9968](https://github.com/helix-editor/helix/pull/9968))

Packaging:

- Allow user overlays in Nix grammars build ([#8749](https://github.com/helix-editor/helix/pull/8749))
- Set Cargo feature resolver to v2 ([#8917](https://github.com/helix-editor/helix/pull/8917))
- Use workspace inheritance for common Cargo metadata ([#8925](https://github.com/helix-editor/helix/pull/8925))
- Remove sourcehut-based tree-sitter grammars from default build ([#9316](https://github.com/helix-editor/helix/pull/9316), [#9326](https://github.com/helix-editor/helix/pull/9326))
- Add icon to Windows executable ([#9104](https://github.com/helix-editor/helix/pull/9104))

# 23.10 (2023-10-24)

A big shout out to all the contributors! We had 118 contributors in this release.

Breaking changes:

- Support multiple language servers per language ([#2507](https://github.com/helix-editor/helix/pull/2507))
    - This is a breaking change to language configuration

Features:

- Support multiple language servers per language ([#2507](https://github.com/helix-editor/helix/pull/2507), [#7082](https://github.com/helix-editor/helix/pull/7082), [#7286](https://github.com/helix-editor/helix/pull/7286), [#8374](https://github.com/helix-editor/helix/pull/8374))
- Add a statusline element for the selected register ([#7222](https://github.com/helix-editor/helix/pull/7222))
- Add `%`, `#`, `.`, `*` and `+` special registers ([#6985](https://github.com/helix-editor/helix/pull/6985))
- Add initial support for LSP DidChangeWatchedFiles notifications ([#7665](https://github.com/helix-editor/helix/pull/7665))
- Search buffer contents in `global_search` ([#5652](https://github.com/helix-editor/helix/pull/5652))
- Add a "smart tab" command that intelligently jumps the cursor on tab ([#4443](https://github.com/helix-editor/helix/pull/4443))
- Add a statusline element for whether a file is read-only ([#7222](https://github.com/helix-editor/helix/pull/7222), [#7875](https://github.com/helix-editor/helix/pull/7875))
- Syntax highlight regex prompts ([#7738](https://github.com/helix-editor/helix/pull/7738))
- Allow defining alignment in indent queries ([#5355](https://github.com/helix-editor/helix/pull/5355))
- Show visual feedback in `surround_replace` ([#7588](https://github.com/helix-editor/helix/pull/7588))
- Switch to Nucleo for fuzzy matching ([#7814](https://github.com/helix-editor/helix/pull/7814), [#8148](https://github.com/helix-editor/helix/pull/8148), [#8192](https://github.com/helix-editor/helix/pull/8192), [#8194](https://github.com/helix-editor/helix/pull/8194))
- Insert a trailing newline on write ([#8157](https://github.com/helix-editor/helix/pull/8157))
- Add a `-w`/`--working-dir` CLI flag for specifying a working directory on startup ([#8223](https://github.com/helix-editor/helix/pull/8223), [#8498](https://github.com/helix-editor/helix/pull/8498), [#8520](https://github.com/helix-editor/helix/pull/8520))
- Accept a `+N` CLI argument to set the first file's line number ([#8521](https://github.com/helix-editor/helix/pull/8521))
- Accept Helix-specific ignore files in `.helix/ignore` and `~/.config/helix/ignore` ([#8099](https://github.com/helix-editor/helix/pull/8099))

Commands:

- `merge_selections` (`A-minus`) - merge all selections into one selection that covers all ranges ([#7053](https://github.com/helix-editor/helix/pull/7053))
- `move_prev_long_word_end` and `extend_prev_long_word_end` - move/extend to the end of the previous WORD ([#6905](https://github.com/helix-editor/helix/pull/6905))
- `reverse_selection_contents` - swaps the values of each selection so they are reversed ([#7329](https://github.com/helix-editor/helix/pull/7329))
- Add `:rl` and `:rla` aliases for `:reload` and `:reload-all` ([#7158](https://github.com/helix-editor/helix/pull/7158))
- `yank_joined` - join the selections and yank to the selected register ([#7195](https://github.com/helix-editor/helix/pull/7195))
- `:write-all!` (`:wa!`) - forcibly write all buffers to disk and create any necessary subdirectories ([#7577](https://github.com/helix-editor/helix/pull/7577))
- `:redraw` - clear re-render the UI ([#6949](https://github.com/helix-editor/helix/pull/6949))
- `:tree-sitter-highlight-name` - show the theme scope name of the highlight under the cursor ([#8170](https://github.com/helix-editor/helix/pull/8170))

Usability improvements:

- Allow cycling option values at runtime ([#4411](https://github.com/helix-editor/helix/pull/4411), [#7240](https://github.com/helix-editor/helix/pull/7240), [#7877](https://github.com/helix-editor/helix/pull/7877))
- Exit gracefully on termination signals ([#7236](https://github.com/helix-editor/helix/pull/7236))
- Add plaintext matching fallback to tree-sitter pair matching ([#4288](https://github.com/helix-editor/helix/pull/4288))
- Persist register selection in pending keymaps ([0e08349](https://github.com/helix-editor/helix/commit/0e08349))
- Propagate the count and register to command palette commands ([b394997](https://github.com/helix-editor/helix/commit/b394997))
- Auto indent on `insert_at_line_start` ([#5837](https://github.com/helix-editor/helix/pull/5837))
- Add a config option to control whether LSP completions are automatically inserted on preview ([#7189](https://github.com/helix-editor/helix/pull/7189))
- Add a config option for default line endings ([#5621](https://github.com/helix-editor/helix/pull/5621), [#7357](https://github.com/helix-editor/helix/pull/7357))
- Allow ANSI colors in themes ([#5119](https://github.com/helix-editor/helix/pull/5119))
- Match pairs that don't form a standalone tree-sitter node ([#7242](https://github.com/helix-editor/helix/pull/7242))
- Allow indent sizes of up to 16 columns ([#7429](https://github.com/helix-editor/helix/pull/7429))
- Improve performance of mapping positions through changes ([#7408](https://github.com/helix-editor/helix/pull/7408), [8d39a81](https://github.com/helix-editor/helix/commit/8d39a81), [#7471](https://github.com/helix-editor/helix/pull/7471))
- Mark buffers created from stdin as modified ([#7431](https://github.com/helix-editor/helix/pull/7431))
- Forcibly shut down uninitialized language servers ([#7449](https://github.com/helix-editor/helix/pull/7449))
- Add filename completer for shell prompts ([#7569](https://github.com/helix-editor/helix/pull/7569))
- Allow binding F13-F24 ([#7672](https://github.com/helix-editor/helix/pull/7672))
- Resolve LSP code actions ([#7677](https://github.com/helix-editor/helix/pull/7677), [#8421](https://github.com/helix-editor/helix/pull/8421))
- Save an undo checkpoint before accepting completions ([#7747](https://github.com/helix-editor/helix/pull/7747))
- Include gitignored files in debugger completions ([#7936](https://github.com/helix-editor/helix/pull/7936))
- Make editor remember the last search register ([#5244](https://github.com/helix-editor/helix/pull/5244))
- Open directories with `goto_file` ([#7909](https://github.com/helix-editor/helix/pull/7909))
- Use relative path to open buffer in `goto_file` (`gf`) ([#7965](https://github.com/helix-editor/helix/pull/7965))
- Support `default` color in themes ([#8083](https://github.com/helix-editor/helix/pull/8083), [#8114](https://github.com/helix-editor/helix/pull/8114))
- Toggle between relative and absolute line numbers when the terminal loses focus ([#7955](https://github.com/helix-editor/helix/pull/7955))
- Lower default idle-timeout to 250ms ([060e73a](https://github.com/helix-editor/helix/commit/060e73a))
- Allow theming diff gutters separately from other diff colors ([#8343](https://github.com/helix-editor/helix/pull/8343))
- Style bold/italic/strikethrough in markdown doc popups ([#8385](https://github.com/helix-editor/helix/pull/8385))
- Maintain the cursor position and view when splitting with `:hsplit`/`:vsplit` ([#8109](https://github.com/helix-editor/helix/pull/8109))
- Accept `-` in macros outside of `<`/`>` ([#8475](https://github.com/helix-editor/helix/pull/8475))
- Show all language servers for each language in `--health` ([#7315](https://github.com/helix-editor/helix/pull/7315))
- Don't break on hyphens in `:reflow` ([#8569](https://github.com/helix-editor/helix/pull/8569))

Fixes:

- Update diagnostics correctly on language server exit ([#7111](https://github.com/helix-editor/helix/pull/7111))
- Fix off-by-one in `select_references_to_symbol_under_cursor` ([#7132](https://github.com/helix-editor/helix/pull/7132))
- Extend selection with repeat-last-motion only if the original motion extended the selection ([#7159](https://github.com/helix-editor/helix/pull/7159))
- Fix undefined behavior in the diff gutter ([#7227](https://github.com/helix-editor/helix/pull/7227))
- Check that tab width is non-zero ([#7178](https://github.com/helix-editor/helix/pull/7178))
- Fix styles being overwritten in table rows with multiple cells ([#7281](https://github.com/helix-editor/helix/pull/7281))
- Add file for `--log` CLI arg in help text ([#7307](https://github.com/helix-editor/helix/pull/7307))
- Fix underflow when repeating a completion that has a negative shift position ([#7322](https://github.com/helix-editor/helix/pull/7322))
- Prefer longer matches in `select_next_sibling` and `select_prev_sibling` ([#7332](https://github.com/helix-editor/helix/pull/7332))
- Preview scratch buffers in the jumplist picker ([#7331](https://github.com/helix-editor/helix/pull/7331))
- Fix chunking by bytes in tree-sitter parsing ([#7417](https://github.com/helix-editor/helix/pull/7417))
- Discard LSP publishDiagnostic from uninitialized servers ([#7467](https://github.com/helix-editor/helix/pull/7467))
- Use negotiated position encoding for LSP workspace edits ([#7469](https://github.com/helix-editor/helix/pull/7469))
- Fix error message for unknown gutter types in config ([#7534](https://github.com/helix-editor/helix/pull/7534))
- Fix `:log-open` when `--log` CLI arg is specified ([#7573](https://github.com/helix-editor/helix/pull/7573), [#7585](https://github.com/helix-editor/helix/pull/7585))
- Fix debouncing of LSP messages to fix the last message sticking around ([#7538](https://github.com/helix-editor/helix/pull/7538), [#8023](https://github.com/helix-editor/helix/pull/8023))
- Fix crash when the current working directory is deleted ([#7185](https://github.com/helix-editor/helix/pull/7185))
- Fix piping to Helix on macOS ([#5468](https://github.com/helix-editor/helix/pull/5468))
- Fix crash when parsing overlapping injections ([#7621](https://github.com/helix-editor/helix/pull/7621))
- Clear the statusline when the prompt is visible ([#7646](https://github.com/helix-editor/helix/pull/7646))
- Fix range formatting error message typo ([#7823](https://github.com/helix-editor/helix/pull/7823))
- Skip rendering gutters when gutter width exceeds view width ([#7821](https://github.com/helix-editor/helix/pull/7821))
- Center the picker preview using visual lines ([#7837](https://github.com/helix-editor/helix/pull/7837))
- Align view correctly for background buffers opened with `A-ret` ([#7691](https://github.com/helix-editor/helix/pull/7691))
- Fix cursor resetting to block when quitting via a keybind ([#7931](https://github.com/helix-editor/helix/pull/7931))
- Remove path completions for the `:new` command ([#8010](https://github.com/helix-editor/helix/pull/8010))
- Use binary path resolved by `which` for formatter commands ([#8064](https://github.com/helix-editor/helix/pull/8064))
- Handle crossterm's `hidden` modifier ([#8120](https://github.com/helix-editor/helix/pull/8120))
- Clear completion when switching between windows with the mouse ([#8118](https://github.com/helix-editor/helix/pull/8118))
- Eagerly remove the last picker (`<space>'`) when the picker has many items ([#8127](https://github.com/helix-editor/helix/pull/8127))
- Fix find commands for buffers with non-LF line-endings ([#8111](https://github.com/helix-editor/helix/pull/8111))
- Detect the tmux clipboard provider on macOS ([#8182](https://github.com/helix-editor/helix/pull/8182))
- Fix syntax highlighting in dynamic picker preview pane ([#8206](https://github.com/helix-editor/helix/pull/8206))
- Recognize HTML code tags with attributes as code in markdown previews ([#8397](https://github.com/helix-editor/helix/pull/8397))
- Fix multicursor snippet placeholder directions ([#8423](https://github.com/helix-editor/helix/pull/8423))
- Only show diagnostic highlights when diagnostics are enabled for a language server ([#8551](https://github.com/helix-editor/helix/pull/8551))

Themes:

- Improve the selection color in `ferra` ([#7138](https://github.com/helix-editor/helix/pull/7138))
- Add `variable.other.member` theming to `spacebones_light` ([#7125](https://github.com/helix-editor/helix/pull/7125))
- Update `autumn` and theme the soft-wrap indicator ([#7229](https://github.com/helix-editor/helix/pull/7229))
- Add `gruvbox_dark_soft` ([#7139](https://github.com/helix-editor/helix/pull/7139))
- Add `merionette` ([#7186](https://github.com/helix-editor/helix/pull/7186))
- Add `zed_onedark` and `zed_onelight` ([#7250](https://github.com/helix-editor/helix/pull/7250))
- Use light-gray for `onedarker` inlay hint theming ([#7433](https://github.com/helix-editor/helix/pull/7433))
- Update the Nord theme to follow the style guidelines ([#7490](https://github.com/helix-editor/helix/pull/7490))
- Tune `dark_plus` inlay hint colors ([#7611](https://github.com/helix-editor/helix/pull/7611))
- Add `naysayer` ([#7570](https://github.com/helix-editor/helix/pull/7570))
- Add `kaolin-dark`, `kaolin-light` and `kaolin-valley-dark` ([#7151](https://github.com/helix-editor/helix/pull/7151))
- Fix selection highlighting in gruvbox variants ([#7717](https://github.com/helix-editor/helix/pull/7717))
- Add soft-wrap indicator to `gruvbox` ([#7736](https://github.com/helix-editor/helix/pull/7736))
- Add missing palette definitions in `everforest_dark` ([#7739](https://github.com/helix-editor/helix/pull/7739))
- Increase diagnostics clarity in `pop-dark` ([#7702](https://github.com/helix-editor/helix/pull/7702))
- Add `vim_dark_high_contrast` ([#7785](https://github.com/helix-editor/helix/pull/7785))
- Add `new_moon` ([#7834](https://github.com/helix-editor/helix/pull/7834))
- Add `yellowed` ([#7849](https://github.com/helix-editor/helix/pull/7849))
- Improve comment readability for `autumn` ([#7939](https://github.com/helix-editor/helix/pull/7939))
- Distinguish active bufferline buffer in `monokai` ([#7983](https://github.com/helix-editor/helix/pull/7983))
- Update ruler colors in `nord` ([#7995](https://github.com/helix-editor/helix/pull/7995))
- Update Catppuccin themes ([#8102](https://github.com/helix-editor/helix/pull/8102))
- Add text focus scope and diagnostics undercurls for `nord` ([#8165](https://github.com/helix-editor/helix/pull/8165))
- Add material theme collection ([#8211](https://github.com/helix-editor/helix/pull/8211))
- Improve indent line color in `dracula` ([#8266](https://github.com/helix-editor/helix/pull/8266))
- Clean up and refactor `papercolor` to use inheritance ([#8276](https://github.com/helix-editor/helix/pull/8276))
- Fix `zenburn` inlay hint color ([#8278](https://github.com/helix-editor/helix/pull/8278)a)
- Fix picker crash when previewing an invalid range ([e9d0bd7](https://github.com/helix-editor/helix/commit/e9d0bd7))
- Correctly center items in the picker preview ([13d4463](https://github.com/helix-editor/helix/commit/13d4463))
- Add `cyan_light` ([#8293](https://github.com/helix-editor/helix/pull/8293), [#8587](https://github.com/helix-editor/helix/pull/8587))
- Theme HTML tags in `onedark` ([#8409](https://github.com/helix-editor/helix/pull/8409))
- Refine `darcula` and `darcula-solid` themes ([#8412](https://github.com/helix-editor/helix/pull/8412))
- Improve `nord` highlights ([#8414](https://github.com/helix-editor/helix/pull/8414))
- Add `nord-night` ([#8549](https://github.com/helix-editor/helix/pull/8549))

New languages:

- Blueprint ([#7213](https://github.com/helix-editor/helix/pull/7213), [#8161](https://github.com/helix-editor/helix/pull/8161))
- Forth ([#7256](https://github.com/helix-editor/helix/pull/7256), [#7334](https://github.com/helix-editor/helix/pull/7334))
- t32 ([#7140](https://github.com/helix-editor/helix/pull/7140), [#7811](https://github.com/helix-editor/helix/pull/7811))
- WebC ([#7290](https://github.com/helix-editor/helix/pull/7290))
- Persistent DSL for Haskell ([#7261](https://github.com/helix-editor/helix/pull/7261))
- F# ([#7619](https://github.com/helix-editor/helix/pull/7619), [#8024](https://github.com/helix-editor/helix/pull/8024))
- Wren ([#7765](https://github.com/helix-editor/helix/pull/7765), [#7819](https://github.com/helix-editor/helix/pull/7819))
- Unison ([#7724](https://github.com/helix-editor/helix/pull/7724))
- Todo.txt ([#7835](https://github.com/helix-editor/helix/pull/7835))
- Jinja and Handlebars ([#7233](https://github.com/helix-editor/helix/pull/7233))
- Pod ([#7907](https://github.com/helix-editor/helix/pull/7907))
- Strace ([#7928](https://github.com/helix-editor/helix/pull/7928))
- Gemini ([#8070](https://github.com/helix-editor/helix/pull/8070))
- GNU Assembler (GAS) ([#8291](https://github.com/helix-editor/helix/pull/8291))
- JSON5 ([#8473](https://github.com/helix-editor/helix/pull/8473))
- TEMPL ([#8540](https://github.com/helix-editor/helix/pull/8540))

Updated languages and queries:

- Add one to the ruler numbers for git-commit ([#7072](https://github.com/helix-editor/helix/pull/7072))
- Recognize XAML files as XML ([#7083](https://github.com/helix-editor/helix/pull/7083))
- Recognize `Cargo.lock` as TOML ([#7095](https://github.com/helix-editor/helix/pull/7095))
- Use Rust grammar for Cairo ([c6d1430](https://github.com/helix-editor/helix/commit/c6d1430))
- Update tree-sitter-nickel ([#7059](https://github.com/helix-editor/helix/pull/7059), [#7551](https://github.com/helix-editor/helix/pull/7551))
- Tune auto-pair characters for Nickel ([#7059](https://github.com/helix-editor/helix/pull/7059))
- Recognize `Vagrantfile` as Ruby ([#7112](https://github.com/helix-editor/helix/pull/7112))
- Recognize hidden justfiles as Just ([#7088](https://github.com/helix-editor/helix/pull/7088))
- Update Java and TypeScript highlight queries ([#7145](https://github.com/helix-editor/helix/pull/7145))
- Recognize `.zimrc` as Bash ([#7146](https://github.com/helix-editor/helix/pull/7146))
- Recognize `.gir` as XML ([#7152](https://github.com/helix-editor/helix/pull/7152))
- Update tree-sitter-scala ([#7147](https://github.com/helix-editor/helix/pull/7147))
- Recognize make file-type as Makefile ([#7212](https://github.com/helix-editor/helix/pull/7212))
- Update tree-sitter-verilog ([#7262](https://github.com/helix-editor/helix/pull/7262))
- Update tree-sitter-cpp ([#7285](https://github.com/helix-editor/helix/pull/7285))
- Support core mode for delve debugger ([#7300](https://github.com/helix-editor/helix/pull/7300))
- Add Fortran comment injections ([#7305](https://github.com/helix-editor/helix/pull/7305))
- Switch Vue language server to `vue-language-server` ([#7312](https://github.com/helix-editor/helix/pull/7312))
- Update tree-sitter-sql ([#7387](https://github.com/helix-editor/helix/pull/7387), [#8464](https://github.com/helix-editor/helix/pull/8464))
- Replace the MATLAB tree-sitter grammar ([#7388](https://github.com/helix-editor/helix/pull/7388), [#7442](https://github.com/helix-editor/helix/pull/7442), [#7491](https://github.com/helix-editor/helix/pull/7491), [#7493](https://github.com/helix-editor/helix/pull/7493), [#7511](https://github.com/helix-editor/helix/pull/7511), [#7532](https://github.com/helix-editor/helix/pull/7532), [#8040](https://github.com/helix-editor/helix/pull/8040))
- Highlight TOML table headers ([#7441](https://github.com/helix-editor/helix/pull/7441))
- Recognize `cppm` file-type as C++ ([#7492](https://github.com/helix-editor/helix/pull/7492))
- Refactor ecma language queries into private and public queries ([#7207](https://github.com/helix-editor/helix/pull/7207))
- Update tree-sitter-dart ([#7576](https://github.com/helix-editor/helix/pull/7576))
- Add shebang for nushell files ([#7606](https://github.com/helix-editor/helix/pull/7606))
- Recognize systemd files as INI ([#7592](https://github.com/helix-editor/helix/pull/7592))
- Update TypeScript, TSX and Svelte grammars ([#6874](https://github.com/helix-editor/helix/pull/6874))
- Enable inlay hints in the Svelte language server ([#7622](https://github.com/helix-editor/helix/pull/7622))
- Recognize `Brewfile`s as Ruby ([#7629](https://github.com/helix-editor/helix/pull/7629))
- Add more file-types for R ([#7633](https://github.com/helix-editor/helix/pull/7633))
- Switch tree-sitter-perl to official upstream parser ([#7644](https://github.com/helix-editor/helix/pull/7644), [#7947](https://github.com/helix-editor/helix/pull/7947))
- Fix predicate typo in comment highlights ([#7732](https://github.com/helix-editor/helix/pull/7732))
- Update tree-sitter-prql ([#7771](https://github.com/helix-editor/helix/pull/7771))
- Recognize `.gitf` as JSON ([#7781](https://github.com/helix-editor/helix/pull/7781))
- Switch V language server to `v-analyzer` ([#7760](https://github.com/helix-editor/helix/pull/7760))
- Add protobuf language servers ([#7796](https://github.com/helix-editor/helix/pull/7796))
- Update tree-sitter-zig ([#7803](https://github.com/helix-editor/helix/pull/7803))
- Update tree-sitter-hare ([#7784](https://github.com/helix-editor/helix/pull/7784))
- Add Java indent queries ([#7844](https://github.com/helix-editor/helix/pull/7844))
- Update tree-sitter-scheme ([979933b](https://github.com/helix-editor/helix/commit/979933b))
- Recognize `scm` as Scheme instead of TSQ ([5707151](https://github.com/helix-editor/helix/commit/5707151))
- Update tree-sitter-git-commit ([#7831](https://github.com/helix-editor/helix/pull/7831))
- Update JavaScript, TypeScript and TSX grammars ([#7852](https://github.com/helix-editor/helix/pull/7852))
- Update tree-sitter-nu ([#7873](https://github.com/helix-editor/helix/pull/7873))
- Fix YAML indentation ([#6768](https://github.com/helix-editor/helix/pull/6768))
- Add `csharp-ls`, Pyright, Pylyzer and add roots for Python ([#7897](https://github.com/helix-editor/helix/pull/7897), [#8032](https://github.com/helix-editor/helix/pull/8032))
- Update tree-sitter-slint ([#7893](https://github.com/helix-editor/helix/pull/7893))
- Recognize more ZSH file-types as Bash ([#7930](https://github.com/helix-editor/helix/pull/7930))
- Recognize `star` extension as Starlark ([#7922](https://github.com/helix-editor/helix/pull/7922))
- Fix inline HTML tag highlighting in markdown ([#7960](https://github.com/helix-editor/helix/pull/7960))
- Update tree-sitter-robot ([#7970](https://github.com/helix-editor/helix/pull/7970))
- Highlight Dart 3 `sealed` and `base` keywords ([#7974](https://github.com/helix-editor/helix/pull/7974))
- Add configuration for `ltex-ls` to the default `languages.toml` ([#7838](https://github.com/helix-editor/helix/pull/7838))
- Update tree-sitter-strace ([#8087](https://github.com/helix-editor/helix/pull/8087))
- Update tree-sitter-gleam, enable auto-format ([#8085](https://github.com/helix-editor/helix/pull/8085))
- Update tree-sitter-esdl ([#8222](https://github.com/helix-editor/helix/pull/8222))
- Expand ignore file-types ([#8220](https://github.com/helix-editor/helix/pull/8220))
- Recognize feed related formats as XML ([#8232](https://github.com/helix-editor/helix/pull/8232))
- Improve YAML injections ([#8217](https://github.com/helix-editor/helix/pull/8217))
- Add shebangs for TypeScript, Julia, Java and OCaml ([95e994a](https://github.com/helix-editor/helix/commit/95e994a))
- Highlight abbreviations in Scheme ([ef23847](https://github.com/helix-editor/helix/commit/ef23847))
- Remove backtic auto-pair in OCaml ([#8260](https://github.com/helix-editor/helix/pull/8260))
- Recognize `flake.lock` as JSON ([#8304](https://github.com/helix-editor/helix/pull/8304))
- Add Python test script injection for Nix ([b4494e1](https://github.com/helix-editor/helix/commit/b4494e1))
- Fix Nix comment injection precedence ([37e48f4](https://github.com/helix-editor/helix/commit/37e48f4))
- Recognize editorconfig files as INI ([#8308](https://github.com/helix-editor/helix/pull/8308))
- Recognize `.babelrc` as JSON ([#8309](https://github.com/helix-editor/helix/pull/8309))
- Switch Purescript to its own tree-sitter parser ([#8306](https://github.com/helix-editor/helix/pull/8306), [#8338](https://github.com/helix-editor/helix/pull/8338), [#8527](https://github.com/helix-editor/helix/pull/8527))
- Update Unison highlights ([#8315](https://github.com/helix-editor/helix/pull/8315))
- Recognize `.webmanifest` as JSON ([#8342](https://github.com/helix-editor/helix/pull/8342))
- Recognize polkit policy files as XML ([#8369](https://github.com/helix-editor/helix/pull/8369))
- Recognize polkit rules files as JavaScript ([#8370](https://github.com/helix-editor/helix/pull/8370))
- Update Go highlight queries ([#8399](https://github.com/helix-editor/helix/pull/8399))
- Add shebangs for Makefiles ([#8410](https://github.com/helix-editor/helix/pull/8410))
- Add file-type associations from VSCode ([#8388](https://github.com/helix-editor/helix/pull/8388))
- Add validation to JSON/CSS language server configs ([#8433](https://github.com/helix-editor/helix/pull/8433))
- Add a configuration for the tailwind language server ([#8442](https://github.com/helix-editor/helix/pull/8442))
- Add a configuration for the ansible language server ([#7973](https://github.com/helix-editor/helix/pull/7973))
- Add a configuration for the GraphQL language server ([#8492](https://github.com/helix-editor/helix/pull/8492))
- Indent while statements in Bash ([#8528](https://github.com/helix-editor/helix/pull/8528))
- Update tree-sitter-haskell and queries ([#8558](https://github.com/helix-editor/helix/pull/8558))

Packaging:

- Add an overlay to the Nix flake ([#7078](https://github.com/helix-editor/helix/pull/7078))
- Check for `git` before fetching or building grammars ([#7320](https://github.com/helix-editor/helix/pull/7320))
- Refactor Nix flake to use Crane ([#7763](https://github.com/helix-editor/helix/pull/7763))
- Remove the aarch64 appimage from the release CI ([#7832](https://github.com/helix-editor/helix/pull/7832))
- Add desktop and icon files to Nix flake output ([#7979](https://github.com/helix-editor/helix/pull/7979))
- Build flake packages with the latest stable Rust ([#8133](https://github.com/helix-editor/helix/pull/8133))

# 23.05 (2023-05-18)

23.05 is a smaller release focusing on fixes. There were 88 contributors in this release. Thank you all!

Features:

- Add a config option to exclude declaration from LSP references request ([#6886](https://github.com/helix-editor/helix/pull/6886))
- Enable injecting languages based on their file extension and shebang ([#3970](https://github.com/helix-editor/helix/pull/3970))
- Sort the buffer picker by most recent access ([#2980](https://github.com/helix-editor/helix/pull/2980))
- Perform syntax highlighting in the picker asynchronously ([#7028](https://github.com/helix-editor/helix/pull/7028))

Commands:

- `:update` is now aliased as `:u` ([#6835](https://github.com/helix-editor/helix/pull/6835))
- Add `extend_to_first_nonwhitespace` which acts the same as `goto_first_nonwhitespace` but always extends ([#6837](https://github.com/helix-editor/helix/pull/6837))
- Add `:clear-register` for clearing the given register or all registers ([#5695](https://github.com/helix-editor/helix/pull/5695))
- Add `:write-buffer-close` and `:write-buffer-close!` ([#6947](https://github.com/helix-editor/helix/pull/6947))

Fixes:

- Normalize LSP workspace paths ([#6517](https://github.com/helix-editor/helix/pull/6517))
- Robustly handle invalid LSP ranges ([#6512](https://github.com/helix-editor/helix/pull/6512))
- Fix line number display for LSP goto pickers ([#6559](https://github.com/helix-editor/helix/pull/6559))
- Fix toggling of `soft-wrap.enable` option ([#6656](https://github.com/helix-editor/helix/pull/6656), [58e457a](https://github.com/helix-editor/helix/commit/58e457a), [#6742](https://github.com/helix-editor/helix/pull/6742))
- Handle `workspace/configuration` requests from stopped language servers ([#6693](https://github.com/helix-editor/helix/pull/6693))
- Fix possible crash from opening the jumplist picker ([#6672](https://github.com/helix-editor/helix/pull/6672))
- Fix theme preview returning to current theme on line and word deletions ([#6694](https://github.com/helix-editor/helix/pull/6694))
- Re-run crate build scripts on changes to revision and grammar repositories ([#6743](https://github.com/helix-editor/helix/pull/6743))
- Fix crash on opening from suspended state ([#6764](https://github.com/helix-editor/helix/pull/6764))
- Fix unwrap bug in DAP ([#6786](https://github.com/helix-editor/helix/pull/6786))
- Always build tree-sitter parsers with C++14 and C11 ([#6792](https://github.com/helix-editor/helix/pull/6792), [#6834](https://github.com/helix-editor/helix/pull/6834), [#6845](https://github.com/helix-editor/helix/pull/6845))
- Exit with a non-zero statuscode when tree-sitter parser builds fail ([#6795](https://github.com/helix-editor/helix/pull/6795))
- Flip symbol range in LSP goto commands ([#6794](https://github.com/helix-editor/helix/pull/6794))
- Fix runtime toggling of the `mouse` option ([#6675](https://github.com/helix-editor/helix/pull/6675))
- Fix panic in inlay hint computation when view anchor is out of bounds ([#6883](https://github.com/helix-editor/helix/pull/6883))
- Significantly improve performance of git discovery on slow file systems ([#6890](https://github.com/helix-editor/helix/pull/6890))
- Downgrade gix log level to info ([#6915](https://github.com/helix-editor/helix/pull/6915))
- Conserve BOM and properly support saving UTF16 files ([#6497](https://github.com/helix-editor/helix/pull/6497))
- Correctly handle completion re-request ([#6594](https://github.com/helix-editor/helix/pull/6594))
- Fix offset encoding in LSP `didChange` notifications ([#6921](https://github.com/helix-editor/helix/pull/6921))
- Change `gix` logging level to info ([#6915](https://github.com/helix-editor/helix/pull/6915))
- Improve error message when writes fail because parent directories do not exist ([#7014](https://github.com/helix-editor/helix/pull/7014))
- Replace DAP variables popup instead of pushing more popups ([#7034](https://github.com/helix-editor/helix/pull/7034))
- Disable tree-sitter for files after parsing for 500ms ([#7028](https://github.com/helix-editor/helix/pull/7028))
- Fix crash when deleting with multiple cursors ([#6024](https://github.com/helix-editor/helix/pull/6024))
- Fix selection sliding when deleting forwards in append mode ([#6024](https://github.com/helix-editor/helix/pull/6024))
- Fix completion on paths containing spaces ([#6779](https://github.com/helix-editor/helix/pull/6779))

Themes:

- Style inlay hints in `dracula` theme ([#6515](https://github.com/helix-editor/helix/pull/6515))
- Style inlay hints in `onedark` theme ([#6503](https://github.com/helix-editor/helix/pull/6503))
- Style inlay hints and the soft-wrap indicator in `varua` ([#6568](https://github.com/helix-editor/helix/pull/6568), [#6589](https://github.com/helix-editor/helix/pull/6589))
- Style inlay hints in `emacs` theme ([#6569](https://github.com/helix-editor/helix/pull/6569))
- Update `base16_transparent` and `dark_high_contrast` themes ([#6577](https://github.com/helix-editor/helix/pull/6577))
- Style inlay hints for `mellow` and `rasmus` themes ([#6583](https://github.com/helix-editor/helix/pull/6583))
- Dim pane divider for `base16_transparent` theme ([#6534](https://github.com/helix-editor/helix/pull/6534))
- Style inlay hints in `zenburn` theme ([#6593](https://github.com/helix-editor/helix/pull/6593))
- Style inlay hints in `boo_berry` theme ([#6625](https://github.com/helix-editor/helix/pull/6625))
- Add `ferra` theme ([#6619](https://github.com/helix-editor/helix/pull/6619), [#6776](https://github.com/helix-editor/helix/pull/6776))
- Style inlay hints in `nightfox` theme ([#6655](https://github.com/helix-editor/helix/pull/6655))
- Fix `ayu` theme family markup code block background ([#6538](https://github.com/helix-editor/helix/pull/6538))
- Improve whitespace and search match colors in `rose_pine` theme ([#6679](https://github.com/helix-editor/helix/pull/6679))
- Highlight selected items in `base16_transparent` theme ([#6716](https://github.com/helix-editor/helix/pull/6716))
- Adjust everforest to resemble original more closely ([#5866](https://github.com/helix-editor/helix/pull/5866))
- Refactor `dracula` theme ([#6552](https://github.com/helix-editor/helix/pull/6552), [#6767](https://github.com/helix-editor/helix/pull/6767), [#6855](https://github.com/helix-editor/helix/pull/6855), [#6987](https://github.com/helix-editor/helix/pull/6987))
- Style inlay hints in `darcula` theme ([#6732](https://github.com/helix-editor/helix/pull/6732))
- Style inlay hints in `kanagawa` theme ([#6773](https://github.com/helix-editor/helix/pull/6773))
- Improve `ayu_dark` theme ([#6622](https://github.com/helix-editor/helix/pull/6622))
- Refactor `noctis` theme multiple cursor highlighting ([96720e7](https://github.com/helix-editor/helix/commit/96720e7))
- Refactor `noctis` theme whitespace rendering and indent guides ([f2ccc03](https://github.com/helix-editor/helix/commit/f2ccc03))
- Add `amberwood` theme ([#6924](https://github.com/helix-editor/helix/pull/6924))
- Update `nightfox` theme ([#7061](https://github.com/helix-editor/helix/pull/7061))

Language support:

- R language server: use the `--no-echo` flag to silence output ([#6570](https://github.com/helix-editor/helix/pull/6570))
- Recognize CUDA files as C++ ([#6521](https://github.com/helix-editor/helix/pull/6521))
- Add support for Hurl ([#6450](https://github.com/helix-editor/helix/pull/6450))
- Add textobject queries for Julia ([#6588](https://github.com/helix-editor/helix/pull/6588))
- Update Ruby highlight queries ([#6587](https://github.com/helix-editor/helix/pull/6587))
- Add xsd to XML file-types ([#6631](https://github.com/helix-editor/helix/pull/6631))
- Support Robot Framework ([#6611](https://github.com/helix-editor/helix/pull/6611))
- Update Gleam tree-sitter parser ([#6641](https://github.com/helix-editor/helix/pull/6641))
- Update git-commit tree-sitter parser ([#6692](https://github.com/helix-editor/helix/pull/6692))
- Update Haskell tree-sitter parser ([#6317](https://github.com/helix-editor/helix/pull/6317))
- Add injection queries for Haskell quasiquotes ([#6474](https://github.com/helix-editor/helix/pull/6474))
- Highlight C/C++ escape sequences ([#6724](https://github.com/helix-editor/helix/pull/6724))
- Support Markdoc ([#6432](https://github.com/helix-editor/helix/pull/6432))
- Support OpenCL ([#6473](https://github.com/helix-editor/helix/pull/6473))
- Support DTD ([#6644](https://github.com/helix-editor/helix/pull/6644))
- Fix constant highlighting in Python queries ([#6751](https://github.com/helix-editor/helix/pull/6751))
- Support Just ([#6453](https://github.com/helix-editor/helix/pull/6453))
- Fix Go locals query for `var_spec` identifiers ([#6763](https://github.com/helix-editor/helix/pull/6763))
- Update Markdown tree-sitter parser ([#6785](https://github.com/helix-editor/helix/pull/6785))
- Fix Haskell workspace root for cabal projects ([#6828](https://github.com/helix-editor/helix/pull/6828))
- Avoid extra indentation in Go switches ([#6817](https://github.com/helix-editor/helix/pull/6817))
- Fix Go workspace roots ([#6884](https://github.com/helix-editor/helix/pull/6884))
- Set PerlNavigator as the default Perl language server ([#6860](https://github.com/helix-editor/helix/pull/6860))
- Highlight more sqlx macros in Rust ([#6793](https://github.com/helix-editor/helix/pull/6793))
- Switch Odin tree-sitter grammar ([#6766](https://github.com/helix-editor/helix/pull/6766))
- Recognize `poetry.lock` as TOML ([#6928](https://github.com/helix-editor/helix/pull/6928))
- Recognize Jupyter notebooks as JSON ([#6927](https://github.com/helix-editor/helix/pull/6927))
- Add language server configuration for Crystal ([#6948](https://github.com/helix-editor/helix/pull/6948))
- Add `build.gradle.kts` to Java and Scala roots ([#6970](https://github.com/helix-editor/helix/pull/6970))
- Recognize `sty` and `cls` files as latex ([#6986](https://github.com/helix-editor/helix/pull/6986))
- Update Dockerfile tree-sitter grammar ([#6895](https://github.com/helix-editor/helix/pull/6895))
- Add comment injections for Odin ([#7027](https://github.com/helix-editor/helix/pull/7027))
- Recognize `gml` as XML ([#7055](https://github.com/helix-editor/helix/pull/7055))
- Recognize `geojson` as JSON ([#7054](https://github.com/helix-editor/helix/pull/7054))

Packaging:

- Update the Nix flake dependencies, remove a deprecated option ([#6546](https://github.com/helix-editor/helix/pull/6546))
- Fix and re-enable aarch64-macos release binary builds ([#6504](https://github.com/helix-editor/helix/pull/6504))
- The git dependency on `tree-sitter` has been replaced with a regular crates.io dependency ([#6608](https://github.com/helix-editor/helix/pull/6608))

# 23.03 (2023-03-31)

23.03 brings some long-awaited and exciting features. Thank you to everyone involved! This release saw changes from 102 contributors.

For the full log, check out the [git log](https://github.com/helix-editor/helix/compare/22.12..23.03).
Also check out the [release notes](https://helix-editor.com/news/release-23-03-highlights/) for more commentary on larger features.

Breaking changes:

- Select diagnostic range in `goto_*_diag` commands ([#4713](https://github.com/helix-editor/helix/pull/4713), [#5164](https://github.com/helix-editor/helix/pull/5164), [#6193](https://github.com/helix-editor/helix/pull/6193))
- Remove jump behavior from `increment`/`decrement` ([#4123](https://github.com/helix-editor/helix/pull/4123), [#5929](https://github.com/helix-editor/helix/pull/5929))
- Select change range in `goto_*_change` commands ([#5206](https://github.com/helix-editor/helix/pull/5206))
- Split file modification indicator from filename statusline elements ([#4731](https://github.com/helix-editor/helix/pull/4731), [#6036](https://github.com/helix-editor/helix/pull/6036))
- Jump to symbol ranges in LSP goto commands ([#5986](https://github.com/helix-editor/helix/pull/5986))
- Workspace detection now stops at the first `.helix/` directory (merging multiple `.helix/languages.toml` configurations is no longer supported) ([#5748](https://github.com/helix-editor/helix/pull/5748))

Features:

- Dynamic workspace symbol picker ([#5055](https://github.com/helix-editor/helix/pull/5055))
- Soft-wrap ([#5420](https://github.com/helix-editor/helix/pull/5420), [#5786](https://github.com/helix-editor/helix/pull/5786), [#5893](https://github.com/helix-editor/helix/pull/5893), [#6142](https://github.com/helix-editor/helix/pull/6142), [#6440](https://github.com/helix-editor/helix/pull/6440))
- Initial support for LSP snippet completions ([#5864](https://github.com/helix-editor/helix/pull/5864), [b1f7528](https://github.com/helix-editor/helix/commit/b1f7528), [#6263](https://github.com/helix-editor/helix/pull/6263), [bbf4800](https://github.com/helix-editor/helix/commit/bbf4800), [90348b8](https://github.com/helix-editor/helix/commit/90348b8), [f87299f](https://github.com/helix-editor/helix/commit/f87299f), [#6371](https://github.com/helix-editor/helix/pull/6371), [9fe3adc](https://github.com/helix-editor/helix/commit/9fe3adc))
- Add a statusline element for showing the current version control HEAD ([#5682](https://github.com/helix-editor/helix/pull/5682))
- Display LSP type hints ([#5420](https://github.com/helix-editor/helix/pull/5420), [#5934](https://github.com/helix-editor/helix/pull/5934), [#6312](https://github.com/helix-editor/helix/pull/6312))
- Enable the Kitty keyboard protocol on terminals with support ([#4939](https://github.com/helix-editor/helix/pull/4939), [#6170](https://github.com/helix-editor/helix/pull/6170), [#6194](https://github.com/helix-editor/helix/pull/6194), [#6438](https://github.com/helix-editor/helix/pull/6438))
- Add a statusline element for the basename of the current file ([#5318](https://github.com/helix-editor/helix/pull/5318))
- Add substring matching syntax for the picker ([#5658](https://github.com/helix-editor/helix/pull/5658))
- Support LSP `textDocument/prepareRename` ([#6103](https://github.com/helix-editor/helix/pull/6103))
- Allow multiple runtime directories with priorities ([#5411](https://github.com/helix-editor/helix/pull/5411))
- Allow configuring whether to insert or replace completions ([#5728](https://github.com/helix-editor/helix/pull/5728))
- Allow per-workspace config file `.helix/config.toml` ([#5748](https://github.com/helix-editor/helix/pull/5748))
- Add `workspace-lsp-roots` config option to support multiple LSP roots for use with monorepos ([#5748](https://github.com/helix-editor/helix/pull/5748))

Commands:

- `:pipe-to` which pipes selections into a shell command and ignores output ([#4931](https://github.com/helix-editor/helix/pull/4931))
- `merge_consecutive_selections` (`A-_`) combines all consecutive selections ([#5047](https://github.com/helix-editor/helix/pull/5047))
- `rotate_view_reverse` which focuses the previous view ([#5356](https://github.com/helix-editor/helix/pull/5356))
- `goto_declaration` (`gD`, requires LSP) which jumps to a symbol's declaration ([#5646](https://github.com/helix-editor/helix/pull/5646))
- `file_picker_in_current_buffer_directory` ([#4666](https://github.com/helix-editor/helix/pull/4666))
- `:character-info` which shows information about the character under the cursor ([#4000](https://github.com/helix-editor/helix/pull/4000))
- `:toggle-option` for toggling config options at runtime ([#4085](https://github.com/helix-editor/helix/pull/4085))
- `dap_restart` for restarting a debug session in DAP ([#5651](https://github.com/helix-editor/helix/pull/5651))
- `:lsp-stop` to stop the language server of the current buffer ([#5964](https://github.com/helix-editor/helix/pull/5964))
- `:reset-diff-change` for resetting a diff hunk to its original text ([#4974](https://github.com/helix-editor/helix/pull/4974))
- `:config-open-workspace` for opening the config file local to the current workspace ([#5748](https://github.com/helix-editor/helix/pull/5748))

Usability improvements:

- Remove empty detail section in completion menu when LSP doesn't send details ([#4902](https://github.com/helix-editor/helix/pull/4902))
- Pass client information on LSP initialization ([#4904](https://github.com/helix-editor/helix/pull/4904))
- Allow specifying environment variables for language servers in language config ([#4004](https://github.com/helix-editor/helix/pull/4004))
- Allow detached git worktrees to be recognized as root paths ([#5097](https://github.com/helix-editor/helix/pull/5097))
- Improve error message handling for theme loading failures ([#5073](https://github.com/helix-editor/helix/pull/5073))
- Print the names of binaries required for LSP/DAP in health-check ([#5195](https://github.com/helix-editor/helix/pull/5195))
- Improve sorting in the picker in cases of ties ([#5169](https://github.com/helix-editor/helix/pull/5169))
- Add theming for prompt suggestions ([#5104](https://github.com/helix-editor/helix/pull/5104))
- Open a file picker when using `:open` on directories ([#2707](https://github.com/helix-editor/helix/pull/2707), [#5278](https://github.com/helix-editor/helix/pull/5278))
- Reload language config with `:config-reload` ([#5239](https://github.com/helix-editor/helix/pull/5239), [#5381](https://github.com/helix-editor/helix/pull/5381), [#5431](https://github.com/helix-editor/helix/pull/5431))
- Improve indent queries for python when the tree is errored ([#5332](https://github.com/helix-editor/helix/pull/5332))
- Picker: Open files without closing the picker with `A-ret` ([#4435](https://github.com/helix-editor/helix/pull/4435))
- Allow theming cursors by primary/secondary and by mode ([#5130](https://github.com/helix-editor/helix/pull/5130))
- Allow configuration of the minimum width for the line-numbers gutter ([#4724](https://github.com/helix-editor/helix/pull/4724), [#5696](https://github.com/helix-editor/helix/pull/5696))
- Use filename completer for `:run-shell-command` command ([#5729](https://github.com/helix-editor/helix/pull/5729))
- Surround with line-endings with `ms<ret>` ([#4571](https://github.com/helix-editor/helix/pull/4571))
- Hide duplicate symlinks in file pickers ([#5658](https://github.com/helix-editor/helix/pull/5658))
- Tabulate buffer picker contents ([#5777](https://github.com/helix-editor/helix/pull/5777))
- Add an option to disable LSP ([#4425](https://github.com/helix-editor/helix/pull/4425))
- Short-circuit tree-sitter and word object motions ([#5851](https://github.com/helix-editor/helix/pull/5851))
- Add exit code to failed command message ([#5898](https://github.com/helix-editor/helix/pull/5898))
- Make `m` textobject look for pairs enclosing selections ([#3344](https://github.com/helix-editor/helix/pull/3344))
- Negotiate LSP position encoding ([#5894](https://github.com/helix-editor/helix/pull/5894), [a48d1a4](https://github.com/helix-editor/helix/commit/a48d1a4))
- Display deprecated LSP completions with strikethrough ([#5932](https://github.com/helix-editor/helix/pull/5932))
- Add JSONRPC request ID to failed LSP/DAP request log messages ([#6010](https://github.com/helix-editor/helix/pull/6010), [#6018](https://github.com/helix-editor/helix/pull/6018))
- Ignore case when filtering LSP completions ([#6008](https://github.com/helix-editor/helix/pull/6008))
- Show current language when no arguments are passed to `:set-language` ([#5895](https://github.com/helix-editor/helix/pull/5895))
- Refactor and rewrite all book documentation ([#5534](https://github.com/helix-editor/helix/pull/5534))
- Separate diagnostic picker message and code ([#6095](https://github.com/helix-editor/helix/pull/6095))
- Add a config option to bypass undercurl detection ([#6253](https://github.com/helix-editor/helix/pull/6253))
- Only complete appropriate arguments for typed commands ([#5966](https://github.com/helix-editor/helix/pull/5966))
- Discard outdated LSP diagnostics ([3c9d5d0](https://github.com/helix-editor/helix/commit/3c9d5d0))
- Discard outdated LSP workspace edits ([b6a4927](https://github.com/helix-editor/helix/commit/b6a4927))
- Run shell commands asynchronously ([#6373](https://github.com/helix-editor/helix/pull/6373))
- Show diagnostic codes in LSP diagnostic messages ([#6378](https://github.com/helix-editor/helix/pull/6378))
- Highlight the current line in a DAP debug session ([#5957](https://github.com/helix-editor/helix/pull/5957))
- Hide signature help if it overlaps with the completion menu ([#5523](https://github.com/helix-editor/helix/pull/5523), [7a69c40](https://github.com/helix-editor/helix/commit/7a69c40))

Fixes:

- Fix behavior of `auto-completion` flag for completion-on-trigger ([#5042](https://github.com/helix-editor/helix/pull/5042))
- Reset editor mode when changing buffers ([#5072](https://github.com/helix-editor/helix/pull/5072))
- Respect scrolloff settings in mouse movements ([#5255](https://github.com/helix-editor/helix/pull/5255))
- Avoid trailing `s` when only one file is opened ([#5189](https://github.com/helix-editor/helix/pull/5189))
- Fix erroneous indent between closers of auto-pairs ([#5330](https://github.com/helix-editor/helix/pull/5330))
- Expand `~` when parsing file paths in `:open` ([#5329](https://github.com/helix-editor/helix/pull/5329))
- Fix theme inheritance for default themes ([#5218](https://github.com/helix-editor/helix/pull/5218))
- Fix `extend_line` with a count when the current line(s) are selected ([#5288](https://github.com/helix-editor/helix/pull/5288))
- Prompt: Fix autocompletion for paths containing periods ([#5175](https://github.com/helix-editor/helix/pull/5175))
- Skip serializing JSONRPC params if params is null ([#5471](https://github.com/helix-editor/helix/pull/5471))
- Fix interaction with the `xclip` clipboard provider ([#5426](https://github.com/helix-editor/helix/pull/5426))
- Fix undo/redo execution from the command palette ([#5294](https://github.com/helix-editor/helix/pull/5294))
- Fix highlighting of non-block cursors ([#5575](https://github.com/helix-editor/helix/pull/5575))
- Fix panic when nooping in `join_selections` and `join_selections_space` ([#5423](https://github.com/helix-editor/helix/pull/5423))
- Fix selecting a changed file in global search ([#5639](https://github.com/helix-editor/helix/pull/5639))
- Fix initial syntax highlight layer sort order ([#5196](https://github.com/helix-editor/helix/pull/5196))
- Fix UTF-8 length handling for shellwords ([#5738](https://github.com/helix-editor/helix/pull/5738))
- Remove C-j and C-k bindings from the completion menu ([#5070](https://github.com/helix-editor/helix/pull/5070))
- Always commit to history when pasting ([#5790](https://github.com/helix-editor/helix/pull/5790))
- Properly handle LSP position encoding ([#5711](https://github.com/helix-editor/helix/pull/5711))
- Fix infinite loop in `copy_selection_on_prev_line` ([#5888](https://github.com/helix-editor/helix/pull/5888))
- Fix completion popup positioning ([#5842](https://github.com/helix-editor/helix/pull/5842))
- Fix a panic when uncommenting a line with only a comment token ([#5933](https://github.com/helix-editor/helix/pull/5933))
- Fix panic in `goto_window_center` at EOF ([#5987](https://github.com/helix-editor/helix/pull/5987))
- Ignore invalid file URIs sent by a language server ([#6000](https://github.com/helix-editor/helix/pull/6000))
- Decode LSP URIs for the workspace diagnostics picker ([#6016](https://github.com/helix-editor/helix/pull/6016))
- Fix incorrect usages of `tab_width` with `indent_width` ([#5918](https://github.com/helix-editor/helix/pull/5918))
- DAP: Send Disconnect if the Terminated event is received ([#5532](https://github.com/helix-editor/helix/pull/5532))
- DAP: Validate key and index exist when requesting variables ([#5628](https://github.com/helix-editor/helix/pull/5628))
- Check LSP renaming support before prompting for rename text ([#6257](https://github.com/helix-editor/helix/pull/6257))
- Fix indent guide rendering ([#6136](https://github.com/helix-editor/helix/pull/6136))
- Fix division by zero panic ([#6155](https://github.com/helix-editor/helix/pull/6155))
- Fix lacking space panic ([#6109](https://github.com/helix-editor/helix/pull/6109))
- Send error replies for malformed and unhandled LSP requests ([#6058](https://github.com/helix-editor/helix/pull/6058))
- Fix table column calculations for dynamic pickers ([#5920](https://github.com/helix-editor/helix/pull/5920))
- Skip adding jumplist entries for `:<n>` line number previews ([#5751](https://github.com/helix-editor/helix/pull/5751))
- Fix completion race conditions ([#6173](https://github.com/helix-editor/helix/pull/6173))
- Fix `shrink_selection` with multiple cursors ([#6093](https://github.com/helix-editor/helix/pull/6093))
- Fix indentation calculation for lines with mixed tabs/spaces ([#6278](https://github.com/helix-editor/helix/pull/6278))
- No-op `client/registerCapability` LSP requests ([#6258](https://github.com/helix-editor/helix/pull/6258))
- Send the STOP signal to all processes in the process group ([#3546](https://github.com/helix-editor/helix/pull/3546))
- Fix workspace edit client capabilities declaration ([7bf168d](https://github.com/helix-editor/helix/commit/7bf168d))
- Fix highlighting in picker results with multiple columns ([#6333](https://github.com/helix-editor/helix/pull/6333))
- Canonicalize paths before stripping the current dir as a prefix ([#6290](https://github.com/helix-editor/helix/pull/6290))
- Fix truncation behavior for long path names in the file picker ([#6410](https://github.com/helix-editor/helix/pull/6410), [67783dd](https://github.com/helix-editor/helix/commit/67783dd))
- Fix theme reloading behavior in `:config-reload` ([ab819d8](https://github.com/helix-editor/helix/commit/ab819d8))

Themes:

- Update `serika` ([#5038](https://github.com/helix-editor/helix/pull/5038), [#6344](https://github.com/helix-editor/helix/pull/6344))
- Update `flatwhite` ([#5036](https://github.com/helix-editor/helix/pull/5036), [#6323](https://github.com/helix-editor/helix/pull/6323))
- Update `autumn` ([#5051](https://github.com/helix-editor/helix/pull/5051), [#5397](https://github.com/helix-editor/helix/pull/5397), [#6280](https://github.com/helix-editor/helix/pull/6280), [#6316](https://github.com/helix-editor/helix/pull/6316))
- Update `acme` ([#5019](https://github.com/helix-editor/helix/pull/5019), [#5486](https://github.com/helix-editor/helix/pull/5486), [#5488](https://github.com/helix-editor/helix/pull/5488))
- Update `gruvbox` themes ([#5066](https://github.com/helix-editor/helix/pull/5066), [#5333](https://github.com/helix-editor/helix/pull/5333), [#5540](https://github.com/helix-editor/helix/pull/5540), [#6285](https://github.com/helix-editor/helix/pull/6285), [#6295](https://github.com/helix-editor/helix/pull/6295))
- Update `base16_transparent` ([#5105](https://github.com/helix-editor/helix/pull/5105))
- Update `dark_high_contrast` ([#5105](https://github.com/helix-editor/helix/pull/5105))
- Update `dracula` ([#5236](https://github.com/helix-editor/helix/pull/5236), [#5627](https://github.com/helix-editor/helix/pull/5627), [#6414](https://github.com/helix-editor/helix/pull/6414))
- Update `monokai_pro_spectrum` ([#5250](https://github.com/helix-editor/helix/pull/5250), [#5602](https://github.com/helix-editor/helix/pull/5602))
- Update `rose_pine` ([#5267](https://github.com/helix-editor/helix/pull/5267), [#5489](https://github.com/helix-editor/helix/pull/5489), [#6384](https://github.com/helix-editor/helix/pull/6384))
- Update `kanagawa` ([#5273](https://github.com/helix-editor/helix/pull/5273), [#5571](https://github.com/helix-editor/helix/pull/5571), [#6085](https://github.com/helix-editor/helix/pull/6085))
- Update `emacs` ([#5334](https://github.com/helix-editor/helix/pull/5334))
- Add `github` themes ([#5353](https://github.com/helix-editor/helix/pull/5353), [efeec12](https://github.com/helix-editor/helix/commit/efeec12))
    - Dark themes: `github_dark`, `github_dark_colorblind`, `github_dark_dimmed`, `github_dark_high_contrast`, `github_dark_tritanopia`
    - Light themes: `github_light`, `github_light_colorblind`, `github_light_dimmed`, `github_light_high_contrast`, `github_light_tritanopia`
- Update `solarized` variants ([#5445](https://github.com/helix-editor/helix/pull/5445), [#6327](https://github.com/helix-editor/helix/pull/6327))
- Update `catppuccin` variants ([#5404](https://github.com/helix-editor/helix/pull/5404), [#6107](https://github.com/helix-editor/helix/pull/6107), [#6269](https://github.com/helix-editor/helix/pull/6269), [#6464](https://github.com/helix-editor/helix/pull/6464))
- Use curly underlines in built-in themes ([#5419](https://github.com/helix-editor/helix/pull/5419))
- Update `zenburn` ([#5573](https://github.com/helix-editor/helix/pull/5573))
- Rewrite `snazzy` ([#3971](https://github.com/helix-editor/helix/pull/3971))
- Add `monokai_aqua` ([#5578](https://github.com/helix-editor/helix/pull/5578))
- Add `markup.strikethrough` to existing themes ([#5619](https://github.com/helix-editor/helix/pull/5619))
- Update `sonokai` ([#5440](https://github.com/helix-editor/helix/pull/5440))
- Update `onedark` ([#5755](https://github.com/helix-editor/helix/pull/5755))
- Add `ayu_evolve` ([#5638](https://github.com/helix-editor/helix/pull/5638), [#6028](https://github.com/helix-editor/helix/pull/6028), [#6225](https://github.com/helix-editor/helix/pull/6225))
- Add `jellybeans` ([#5719](https://github.com/helix-editor/helix/pull/5719))
- Update `fleet_dark` ([#5605](https://github.com/helix-editor/helix/pull/5605), [#6266](https://github.com/helix-editor/helix/pull/6266), [#6324](https://github.com/helix-editor/helix/pull/6324), [#6375](https://github.com/helix-editor/helix/pull/6375))
- Add `darcula-solid` ([#5778](https://github.com/helix-editor/helix/pull/5778))
- Remove text background from monokai themes ([#6009](https://github.com/helix-editor/helix/pull/6009))
- Update `pop_dark` ([#5992](https://github.com/helix-editor/helix/pull/5992), [#6208](https://github.com/helix-editor/helix/pull/6208), [#6227](https://github.com/helix-editor/helix/pull/6227), [#6292](https://github.com/helix-editor/helix/pull/6292))
- Add `everblush` ([#6086](https://github.com/helix-editor/helix/pull/6086))
- Add `adwaita-dark` ([#6042](https://github.com/helix-editor/helix/pull/6042), [#6342](https://github.com/helix-editor/helix/pull/6342))
- Update `papercolor` ([#6162](https://github.com/helix-editor/helix/pull/6162))
- Update `onelight` ([#6192](https://github.com/helix-editor/helix/pull/6192), [#6276](https://github.com/helix-editor/helix/pull/6276))
- Add `molokai` ([#6260](https://github.com/helix-editor/helix/pull/6260))
- Update `ayu` variants ([#6329](https://github.com/helix-editor/helix/pull/6329))
- Update `tokyonight` variants ([#6349](https://github.com/helix-editor/helix/pull/6349))
- Update `nord` variants ([#6376](https://github.com/helix-editor/helix/pull/6376))

New languages:

- BibTeX ([#5064](https://github.com/helix-editor/helix/pull/5064))
- Mermaid.js ([#5147](https://github.com/helix-editor/helix/pull/5147))
- Crystal ([#4993](https://github.com/helix-editor/helix/pull/4993), [#5205](https://github.com/helix-editor/helix/pull/5205))
- MATLAB/Octave ([#5192](https://github.com/helix-editor/helix/pull/5192))
- `tfvars` (uses HCL) ([#5396](https://github.com/helix-editor/helix/pull/5396))
- Ponylang ([#5416](https://github.com/helix-editor/helix/pull/5416))
- DHall ([1f6809c](https://github.com/helix-editor/helix/commit/1f6809c))
- Sagemath ([#5649](https://github.com/helix-editor/helix/pull/5649))
- MSBuild ([#5793](https://github.com/helix-editor/helix/pull/5793))
- pem ([#5797](https://github.com/helix-editor/helix/pull/5797))
- passwd ([#4959](https://github.com/helix-editor/helix/pull/4959))
- hosts ([#4950](https://github.com/helix-editor/helix/pull/4950), [#5914](https://github.com/helix-editor/helix/pull/5914))
- uxntal ([#6047](https://github.com/helix-editor/helix/pull/6047))
- Yuck ([#6064](https://github.com/helix-editor/helix/pull/6064), [#6242](https://github.com/helix-editor/helix/pull/6242))
- GNU gettext PO ([#5996](https://github.com/helix-editor/helix/pull/5996))
- Sway ([#6023](https://github.com/helix-editor/helix/pull/6023))
- NASM ([#6068](https://github.com/helix-editor/helix/pull/6068))
- PRQL ([#6126](https://github.com/helix-editor/helix/pull/6126))
- reStructuredText ([#6180](https://github.com/helix-editor/helix/pull/6180))
- Smithy ([#6370](https://github.com/helix-editor/helix/pull/6370))
- VHDL ([#5826](https://github.com/helix-editor/helix/pull/5826))
- Rego (OpenPolicy Agent) ([#6415](https://github.com/helix-editor/helix/pull/6415))
- Nim ([#6123](https://github.com/helix-editor/helix/pull/6123))

Updated languages and queries:

- Use diff syntax for patch files ([#5085](https://github.com/helix-editor/helix/pull/5085))
- Add Haskell textobjects ([#5061](https://github.com/helix-editor/helix/pull/5061))
- Fix commonlisp configuration ([#5091](https://github.com/helix-editor/helix/pull/5091))
- Update Scheme ([bae890d](https://github.com/helix-editor/helix/commit/bae890d))
- Add indent queries for Bash ([#5149](https://github.com/helix-editor/helix/pull/5149))
- Recognize `c++` as a C++ extension ([#5183](https://github.com/helix-editor/helix/pull/5183))
- Enable HTTP server in `metals` (Scala) config ([#5551](https://github.com/helix-editor/helix/pull/5551))
- Change V-lang language server to `v ls` from `vls` ([#5677](https://github.com/helix-editor/helix/pull/5677))
- Inject comment grammar into Nix ([#5208](https://github.com/helix-editor/helix/pull/5208))
- Update Rust highlights ([#5238](https://github.com/helix-editor/helix/pull/5238), [#5349](https://github.com/helix-editor/helix/pull/5349))
- Fix HTML injection within Markdown ([#5265](https://github.com/helix-editor/helix/pull/5265))
- Fix comment token for godot ([#5276](https://github.com/helix-editor/helix/pull/5276))
- Expand injections for Vue ([#5268](https://github.com/helix-editor/helix/pull/5268))
- Add `.bash_aliases` as a Bash file-type ([#5347](https://github.com/helix-editor/helix/pull/5347))
- Fix comment token for sshclientconfig ([#5351](https://github.com/helix-editor/helix/pull/5351))
- Update Prisma ([#5417](https://github.com/helix-editor/helix/pull/5417))
- Update C++ ([#5457](https://github.com/helix-editor/helix/pull/5457))
- Add more file-types for Python ([#5593](https://github.com/helix-editor/helix/pull/5593))
- Update tree-sitter-scala ([#5576](https://github.com/helix-editor/helix/pull/5576))
- Add an injection regex for Lua ([#5606](https://github.com/helix-editor/helix/pull/5606))
- Add `build.gradle` to java roots configuration ([#5641](https://github.com/helix-editor/helix/pull/5641))
- Add Hub PR files to markdown file-types ([#5634](https://github.com/helix-editor/helix/pull/5634))
- Add an external formatter configuration for Cue ([#5679](https://github.com/helix-editor/helix/pull/5679))
- Add injections for builders and writers to Nix ([#5629](https://github.com/helix-editor/helix/pull/5629))
- Update tree-sitter-xml to fix whitespace parsing ([#5685](https://github.com/helix-editor/helix/pull/5685))
- Add `Justfile` to the make file-types configuration ([#5687](https://github.com/helix-editor/helix/pull/5687))
- Update tree-sitter-sql and highlight queries ([#5683](https://github.com/helix-editor/helix/pull/5683), [#5772](https://github.com/helix-editor/helix/pull/5772))
- Use the bash grammar and queries for env language ([#5720](https://github.com/helix-editor/helix/pull/5720))
- Add podspec files to ruby file-types ([#5811](https://github.com/helix-editor/helix/pull/5811))
- Recognize `.C` and `.H` file-types as C++ ([#5808](https://github.com/helix-editor/helix/pull/5808))
- Recognize plist and mobileconfig files as XML ([#5863](https://github.com/helix-editor/helix/pull/5863))
- Fix `select` indentation in Go ([#5713](https://github.com/helix-editor/helix/pull/5713))
- Check for external file modifications when writing ([#5805](https://github.com/helix-editor/helix/pull/5805))
- Recognize containerfiles as dockerfile syntax ([#5873](https://github.com/helix-editor/helix/pull/5873))
- Update godot grammar and queries ([#5944](https://github.com/helix-editor/helix/pull/5944), [#6186](https://github.com/helix-editor/helix/pull/6186))
- Improve DHall highlights ([#5959](https://github.com/helix-editor/helix/pull/5959))
- Recognize `.env.dist` and `source.env` as env language ([#6003](https://github.com/helix-editor/helix/pull/6003))
- Update tree-sitter-git-rebase ([#6030](https://github.com/helix-editor/helix/pull/6030), [#6094](https://github.com/helix-editor/helix/pull/6094))
- Improve SQL highlights ([#6041](https://github.com/helix-editor/helix/pull/6041))
- Improve markdown highlights and inject LaTeX ([#6100](https://github.com/helix-editor/helix/pull/6100))
- Add textobject queries for Elm ([#6084](https://github.com/helix-editor/helix/pull/6084))
- Recognize graphql schema file type ([#6159](https://github.com/helix-editor/helix/pull/6159))
- Improve highlighting in comments ([#6143](https://github.com/helix-editor/helix/pull/6143))
- Improve highlighting for JavaScript/TypeScript/ECMAScript languages ([#6205](https://github.com/helix-editor/helix/pull/6205))
- Improve PHP highlights ([#6203](https://github.com/helix-editor/helix/pull/6203), [#6250](https://github.com/helix-editor/helix/pull/6250), [#6299](https://github.com/helix-editor/helix/pull/6299))
- Improve Go highlights ([#6204](https://github.com/helix-editor/helix/pull/6204))
- Highlight unchecked sqlx functions as SQL in Rust ([#6256](https://github.com/helix-editor/helix/pull/6256))
- Improve Erlang highlights ([cdd6c8d](https://github.com/helix-editor/helix/commit/cdd6c8d))
- Improve Nix highlights ([fb4d703](https://github.com/helix-editor/helix/commit/fb4d703))
- Improve gdscript highlights ([#6311](https://github.com/helix-editor/helix/pull/6311))
- Improve Vlang highlights ([#6279](https://github.com/helix-editor/helix/pull/6279))
- Improve Makefile highlights ([#6339](https://github.com/helix-editor/helix/pull/6339))
- Remove auto-pair for `'` in OCaml ([#6381](https://github.com/helix-editor/helix/pull/6381))
- Fix indents in switch statements in ECMA languages ([#6369](https://github.com/helix-editor/helix/pull/6369))
- Recognize xlb and storyboard file-types as XML ([#6407](https://github.com/helix-editor/helix/pull/6407))
- Recognize cts and mts file-types as TypeScript ([#6424](https://github.com/helix-editor/helix/pull/6424))
- Recognize SVG file-type as XML ([#6431](https://github.com/helix-editor/helix/pull/6431))
- Add theme scopes for (un)checked list item markup scopes ([#6434](https://github.com/helix-editor/helix/pull/6434))
- Update git commit grammar and add the comment textobject ([#6439](https://github.com/helix-editor/helix/pull/6439), [#6493](https://github.com/helix-editor/helix/pull/6493))
- Recognize ARB file-type as JSON ([#6452](https://github.com/helix-editor/helix/pull/6452))
- Inject markdown into markdown strings in Julia ([#6489](https://github.com/helix-editor/helix/pull/6489))

Packaging:

- Fix Nix flake devShell for darwin hosts ([#5368](https://github.com/helix-editor/helix/pull/5368))
- Add Appstream metadata file to `contrib/` ([#5643](https://github.com/helix-editor/helix/pull/5643))
- Increase the MSRV to 1.65 ([#5570](https://github.com/helix-editor/helix/pull/5570), [#6185](https://github.com/helix-editor/helix/pull/6185))
- Expose the Nix flake's `wrapper` ([#5994](https://github.com/helix-editor/helix/pull/5994))

# 22.12 (2022-12-06)

This is a great big release filled with changes from a 99 contributors. A big _thank you_ to you all!

As usual, the following is a summary of each of the changes since the last release.
For the full log, check out the [git log](https://github.com/helix-editor/helix/compare/22.08.1..22.12).

Breaking changes:

- Remove readline-like navigation bindings from the default insert mode keymap ([e12690e](https://github.com/helix-editor/helix/commit/e12690e), [#3811](https://github.com/helix-editor/helix/pull/3811), [#3827](https://github.com/helix-editor/helix/pull/3827), [#3915](https://github.com/helix-editor/helix/pull/3915), [#4088](https://github.com/helix-editor/helix/pull/4088))
- Rename `append_to_line` as `insert_at_line_end` and `prepend_to_line` as `insert_at_line_start` ([#3753](https://github.com/helix-editor/helix/pull/3753))
- Swap diagnostic picker and debug mode bindings in the space keymap ([#4229](https://github.com/helix-editor/helix/pull/4229))
- Select newly inserted text on paste or from shell commands ([#4458](https://github.com/helix-editor/helix/pull/4458), [#4608](https://github.com/helix-editor/helix/pull/4608), [#4619](https://github.com/helix-editor/helix/pull/4619), [#4824](https://github.com/helix-editor/helix/pull/4824))
- Select newly inserted surrounding characters on `ms<char>` ([#4752](https://github.com/helix-editor/helix/pull/4752))
- Exit select-mode after executing `replace_*` commands ([#4554](https://github.com/helix-editor/helix/pull/4554))
- Exit select-mode after executing surround commands ([#4858](https://github.com/helix-editor/helix/pull/4858))
- Change tree-sitter text-object keys ([#3782](https://github.com/helix-editor/helix/pull/3782))
- Rename `fleetish` theme to `fleet_dark` ([#4997](https://github.com/helix-editor/helix/pull/4997))

Features:

- Bufferline ([#2759](https://github.com/helix-editor/helix/pull/2759))
- Support underline styles and colors ([#4061](https://github.com/helix-editor/helix/pull/4061), [98c121c](https://github.com/helix-editor/helix/commit/98c121c))
- Inheritance for themes ([#3067](https://github.com/helix-editor/helix/pull/3067), [#4096](https://github.com/helix-editor/helix/pull/4096))
- Cursorcolumn ([#4084](https://github.com/helix-editor/helix/pull/4084))
- Overhauled system for writing files and quitting ([#2267](https://github.com/helix-editor/helix/pull/2267), [#4397](https://github.com/helix-editor/helix/pull/4397))
- Autosave when terminal loses focus ([#3178](https://github.com/helix-editor/helix/pull/3178))
- Use OSC52 as a fallback for the system clipboard ([#3220](https://github.com/helix-editor/helix/pull/3220))
- Show git diffs in the gutter ([#3890](https://github.com/helix-editor/helix/pull/3890), [#5012](https://github.com/helix-editor/helix/pull/5012), [#4995](https://github.com/helix-editor/helix/pull/4995))
- Add a logo ([dc1ec56](https://github.com/helix-editor/helix/commit/dc1ec56))
- Multi-cursor completion ([#4496](https://github.com/helix-editor/helix/pull/4496))

Commands:

- `file_picker_in_current_directory` (`<space>F`) ([#3701](https://github.com/helix-editor/helix/pull/3701))
- `:lsp-restart` to restart the current document's language server ([#3435](https://github.com/helix-editor/helix/pull/3435), [#3972](https://github.com/helix-editor/helix/pull/3972))
- `join_selections_space` (`A-j`) which joins selections and selects the joining whitespace ([#3549](https://github.com/helix-editor/helix/pull/3549))
- `:update` to write the current file if it is modified ([#4426](https://github.com/helix-editor/helix/pull/4426))
- `:lsp-workspace-command` for picking LSP commands to execute ([#3140](https://github.com/helix-editor/helix/pull/3140))
- `extend_prev_word_end` - the extend variant for `move_prev_word_end` ([7468fa2](https://github.com/helix-editor/helix/commit/7468fa2))
- `make_search_word_bounded` which adds regex word boundaries to the current search register value ([#4322](https://github.com/helix-editor/helix/pull/4322))
- `:reload-all` - `:reload` for all open buffers ([#4663](https://github.com/helix-editor/helix/pull/4663), [#4901](https://github.com/helix-editor/helix/pull/4901))
- `goto_next_change` (`]g`), `goto_prev_change` (`[g`), `goto_first_change` (`[G`), `goto_last_change` (`]G`) textobjects for jumping between VCS changes ([#4650](https://github.com/helix-editor/helix/pull/4650))

Usability improvements and fixes:

- Don't log 'LSP not defined' errors in the logfile ([1caba2d](https://github.com/helix-editor/helix/commit/1caba2d))
- Look for the external formatter program before invoking it ([#3670](https://github.com/helix-editor/helix/pull/3670))
- Don't send LSP didOpen events for documents without URLs ([44b4479](https://github.com/helix-editor/helix/commit/44b4479))
- Fix off-by-one in `extend_line_above` command ([#3689](https://github.com/helix-editor/helix/pull/3689))
- Use the original scroll offset when opening a split ([1acdfaa](https://github.com/helix-editor/helix/commit/1acdfaa))
- Handle auto-formatting failures and save the file anyway ([#3684](https://github.com/helix-editor/helix/pull/3684))
- Ensure the cursor is in view after `:reflow` ([#3733](https://github.com/helix-editor/helix/pull/3733))
- Add default rulers and reflow config for git commit messages ([#3738](https://github.com/helix-editor/helix/pull/3738))
- Improve grammar fetching and building output ([#3773](https://github.com/helix-editor/helix/pull/3773))
- Add a `text` language to language completion ([cc47d3f](https://github.com/helix-editor/helix/commit/cc47d3f))
- Improve error handling for `:set-language` ([e8add6f](https://github.com/helix-editor/helix/commit/e8add6f))
- Improve error handling for `:config-reload` ([#3668](https://github.com/helix-editor/helix/pull/3668))
- Improve error handling when passing improper ranges to syntax highlighting ([#3826](https://github.com/helix-editor/helix/pull/3826))
- Render `<code>` tags as raw markup in markdown ([#3425](https://github.com/helix-editor/helix/pull/3425))
- Remove border around the LSP code-actions popup ([#3444](https://github.com/helix-editor/helix/pull/3444))
- Canonicalize the path to the runtime directory ([#3794](https://github.com/helix-editor/helix/pull/3794))
- Add a `themelint` xtask for linting themes ([#3234](https://github.com/helix-editor/helix/pull/3234))
- Re-sort LSP diagnostics after applying transactions ([#3895](https://github.com/helix-editor/helix/pull/3895), [#4319](https://github.com/helix-editor/helix/pull/4319))
- Add a command-line flag to specify the log file ([#3807](https://github.com/helix-editor/helix/pull/3807))
- Track source and tag information in LSP diagnostics ([#3898](https://github.com/helix-editor/helix/pull/3898), [1df32c9](https://github.com/helix-editor/helix/commit/1df32c9))
- Fix theme returning to normal when exiting the `:theme` completion ([#3644](https://github.com/helix-editor/helix/pull/3644))
- Improve error messages for invalid commands in the keymap ([#3931](https://github.com/helix-editor/helix/pull/3931))
- Deduplicate regexs in `search_selection` command ([#3941](https://github.com/helix-editor/helix/pull/3941))
- Split the finding of LSP root and config roots ([#3929](https://github.com/helix-editor/helix/pull/3929))
- Ensure that the cursor is within view after auto-formatting ([#4047](https://github.com/helix-editor/helix/pull/4047))
- Add pseudo-pending to commands with on-next-key callbacks ([#4062](https://github.com/helix-editor/helix/pull/4062), [#4077](https://github.com/helix-editor/helix/pull/4077))
- Add live preview to `:goto` ([#2982](https://github.com/helix-editor/helix/pull/2982))
- Show regex compilation failure in a popup ([#3049](https://github.com/helix-editor/helix/pull/3049))
- Add 'cycled to end' and 'no more matches' for search ([#3176](https://github.com/helix-editor/helix/pull/3176), [#4101](https://github.com/helix-editor/helix/pull/4101))
- Add extending behavior to tree-sitter textobjects ([#3266](https://github.com/helix-editor/helix/pull/3266))
- Add `ui.gutter.selected` option for themes ([#3303](https://github.com/helix-editor/helix/pull/3303))
- Make statusline mode names configurable ([#33
Download .txt
gitextract_kny5h8t2/

├── .cargo/
│   └── config.toml
├── .envrc
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yaml
│   │   └── enhancement.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── build.yml
│       ├── cachix.yml
│       ├── gh-pages.yml
│       ├── languages.toml
│       └── release.yml
├── .gitignore
├── CHANGELOG.md
├── Cargo.toml
├── LICENSE
├── README.md
├── base16_theme.toml
├── contrib/
│   ├── Helix.appdata.xml
│   ├── Helix.desktop
│   ├── completion/
│   │   ├── hx.bash
│   │   ├── hx.elv
│   │   ├── hx.fish
│   │   ├── hx.nu
│   │   └── hx.zsh
│   └── hx_launcher.sh
├── default.nix
├── docs/
│   ├── CONTRIBUTING.md
│   ├── architecture.md
│   ├── releases.md
│   └── vision.md
├── flake.nix
├── grammars.nix
├── helix-core/
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── src/
│   │   ├── auto_pairs.rs
│   │   ├── case_conversion.rs
│   │   ├── chars.rs
│   │   ├── command_line.rs
│   │   ├── comment.rs
│   │   ├── completion.rs
│   │   ├── config.rs
│   │   ├── diagnostic.rs
│   │   ├── diff.rs
│   │   ├── doc_formatter/
│   │   │   └── test.rs
│   │   ├── doc_formatter.rs
│   │   ├── editor_config.rs
│   │   ├── fuzzy.rs
│   │   ├── graphemes.rs
│   │   ├── history.rs
│   │   ├── increment/
│   │   │   ├── date_time.rs
│   │   │   ├── integer.rs
│   │   │   └── mod.rs
│   │   ├── indent.rs
│   │   ├── lib.rs
│   │   ├── line_ending.rs
│   │   ├── macros.rs
│   │   ├── match_brackets.rs
│   │   ├── movement.rs
│   │   ├── object.rs
│   │   ├── position.rs
│   │   ├── rope_reader.rs
│   │   ├── search.rs
│   │   ├── selection.rs
│   │   ├── snippets/
│   │   │   ├── active.rs
│   │   │   ├── elaborate.rs
│   │   │   ├── parser.rs
│   │   │   └── render.rs
│   │   ├── snippets.rs
│   │   ├── surround.rs
│   │   ├── syntax/
│   │   │   └── config.rs
│   │   ├── syntax.rs
│   │   ├── test.rs
│   │   ├── text_annotations.rs
│   │   ├── textobject.rs
│   │   ├── transaction.rs
│   │   ├── uri.rs
│   │   └── wrap.rs
│   └── tests/
│       ├── data/
│       │   └── indent/
│       │       ├── cpp.cpp
│       │       ├── languages.toml
│       │       └── rust.rs
│       └── indent.rs
├── helix-dap/
│   ├── Cargo.toml
│   └── src/
│       ├── client.rs
│       ├── lib.rs
│       ├── registry.rs
│       └── transport.rs
├── helix-dap-types/
│   ├── Cargo.toml
│   └── src/
│       └── lib.rs
├── helix-event/
│   ├── Cargo.toml
│   └── src/
│       ├── cancel.rs
│       ├── debounce.rs
│       ├── hook.rs
│       ├── lib.rs
│       ├── redraw.rs
│       ├── registry.rs
│       ├── runtime.rs
│       ├── status.rs
│       └── test.rs
├── helix-loader/
│   ├── Cargo.toml
│   ├── build.rs
│   └── src/
│       ├── config.rs
│       ├── grammar.rs
│       ├── lib.rs
│       └── main.rs
├── helix-lsp/
│   ├── Cargo.toml
│   └── src/
│       ├── client.rs
│       ├── file_event.rs
│       ├── file_operations.rs
│       ├── jsonrpc.rs
│       ├── lib.rs
│       └── transport.rs
├── helix-lsp-types/
│   ├── Cargo.toml
│   ├── LICENSE
│   ├── README.md
│   └── src/
│       ├── call_hierarchy.rs
│       ├── code_action.rs
│       ├── code_lens.rs
│       ├── color.rs
│       ├── completion.rs
│       ├── document_diagnostic.rs
│       ├── document_highlight.rs
│       ├── document_link.rs
│       ├── document_symbols.rs
│       ├── error_codes.rs
│       ├── file_operations.rs
│       ├── folding_range.rs
│       ├── formatting.rs
│       ├── hover.rs
│       ├── inlay_hint.rs
│       ├── inline_completion.rs
│       ├── inline_value.rs
│       ├── lib.rs
│       ├── linked_editing.rs
│       ├── lsif.rs
│       ├── moniker.rs
│       ├── notification.rs
│       ├── progress.rs
│       ├── references.rs
│       ├── rename.rs
│       ├── request.rs
│       ├── selection_range.rs
│       ├── semantic_tokens.rs
│       ├── signature_help.rs
│       ├── trace.rs
│       ├── type_hierarchy.rs
│       ├── window.rs
│       ├── workspace_diagnostic.rs
│       ├── workspace_folders.rs
│       └── workspace_symbols.rs
├── helix-parsec/
│   ├── Cargo.toml
│   └── src/
│       └── lib.rs
├── helix-stdx/
│   ├── Cargo.toml
│   ├── src/
│   │   ├── env.rs
│   │   ├── faccess.rs
│   │   ├── lib.rs
│   │   ├── path.rs
│   │   ├── range.rs
│   │   └── rope.rs
│   └── tests/
│       └── path.rs
├── helix-term/
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── build.rs
│   ├── src/
│   │   ├── application.rs
│   │   ├── args.rs
│   │   ├── commands/
│   │   │   ├── dap.rs
│   │   │   ├── lsp.rs
│   │   │   ├── syntax.rs
│   │   │   └── typed.rs
│   │   ├── commands.rs
│   │   ├── compositor.rs
│   │   ├── config.rs
│   │   ├── events.rs
│   │   ├── handlers/
│   │   │   ├── auto_save.rs
│   │   │   ├── completion/
│   │   │   │   ├── item.rs
│   │   │   │   ├── path.rs
│   │   │   │   ├── request.rs
│   │   │   │   ├── resolve.rs
│   │   │   │   └── word.rs
│   │   │   ├── completion.rs
│   │   │   ├── diagnostics.rs
│   │   │   ├── document_colors.rs
│   │   │   ├── document_highlight.rs
│   │   │   ├── document_links.rs
│   │   │   ├── prompt.rs
│   │   │   ├── signature_help.rs
│   │   │   └── snippet.rs
│   │   ├── handlers.rs
│   │   ├── health.rs
│   │   ├── job.rs
│   │   ├── keymap/
│   │   │   ├── default.rs
│   │   │   └── macros.rs
│   │   ├── keymap.rs
│   │   ├── lib.rs
│   │   ├── main.rs
│   │   └── ui/
│   │       ├── completion.rs
│   │       ├── document.rs
│   │       ├── editor.rs
│   │       ├── info.rs
│   │       ├── lsp/
│   │       │   ├── hover.rs
│   │       │   └── signature_help.rs
│   │       ├── lsp.rs
│   │       ├── markdown.rs
│   │       ├── menu.rs
│   │       ├── mod.rs
│   │       ├── overlay.rs
│   │       ├── picker/
│   │       │   ├── handlers.rs
│   │       │   └── query.rs
│   │       ├── picker.rs
│   │       ├── popup.rs
│   │       ├── prompt.rs
│   │       ├── select.rs
│   │       ├── spinner.rs
│   │       ├── statusline.rs
│   │       ├── text.rs
│   │       ├── text_decorations/
│   │       │   └── diagnostics.rs
│   │       └── text_decorations.rs
│   └── tests/
│       ├── integration.rs
│       └── test/
│           ├── auto_indent.rs
│           ├── auto_pairs.rs
│           ├── command_line.rs
│           ├── commands/
│           │   ├── insert.rs
│           │   ├── movement.rs
│           │   ├── reverse_selection_contents.rs
│           │   ├── rotate_selection_contents.rs
│           │   └── write.rs
│           ├── commands.rs
│           ├── helpers.rs
│           ├── languages/
│           │   ├── go.rs
│           │   ├── mod.rs
│           │   └── yaml.rs
│           ├── movement.rs
│           └── splits.rs
├── helix-tui/
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── README.md
│   ├── src/
│   │   ├── backend/
│   │   │   ├── crossterm.rs
│   │   │   ├── mod.rs
│   │   │   ├── termina.rs
│   │   │   └── test.rs
│   │   ├── buffer.rs
│   │   ├── layout.rs
│   │   ├── lib.rs
│   │   ├── symbols.rs
│   │   ├── terminal.rs
│   │   ├── text.rs
│   │   └── widgets/
│   │       ├── block.rs
│   │       ├── list.rs
│   │       ├── mod.rs
│   │       ├── paragraph.rs
│   │       ├── reflow.rs
│   │       └── table.rs
│   └── tests/
│       ├── terminal.rs
│       ├── text.rs
│       ├── widgets_block.rs
│       ├── widgets_list.rs
│       ├── widgets_paragraph.rs
│       └── widgets_table.rs
├── helix-vcs/
│   ├── Cargo.toml
│   └── src/
│       ├── diff/
│       │   ├── line_cache.rs
│       │   ├── worker/
│       │   │   └── test.rs
│       │   └── worker.rs
│       ├── diff.rs
│       ├── git/
│       │   └── test.rs
│       ├── git.rs
│       ├── lib.rs
│       └── status.rs
├── helix-view/
│   ├── Cargo.toml
│   ├── src/
│   │   ├── annotations/
│   │   │   └── diagnostics.rs
│   │   ├── annotations.rs
│   │   ├── clipboard.rs
│   │   ├── document.rs
│   │   ├── editor.rs
│   │   ├── events.rs
│   │   ├── expansion.rs
│   │   ├── graphics.rs
│   │   ├── gutter.rs
│   │   ├── handlers/
│   │   │   ├── completion.rs
│   │   │   ├── dap.rs
│   │   │   ├── diagnostics.rs
│   │   │   ├── lsp.rs
│   │   │   └── word_index.rs
│   │   ├── handlers.rs
│   │   ├── info.rs
│   │   ├── input.rs
│   │   ├── keyboard.rs
│   │   ├── lib.rs
│   │   ├── macros.rs
│   │   ├── register.rs
│   │   ├── theme.rs
│   │   ├── tree.rs
│   │   └── view.rs
│   └── tests/
│       └── encoding/
│           ├── LICENSE-WHATWG
│           ├── big5_in.txt
│           ├── big5_in_ref.txt
│           ├── big5_out.txt
│           ├── big5_out_ref.txt
│           ├── euc_kr_in.txt
│           ├── euc_kr_in_ref.txt
│           ├── euc_kr_out.txt
│           ├── euc_kr_out_ref.txt
│           ├── gb18030_in.txt
│           ├── gb18030_in_ref.txt
│           ├── gb18030_out.txt
│           ├── gb18030_out_ref.txt
│           ├── iso_2022_jp_in.txt
│           ├── iso_2022_jp_in_ref.txt
│           ├── iso_2022_jp_out.txt
│           ├── iso_2022_jp_out_ref.txt
│           ├── jis0208_in.txt
│           ├── jis0208_in_ref.txt
│           ├── jis0208_out.txt
│           ├── jis0208_out_ref.txt
│           ├── jis0212_in.txt
│           ├── jis0212_in_ref.txt
│           ├── shift_jis_in.txt
│           ├── shift_jis_in_ref.txt
│           ├── shift_jis_out.txt
│           └── shift_jis_out_ref.txt
├── languages.toml
├── runtime/
│   ├── queries/
│   │   ├── _gjs/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── _javascript/
│   │   │   ├── highlights.scm
│   │   │   ├── locals.scm
│   │   │   └── tags.scm
│   │   ├── _jsx/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── _typescript/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── ada/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── adl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── agda/
│   │   │   └── highlights.scm
│   │   ├── alloy/
│   │   │   └── highlights.scm
│   │   ├── amber/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── astro/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── awk/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── bash/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── basic/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── bass/
│   │   │   └── highlights.scm
│   │   ├── beancount/
│   │   │   ├── folds.scm
│   │   │   └── highlights.scm
│   │   ├── bibtex/
│   │   │   └── highlights.scm
│   │   ├── bicep/
│   │   │   └── highlights.scm
│   │   ├── bitbake/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── blade/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── blueprint/
│   │   │   └── highlights.scm
│   │   ├── c/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── c-sharp/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── c3/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── caddyfile/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── cairo/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── capnp/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── cel/
│   │   │   └── highlights.scm
│   │   ├── chuck/
│   │   │   └── highlights.scm
│   │   ├── circom/
│   │   │   ├── highlights.scm
│   │   │   └── locals.scm
│   │   ├── clarity/
│   │   │   └── highlights.scm
│   │   ├── clojure/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── cmake/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── codeql/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── comment/
│   │   │   └── highlights.scm
│   │   ├── common-lisp/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── cpon/
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── cpp/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── cross-config/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── crystal/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── css/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── csv/
│   │   │   └── highlights.scm
│   │   ├── cue/
│   │   │   └── highlights.scm
│   │   ├── cylc/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── cython/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── tags.scm
│   │   ├── d/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── dart/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── dbml/
│   │   │   └── highlights.scm
│   │   ├── debian/
│   │   │   └── highlights.scm
│   │   ├── devicetree/
│   │   │   └── highlights.scm
│   │   ├── dhall/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── diff/
│   │   │   └── highlights.scm
│   │   ├── djot/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── docker-bake/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── docker-compose/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── dockerfile/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── dot/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── doxyfile/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── dtd/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── dune/
│   │   │   └── highlights.scm
│   │   ├── dunstrc/
│   │   │   └── highlights.scm
│   │   ├── earthfile/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── ecma/
│   │   │   ├── README.md
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── edoc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── eex/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── eiffel/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── ejs/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── elisp/
│   │   │   ├── highlights.scm
│   │   │   └── tags.scm
│   │   ├── elixir/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── elm/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── elvish/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── embedded-perl/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── env/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── erb/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── erlang/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── esdl/
│   │   │   └── highlights.scm
│   │   ├── fennel/
│   │   │   ├── highlights.scm
│   │   │   └── rainbows.scm
│   │   ├── fga/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── fidl/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── fish/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── flatbuffers/
│   │   │   └── highlights.scm
│   │   ├── forth/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── fortran/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── freebasic/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── fsharp/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── gas/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── gdscript/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gemini/
│   │   │   └── highlights.scm
│   │   ├── gherkin/
│   │   │   └── highlights.scm
│   │   ├── ghostty/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── git-attributes/
│   │   │   └── highlights.scm
│   │   ├── git-cliff-config/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── git-commit/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── git-config/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── git-ignore/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── git-notes/
│   │   │   └── highlights.scm
│   │   ├── git-rebase/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── github-action/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── gitlab-ci/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gjs/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gleam/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── glimmer/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── glsl/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gn/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── gnuplot/
│   │   │   └── highlights.scm
│   │   ├── go/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── go-format-string/
│   │   │   ├── highlights.scm
│   │   │   └── rainbows.scm
│   │   ├── godot-resource/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── gomod/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── gotmpl/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── gowork/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── gpr/
│   │   │   └── highlights.scm
│   │   ├── graphql/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── gren/
│   │   │   ├── highlights.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── groovy/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── gts/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── hare/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── haskell/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── haskell-literate/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── haskell-persistent/
│   │   │   ├── folds.scm
│   │   │   └── highlights.scm
│   │   ├── haxe/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── tags.scm
│   │   ├── hcl/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── hdl/
│   │   │   └── highlights.scm
│   │   ├── heex/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── helm/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── hocon/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── hoon/
│   │   │   └── highlights.scm
│   │   ├── hosts/
│   │   │   └── highlights.scm
│   │   ├── html/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── htmldjango/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── hurl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── hy/
│   │   │   └── highlights.scm
│   │   ├── hyprlang/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── iex/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── ini/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── ink/
│   │   │   └── highlights.scm
│   │   ├── inko/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── janet/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── java/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── javascript/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── jinja/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── jjconfig/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── jjdescription/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── jjrevset/
│   │   │   └── highlights.scm
│   │   ├── jjtemplate/
│   │   │   └── highlights.scm
│   │   ├── jq/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── jsdoc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── json/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── json-ld/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── json5/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── jsonc/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── jsonnet/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── jsx/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── julia/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── just/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── kcl/
│   │   │   └── highlights.scm
│   │   ├── kconfig/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── kdl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── klog/
│   │   │   └── highlights.scm
│   │   ├── koka/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── kotlin/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── koto/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── latex/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── ld/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── ldif/
│   │   │   └── highlights.scm
│   │   ├── lean/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── ledger/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── less/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── llvm/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── llvm-mir/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── llvm-mir-yaml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── log/
│   │   │   └── highlights.scm
│   │   ├── lpf/
│   │   │   └── highlights.scm
│   │   ├── lua/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── lua-format-string/
│   │   │   └── highlights.scm
│   │   ├── luap/
│   │   │   └── highlights.scm
│   │   ├── luau/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── mail/
│   │   │   ├── highlights.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── make/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── markdoc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── markdown/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── markdown-rustdoc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── markdown.inline/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── matlab/
│   │   │   ├── context.scm
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── mermaid/
│   │   │   └── highlights.scm
│   │   ├── meson/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── miseconfig/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── mojo/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── move/
│   │   │   └── highlights.scm
│   │   ├── msbuild/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── nasm/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── nearley/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── nestedtext/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── nginx/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── nickel/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── nim/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── nix/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── nu/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── nunjucks/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── ocaml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── ocaml-interface/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── odin/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── ohm/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── opencl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── openscad/
│   │   │   └── highlights.scm
│   │   ├── org/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── pascal/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── passwd/
│   │   │   └── highlights.scm
│   │   ├── pem/
│   │   │   └── highlights.scm
│   │   ├── penrose/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── perl/
│   │   │   ├── fold.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── pest/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── php/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── php-only/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── picat/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── pip-requirements/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── pkgbuild/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── pkl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── po/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── pod/
│   │   │   └── highlights.scm
│   │   ├── ponylang/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── powershell/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── prisma/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── prolog/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── properties/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── protobuf/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── proverif/
│   │   │   └── highlights.scm
│   │   ├── prql/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── ptx/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── pug/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── purescript/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── python/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── qml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── quarto/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── quint/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── r/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── racket/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── regex/
│   │   │   ├── highlights.scm
│   │   │   └── rainbows.scm
│   │   ├── rego/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── rescript/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── ripple/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── readme.md
│   │   │   └── tags.scm
│   │   ├── rmarkdown/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── robot/
│   │   │   └── highlights.scm
│   │   ├── robots.txt/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── ron/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── tags.scm
│   │   ├── rpmspec/
│   │   │   └── highlights.scm
│   │   ├── rshtml/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── rst/
│   │   │   ├── highlights.scm
│   │   │   └── tags.scm
│   │   ├── ruby/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── rust/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── rust-format-args/
│   │   │   └── highlights.scm
│   │   ├── rust-format-args-macro/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── sage/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── scala/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── scfg/
│   │   │   └── highlights.scm
│   │   ├── scheme/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── scss/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── shellcheckrc/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── slang/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── slint/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── slisp/
│   │   │   ├── highlights.scm
│   │   │   └── tags.scm
│   │   ├── smali/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── smithy/
│   │   │   └── highlights.scm
│   │   ├── sml/
│   │   │   └── highlights.scm
│   │   ├── snakemake/
│   │   │   ├── LICENSE
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── solidity/
│   │   │   ├── highlights.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── sourcepawn/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── spade/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── rainbows.scm
│   │   ├── spicedb/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── sql/
│   │   │   ├── highlights.scm
│   │   │   └── textobjects.scm
│   │   ├── sshclientconfig/
│   │   │   └── highlights.scm
│   │   ├── starlark/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── strace/
│   │   │   └── highlights.scm
│   │   ├── strictdoc/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── styx/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── supercollider/
│   │   │   ├── folds.scm
│   │   │   └── highlights.scm
│   │   ├── svelte/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── sway/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── swift/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── systemd/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── tags.scm
│   │   ├── systemverilog/
│   │   │   └── highlights.scm
│   │   ├── t32/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── tablegen/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── tact/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── task/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── tcl/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── teal/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── locals.scm
│   │   ├── templ/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── tera/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── textproto/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── textobjects.scm
│   │   ├── tfvars/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   └── injections.scm
│   │   ├── thrift/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── tilt/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── tlaplus/
│   │   │   ├── highlights.scm
│   │   │   └── locals.scm
│   │   ├── todotxt/
│   │   │   └── highlights.scm
│   │   ├── toml/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── tql/
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── tsq/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   ├── tsx/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── twig/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── typescript/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── typespec/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── typst/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── ungrammar/
│   │   │   └── highlights.scm
│   │   ├── unison/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── uxntal/
│   │   │   └── highlights.scm
│   │   ├── v/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── vala/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── textobjects.scm
│   │   ├── vento/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── verilog/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── vhdl/
│   │   │   └── highlights.scm
│   │   ├── vhs/
│   │   │   └── highlights.scm
│   │   ├── vim/
│   │   │   ├── folds.scm
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── vue/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── wast/
│   │   │   └── highlights.scm
│   │   ├── wat/
│   │   │   └── highlights.scm
│   │   ├── webc/
│   │   │   ├── highlights.scm
│   │   │   └── injections.scm
│   │   ├── werk/
│   │   │   └── highlights.scm
│   │   ├── wesl/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── wgsl/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── wikitext/
│   │   │   ├── folds.scm
│   │   │   └── highlights.scm
│   │   ├── wit/
│   │   │   ├── highlights.scm
│   │   │   └── indents.scm
│   │   ├── woodpecker-ci/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   ├── tags.scm
│   │   │   └── textobjects.scm
│   │   ├── wren/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── locals.scm
│   │   │   └── textobjects.scm
│   │   ├── xit/
│   │   │   └── highlights.scm
│   │   ├── xml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── xtc/
│   │   │   └── highlights.scm
│   │   ├── yaml/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   ├── rainbows.scm
│   │   │   └── textobjects.scm
│   │   ├── yara/
│   │   │   ├── highlights.scm
│   │   │   ├── injections.scm
│   │   │   └── locals.scm
│   │   ├── yuck/
│   │   │   ├── highlights.scm
│   │   │   ├── indents.scm
│   │   │   ├── injections.scm
│   │   │   └── rainbows.scm
│   │   └── zig/
│   │       ├── highlights.scm
│   │       ├── indents.scm
│   │       ├── injections.scm
│   │       └── textobjects.scm
│   ├── themes/
│   │   ├── README.md
│   │   ├── acid.toml
│   │   ├── acme.toml
│   │   ├── adwaita-dark.toml
│   │   ├── adwaita-light.toml
│   │   ├── akari-dawn.toml
│   │   ├── akari-night.toml
│   │   ├── amberwood.toml
│   │   ├── andromeda.toml
│   │   ├── ao.toml
│   │   ├── ashen.toml
│   │   ├── ashokai.toml
│   │   ├── ashokai_brahn.toml
│   │   ├── ashokai_evermoor.toml
│   │   ├── ashokai_urple.toml
│   │   ├── ataraxia.toml
│   │   ├── aura-dark-soft.toml
│   │   ├── aura-dark.toml
│   │   ├── aurara.toml
│   │   ├── autumn.toml
│   │   ├── autumn_night.toml
│   │   ├── ayu_dark.toml
│   │   ├── ayu_evolve.toml
│   │   ├── ayu_light.toml
│   │   ├── ayu_mirage.toml
│   │   ├── base16_default_dark.toml
│   │   ├── base16_default_light.toml
│   │   ├── base16_terminal.toml
│   │   ├── base16_transparent.toml
│   │   ├── beans.toml
│   │   ├── bogster.toml
│   │   ├── bogster_light.toml
│   │   ├── boo_berry.toml
│   │   ├── carbon.toml
│   │   ├── carbonfox.toml
│   │   ├── catppuccin_frappe.toml
│   │   ├── catppuccin_latte.toml
│   │   ├── catppuccin_macchiato.toml
│   │   ├── catppuccin_mocha.toml
│   │   ├── curzon.toml
│   │   ├── cyan_light.toml
│   │   ├── darcula-solid.toml
│   │   ├── darcula.toml
│   │   ├── dark-synthwave.toml
│   │   ├── dark_high_contrast.toml
│   │   ├── dark_plus.toml
│   │   ├── doom-one.toml
│   │   ├── doom_acario_dark.toml
│   │   ├── dracula.toml
│   │   ├── dracula_at_night.toml
│   │   ├── earl_grey.toml
│   │   ├── eiffel.toml
│   │   ├── eldritch.toml
│   │   ├── eldritch_transparent.toml
│   │   ├── emacs.toml
│   │   ├── everblush.toml
│   │   ├── everforest_dark.toml
│   │   ├── everforest_light.toml
│   │   ├── faded-prism.toml
│   │   ├── ferra.toml
│   │   ├── flatwhite.toml
│   │   ├── fleet_dark.toml
│   │   ├── flexoki_dark.toml
│   │   ├── flexoki_light.toml
│   │   ├── focus_nova.toml
│   │   ├── github_dark.toml
│   │   ├── github_dark_colorblind.toml
│   │   ├── github_dark_dimmed.toml
│   │   ├── github_dark_high_contrast.toml
│   │   ├── github_dark_tritanopia.toml
│   │   ├── github_light.toml
│   │   ├── github_light_colorblind.toml
│   │   ├── github_light_high_contrast.toml
│   │   ├── github_light_tritanopia.toml
│   │   ├── gruber-darker.toml
│   │   ├── gruvbox-material.toml
│   │   ├── gruvbox.toml
│   │   ├── gruvbox_dark_hard.toml
│   │   ├── gruvbox_dark_soft.toml
│   │   ├── gruvbox_light.toml
│   │   ├── gruvbox_light_hard.toml
│   │   ├── gruvbox_light_soft.toml
│   │   ├── gruvbox_material_dark_hard.toml
│   │   ├── gruvbox_material_dark_medium.toml
│   │   ├── gruvbox_material_dark_soft.toml
│   │   ├── gruvbox_material_light_hard.toml
│   │   ├── gruvbox_material_light_medium.toml
│   │   ├── gruvbox_material_light_soft.toml
│   │   ├── hazyland.toml
│   │   ├── heisenberg.toml
│   │   ├── hex_lavender.toml
│   │   ├── hex_poison.toml
│   │   ├── hex_steel.toml
│   │   ├── hex_toxic.toml
│   │   ├── horizon-dark.toml
│   │   ├── iceberg-dark.toml
│   │   ├── iceberg-light.toml
│   │   ├── ingrid.toml
│   │   ├── iroaseta.toml
│   │   ├── jellybeans.toml
│   │   ├── jetbrains_cyan_light.toml
│   │   ├── jetbrains_dark.toml
│   │   ├── kanagawa-dragon.toml
│   │   ├── kanagawa-lotus.toml
│   │   ├── kanagawa.toml
│   │   ├── kaolin-dark.toml
│   │   ├── kaolin-light.toml
│   │   ├── kaolin-valley-dark.toml
│   │   ├── kinda_nvim.toml
│   │   ├── kinda_nvim_light.toml
│   │   ├── lapis_aquamarine.toml
│   │   ├── licenses/
│   │   │   ├── akari.license
│   │   │   ├── ashen.license
│   │   │   ├── aura.LICENSE
│   │   │   ├── carbonfox.license
│   │   │   ├── dark-synthwave.license
│   │   │   ├── doom-one.LICENSE
│   │   │   ├── everforest.LICENSE
│   │   │   ├── faded-prism.LICENSE
│   │   │   ├── jetbrains_cyan_light.LICENSE
│   │   │   ├── kinda_nvim.LICENSE
│   │   │   ├── lapis_aquamarine.LICENSE
│   │   │   ├── modus_vivendi.LICENSE
│   │   │   ├── modus_vivendi_deuteranopia.LICENSE
│   │   │   ├── modus_vivendi_tinted.LICENSE
│   │   │   ├── modus_vivendi_tritanopia.LICENSE
│   │   │   ├── noctis.LICENSE
│   │   │   ├── poimandres.LICENSE
│   │   │   ├── serika-syntax.LICENSE
│   │   │   ├── sonokai.LICENSE
│   │   │   ├── starlight.LICENSE
│   │   │   ├── vesper.LICENSE
│   │   │   └── zenburn.license
│   │   ├── material_darker.toml
│   │   ├── material_deep_ocean.toml
│   │   ├── material_oceanic.toml
│   │   ├── material_palenight.toml
│   │   ├── meliora.toml
│   │   ├── mellow.toml
│   │   ├── merionette.toml
│   │   ├── modus_operandi.toml
│   │   ├── modus_operandi_deuteranopia.toml
│   │   ├── modus_operandi_tinted.toml
│   │   ├── modus_operandi_tritanopia.toml
│   │   ├── modus_vivendi.toml
│   │   ├── modus_vivendi_deuteranopia.toml
│   │   ├── modus_vivendi_tinted.toml
│   │   ├── modus_vivendi_tritanopia.toml
│   │   ├── molokai.toml
│   │   ├── monokai.toml
│   │   ├── monokai_aqua.toml
│   │   ├── monokai_pro.toml
│   │   ├── monokai_pro_machine.toml
│   │   ├── monokai_pro_octagon.toml
│   │   ├── monokai_pro_ristretto.toml
│   │   ├── monokai_pro_spectrum.toml
│   │   ├── monokai_soda.toml
│   │   ├── naysayer.toml
│   │   ├── neonotte.toml
│   │   ├── neonotte84.toml
│   │   ├── new_moon.toml
│   │   ├── night_owl.toml
│   │   ├── night_rider.toml
│   │   ├── nightfox.toml
│   │   ├── noctis.toml
│   │   ├── noctis_bordo.toml
│   │   ├── nord-night.toml
│   │   ├── nord.toml
│   │   ├── nord_light.toml
│   │   ├── nvchad_solarized_dark.toml
│   │   ├── nvim-dark.toml
│   │   ├── nyxvamp-obsidian.toml
│   │   ├── nyxvamp-radiance.toml
│   │   ├── nyxvamp-transparent.toml
│   │   ├── nyxvamp-veil.toml
│   │   ├── ocean-space.toml
│   │   ├── omicron_dark.toml
│   │   ├── omicron_light.toml
│   │   ├── onedark.toml
│   │   ├── onedark_vibrant.toml
│   │   ├── onedarker.toml
│   │   ├── onedarker_vibrant.toml
│   │   ├── onelight.toml
│   │   ├── papercolor-dark.toml
│   │   ├── papercolor-light.toml
│   │   ├── peachpuff.toml
│   │   ├── penumbra+.toml
│   │   ├── poimandres.toml
│   │   ├── poimandres_storm.toml
│   │   ├── pop-dark.toml
│   │   ├── rasmus.toml
│   │   ├── rose_pine.toml
│   │   ├── rose_pine_dawn.toml
│   │   ├── rose_pine_moon.toml
│   │   ├── seoul256-dark-hard.toml
│   │   ├── seoul256-dark-soft.toml
│   │   ├── seoul256-dark.toml
│   │   ├── seoul256-light-hard.toml
│   │   ├── seoul256-light-soft.toml
│   │   ├── seoul256-light.toml
│   │   ├── serika-dark.toml
│   │   ├── serika-light.toml
│   │   ├── sidra.toml
│   │   ├── snazzy.toml
│   │   ├── solarized_dark.toml
│   │   ├── solarized_light.toml
│   │   ├── sonokai.toml
│   │   ├── spacebones_light.toml
│   │   ├── starlight.toml
│   │   ├── sunset.toml
│   │   ├── term16_dark.toml
│   │   ├── term16_light.toml
│   │   ├── tokyonight.toml
│   │   ├── tokyonight_day.toml
│   │   ├── tokyonight_moon.toml
│   │   ├── tokyonight_storm.toml
│   │   ├── ttox.toml
│   │   ├── ttox_soft.toml
│   │   ├── varua.toml
│   │   ├── vesper-transparent.toml
│   │   ├── vesper.toml
│   │   ├── vim_dark_high_contrast.toml
│   │   ├── vintage.toml
│   │   ├── voxed.toml
│   │   ├── wolf-alabaster-dark-bg.toml
│   │   ├── wolf-alabaster-dark-mono.toml
│   │   ├── wolf-alabaster-dark.toml
│   │   ├── wolf-alabaster-light-bg.toml
│   │   ├── wolf-alabaster-light-mono.toml
│   │   ├── wolf-alabaster-light.toml
│   │   ├── yellowed.toml
│   │   ├── yo.toml
│   │   ├── yo_berry.toml
│   │   ├── yo_light.toml
│   │   ├── zed_onedark.toml
│   │   ├── zed_onelight.toml
│   │   └── zenburn.toml
│   └── tutor
├── rust-toolchain.toml
├── rustfmt.toml
├── shell.nix
├── theme.toml
└── xtask/
    ├── Cargo.toml
    └── src/
        ├── docgen.rs
        ├── helpers.rs
        ├── main.rs
        └── path.rs
Download .txt
Showing preview only (456K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5467 symbols across 230 files)

FILE: helix-core/src/auto_pairs.rs
  constant DEFAULT_PAIRS (line 10) | pub const DEFAULT_PAIRS: &[(char, char)] = &[
  type AutoPairs (line 22) | pub struct AutoPairs(HashMap<char, Pair>);
    method new (line 78) | pub fn new<'a, V, A>(pairs: V) -> Self
    method get (line 98) | pub fn get(&self, ch: char) -> Option<&Pair> {
  type Pair (line 26) | pub struct Pair {
    method same (line 33) | pub fn same(&self) -> bool {
    method should_close (line 38) | pub fn should_close(&self, doc: &Rope, range: &Range) -> bool {
    method next_is_not_alpha (line 48) | pub fn next_is_not_alpha(doc: &Rope, range: &Range) -> bool {
    method prev_is_not_alpha (line 54) | pub fn prev_is_not_alpha(doc: &Rope, range: &Range) -> bool {
    method from (line 62) | fn from(&(open, close): &(char, char)) -> Self {
    method from (line 68) | fn from((open, close): (&char, &char)) -> Self {
  method default (line 104) | fn default() -> Self {
  function hook (line 123) | pub fn hook(doc: &Rope, selection: &Selection, ch: char, pairs: &AutoPai...
  function prev_char (line 140) | fn prev_char(doc: &Rope, pos: usize) -> Option<char> {
  function get_next_range (line 149) | fn get_next_range(doc: &Rope, start_range: &Range, offset: usize, len_in...
  function handle_open (line 265) | fn handle_open(doc: &Rope, selection: &Selection, pair: &Pair) -> Transa...
  function handle_close (line 304) | fn handle_close(doc: &Rope, selection: &Selection, pair: &Pair) -> Trans...
  function handle_same (line 336) | fn handle_same(doc: &Rope, selection: &Selection, pair: &Pair) -> Transa...

FILE: helix-core/src/case_conversion.rs
  function to_pascal_case (line 5) | pub fn to_pascal_case(text: impl Iterator<Item = char>) -> Tendril {
  function to_pascal_case_with (line 11) | pub fn to_pascal_case_with(text: impl Iterator<Item = char>, buf: &mut T...
  function to_upper_case_with (line 28) | pub fn to_upper_case_with(text: impl Iterator<Item = char>, buf: &mut Te...
  function to_lower_case_with (line 36) | pub fn to_lower_case_with(text: impl Iterator<Item = char>, buf: &mut Te...
  function to_camel_case (line 44) | pub fn to_camel_case(text: impl Iterator<Item = char>) -> Tendril {
  function to_camel_case_with (line 49) | pub fn to_camel_case_with(mut text: impl Iterator<Item = char>, buf: &mu...

FILE: helix-core/src/chars.rs
  type CharCategory (line 6) | pub enum CharCategory {
  function categorize_char (line 15) | pub fn categorize_char(ch: char) -> CharCategory {
  function char_is_line_ending (line 31) | pub fn char_is_line_ending(ch: char) -> bool {
  function char_is_whitespace (line 38) | pub fn char_is_whitespace(ch: char) -> bool {
  function char_is_punctuation (line 65) | pub fn char_is_punctuation(ch: char) -> bool {
  function char_is_word (line 84) | pub fn char_is_word(ch: char) -> bool {
  function test_categorize (line 93) | fn test_categorize() {

FILE: helix-core/src/command_line.rs
  function split (line 35) | pub fn split(line: &str) -> (&str, &str, bool) {
  type Flag (line 52) | pub struct Flag {
    constant DEFAULT (line 79) | pub const DEFAULT: Self = Self {
  type Signature (line 95) | pub struct Signature {
    constant DEFAULT (line 147) | pub const DEFAULT: Self = Self {
    method check_positional_count (line 154) | fn check_positional_count(&self, actual: usize) -> Result<(), ParseArg...
  type ParseArgsError (line 165) | pub enum ParseArgsError<'a> {
  function fmt (line 192) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type ExpansionKind (line 243) | pub enum ExpansionKind {
    constant VARIANTS (line 259) | pub const VARIANTS: &'static [Self] = &[Self::Variable, Self::Unicode,...
    method as_str (line 261) | pub const fn as_str(&self) -> &'static str {
    method from_kind (line 269) | pub fn from_kind(name: &str) -> Option<Self> {
  type Quote (line 280) | pub enum Quote {
    method char (line 286) | pub const fn char(&self) -> char {
    method escape (line 294) | pub const fn escape(&self) -> &'static str {
  type TokenKind (line 307) | pub enum TokenKind {
  type Token (line 341) | pub struct Token<'a> {
  function empty_at (line 361) | pub fn empty_at(content_start: usize) -> Self {
  function expand (line 370) | pub fn expand(content: impl Into<Cow<'a, str>>) -> Self {
  type Tokenizer (line 381) | pub struct Tokenizer<'a> {
  function new (line 391) | pub fn new(input: &'a str, validate: bool) -> Self {
  function pos (line 400) | pub fn pos(&self) -> usize {
  function rest (line 409) | pub fn rest(&mut self) -> Option<Token<'a>> {
  function byte (line 426) | fn byte(&self) -> Option<u8> {
  function peek_byte (line 430) | fn peek_byte(&self) -> Option<u8> {
  function prev_byte (line 434) | fn prev_byte(&self) -> Option<u8> {
  function skip_blanks (line 440) | fn skip_blanks(&mut self) {
  function parse_unquoted (line 446) | fn parse_unquoted(&mut self) -> Cow<'a, str> {
  function parse_quoted (line 491) | fn parse_quoted(&mut self, quote: u8) -> (Cow<'a, str>, bool) {
  function parse_percent_token (line 532) | pub fn parse_percent_token(&mut self) -> Option<Result<Token<'a>, ParseA...
  function parse_quoted_balanced (line 605) | fn parse_quoted_balanced(&mut self, open: u8, close: u8) -> (Cow<'a, str...
  type Item (line 644) | type Item = Result<Token<'a>, ParseArgsError<'a>>;
  method next (line 646) | fn next(&mut self) -> Option<Self::Item> {
  type CompletionState (line 696) | pub enum CompletionState {
  type Args (line 731) | pub struct Args<'a> {
  method default (line 745) | fn default() -> Self {
  function new (line 758) | pub fn new(signature: Signature, validate: bool) -> Self {
  function read_token (line 773) | pub fn read_token<'p>(
  function parse (line 793) | pub fn parse<M>(
  function push (line 821) | pub fn push(&mut self, arg: Cow<'a, str>) -> Result<(), ParseArgsError<'...
  function finish (line 875) | fn finish(&self) -> Result<(), ParseArgsError<'a>> {
  function flag_awaiting_argument (line 889) | fn flag_awaiting_argument(&self) -> Option<Flag> {
  function completion_state (line 900) | pub fn completion_state(&self) -> CompletionState {
  function len (line 907) | pub fn len(&self) -> usize {
  function is_empty (line 915) | pub fn is_empty(&self) -> bool {
  function first (line 920) | pub fn first(&'a self) -> Option<&'a str> {
  function get (line 925) | pub fn get(&'a self, index: usize) -> Option<&'a str> {
  function join (line 931) | pub fn join(&self, sep: &str) -> String {
  function iter (line 936) | pub fn iter(&self) -> slice::Iter<'_, Cow<'_, str>> {
  function get_flag (line 943) | pub fn get_flag(&'a self, name: &'static str) -> Option<&'a str> {
  function has_flag (line 963) | pub fn has_flag(&self, name: &'static str) -> bool {
  type Output (line 982) | type Output = str;
  function index (line 984) | fn index(&self, index: usize) -> &Self::Output {
  type Item (line 991) | type Item = Cow<'a, str>;
  type IntoIter (line 992) | type IntoIter = vec::IntoIter<Cow<'a, str>>;
  method into_iter (line 994) | fn into_iter(self) -> Self::IntoIter {
  type Item (line 1001) | type Item = &'i Cow<'a, str>;
  type IntoIter (line 1002) | type IntoIter = slice::Iter<'i, Cow<'a, str>>;
  method into_iter (line 1004) | fn into_iter(self) -> Self::IntoIter {
  function assert_tokens (line 1014) | fn assert_tokens(input: &str, expected: &[&str]) {
  function assert_incomplete_tokens (line 1024) | fn assert_incomplete_tokens(input: &str, expected: &[&str]) {
  function tokenize_unquoted (line 1039) | fn tokenize_unquoted() {
  function tokenize_backslash_unix (line 1050) | fn tokenize_backslash_unix() {
  function tokenize_backslash (line 1066) | fn tokenize_backslash() {
  function tokenize_quoting (line 1072) | fn tokenize_quoting() {
  function tokenize_percent (line 1086) | fn tokenize_percent() {
  function parse_signature (line 1126) | fn parse_signature<'a>(
  function signature_validation_positionals (line 1134) | fn signature_validation_positionals() {
  function flags (line 1160) | fn flags() {
  function raw_after (line 1227) | fn raw_after() {

FILE: helix-core/src/comment.rs
  constant DEFAULT_COMMENT_TOKEN (line 13) | pub const DEFAULT_COMMENT_TOKEN: &str = "#";
  function get_comment_token (line 16) | pub fn get_comment_token<'a, S: AsRef<str>>(
  function find_line_comment (line 40) | fn find_line_comment(
  function toggle_line_comments (line 82) | pub fn toggle_line_comments(doc: &Rope, selection: &Selection, token: Op...
  type CommentChange (line 120) | pub enum CommentChange {
  function find_block_comments (line 142) | pub fn find_block_comments(
  function create_block_comment_transaction (line 227) | pub fn create_block_comment_transaction(
  function toggle_block_comments (line 299) | pub fn toggle_block_comments(
  function split_lines_of_selection (line 314) | pub fn split_lines_of_selection(text: RopeSlice, selection: &Selection) ...
  function not_commented (line 336) | fn not_commented() {
  function is_commented (line 348) | fn is_commented() {
  function comment (line 364) | fn comment() {
  function uncomment (line 377) | fn uncomment() {
  function uncomment_0_margin_comments (line 390) | fn uncomment_0_margin_comments() {
  function uncomment_0_margin_comments_with_no_space (line 403) | fn uncomment_0_margin_comments_with_no_space() {
  function test_find_block_comments (line 416) | fn test_find_block_comments() {
  function test_get_comment_with_char_boundaries (line 463) | fn test_get_comment_with_char_boundaries() {
  function test_use_longest_comment (line 478) | fn test_use_longest_comment() {

FILE: helix-core/src/completion.rs
  type CompletionItem (line 6) | pub struct CompletionItem {
  type CompletionProvider (line 16) | pub enum CompletionProvider {
    method from (line 23) | fn from(id: LanguageServerId) -> Self {

FILE: helix-core/src/config.rs
  function default_lang_config (line 7) | pub fn default_lang_config() -> Configuration {
  function default_lang_loader (line 14) | pub fn default_lang_loader() -> Loader {
  type LanguageLoaderError (line 19) | pub enum LanguageLoaderError {
    method fmt (line 26) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  function user_lang_config (line 40) | pub fn user_lang_config() -> Result<Configuration, toml::de::Error> {
  function user_lang_loader (line 45) | pub fn user_lang_loader() -> Result<Loader, LanguageLoaderError> {

FILE: helix-core/src/diagnostic.rs
  type Severity (line 11) | pub enum Severity {
  type NumberOrString (line 20) | pub enum NumberOrString {
  type DiagnosticTag (line 26) | pub enum DiagnosticTag {
  type Diagnostic (line 33) | pub struct Diagnostic {
    method severity (line 95) | pub fn severity(&self) -> Severity {
  type DiagnosticProvider (line 53) | pub enum DiagnosticProvider {
    method language_server_id (line 71) | pub fn language_server_id(&self) -> Option<LanguageServerId> {
  method fmt (line 88) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {

FILE: helix-core/src/diff.rs
  type ChangeSetBuilder (line 9) | struct ChangeSetBuilder<'a> {
  function process_hunk (line 19) | fn process_hunk(&mut self, before: Range<u32>, after: Range<u32>) {
  function finish (line 112) | fn finish(mut self) -> ChangeSet {
  type RopeLines (line 123) | struct RopeLines<'a>(RopeSlice<'a>);
  type Token (line 126) | type Token = RopeSlice<'a>;
  type Tokenizer (line 127) | type Tokenizer = ropey::iter::Lines<'a>;
  function tokenize (line 129) | fn tokenize(&self) -> Self::Tokenizer {
  function estimate_tokens (line 133) | fn estimate_tokens(&self) -> u32 {
  function compare_ropes (line 141) | pub fn compare_ropes(before: &Rope, after: &Rope) -> Transaction {
  function test_identity (line 175) | fn test_identity(a: &str, b: &str) {
  function equal_files (line 192) | fn equal_files() {
  function trailing_newline (line 197) | fn trailing_newline() {
  function new_file (line 203) | fn new_file() {
  function deleted_file (line 208) | fn deleted_file() {

FILE: helix-core/src/doc_formatter.rs
  type GraphemeSource (line 30) | pub enum GraphemeSource {
    method is_virtual (line 44) | pub fn is_virtual(self) -> bool {
    method is_eof (line 48) | pub fn is_eof(self) -> bool {
    method doc_chars (line 53) | pub fn doc_chars(self) -> usize {
  type FormattedGrapheme (line 62) | pub struct FormattedGrapheme<'a> {
  function is_virtual (line 73) | pub fn is_virtual(&self) -> bool {
  function doc_chars (line 77) | pub fn doc_chars(&self) -> usize {
  function is_whitespace (line 81) | pub fn is_whitespace(&self) -> bool {
  function width (line 85) | pub fn width(&self) -> usize {
  function is_word_boundary (line 89) | pub fn is_word_boundary(&self) -> bool {
  type GraphemeWithSource (line 95) | struct GraphemeWithSource<'a> {
  function new (line 101) | fn new(
  function placeholder (line 112) | fn placeholder() -> Self {
  function doc_chars (line 119) | fn doc_chars(&self) -> usize {
  function is_whitespace (line 123) | fn is_whitespace(&self) -> bool {
  function is_newline (line 127) | fn is_newline(&self) -> bool {
  function is_eof (line 131) | fn is_eof(&self) -> bool {
  function width (line 135) | fn width(&self) -> usize {
  function is_word_boundary (line 139) | fn is_word_boundary(&self) -> bool {
  type TextFormat (line 145) | pub struct TextFormat {
  method default (line 158) | fn default() -> Self {
  type DocumentFormatter (line 173) | pub struct DocumentFormatter<'t> {
  function new_at_prev_checkpoint (line 208) | pub fn new_at_prev_checkpoint(
  function next_inline_annotation_grapheme (line 235) | fn next_inline_annotation_grapheme(
  function advance_grapheme (line 261) | fn advance_grapheme(&mut self, col: usize, char_pos: usize) -> Option<Gr...
  function wrap_word (line 294) | fn wrap_word(&mut self) -> usize {
  function peek_grapheme (line 347) | fn peek_grapheme(&mut self, col: usize, char_pos: usize) -> Option<&Grap...
  function next_grapheme (line 354) | fn next_grapheme(&mut self, col: usize, char_pos: usize) -> Option<Graph...
  function advance_to_next_word (line 359) | fn advance_to_next_word(&mut self) {
  function next_char_pos (line 423) | pub fn next_char_pos(&self) -> usize {
  function next_visual_pos (line 427) | pub fn next_visual_pos(&self) -> Position {
  type Item (line 433) | type Item = FormattedGrapheme<'t>;
  method next (line 435) | fn next(&mut self) -> Option<Self::Item> {

FILE: helix-core/src/doc_formatter/test.rs
  method new_test (line 5) | fn new_test(softwrap: bool) -> Self {
  function collect_to_str (line 21) | fn collect_to_str(&mut self) -> String {
  function softwrap_text (line 48) | fn softwrap_text(text: &str) -> String {
  function basic_softwrap (line 59) | fn basic_softwrap() {
  function softwrap_indentation (line 74) | fn softwrap_indentation() {
  function long_word_softwrap (line 86) | fn long_word_softwrap() {
  function softwrap_multichar_grapheme (line 106) | fn softwrap_multichar_grapheme() {
  function softwrap_text_at_text_width (line 113) | fn softwrap_text_at_text_width(text: &str) -> String {
  function long_word_softwrap_text_width (line 122) | fn long_word_softwrap_text_width() {
  function overlay_text (line 129) | fn overlay_text(text: &str, char_pos: usize, softwrap: bool, overlays: &...
  function overlay (line 140) | fn overlay() {
  function annotate_text (line 165) | fn annotate_text(text: &str, softwrap: bool, annotations: &[InlineAnnota...
  function annotation (line 176) | fn annotation() {
  function annotation_and_overlay (line 192) | fn annotation_and_overlay() {

FILE: helix-core/src/editor_config.rs
  type EditorConfig (line 29) | pub struct EditorConfig {
    method find (line 44) | pub fn find(path: &Path) -> Self {
    method from_pairs (line 92) | fn from_pairs(pairs: Pairs) -> Self {
  type Pairs (line 180) | type Pairs = HashMap<Box<str>, Box<str>>;
  type Section (line 183) | struct Section {
  type Ini (line 189) | struct Ini {
  type Err (line 195) | type Err = globset::Error;
  method from_str (line 197) | fn from_str(source: &str) -> Result<Self, Self::Err> {
  function is_glob_relative (line 258) | fn is_glob_relative(source: &str) -> bool {
  function is_glob_relative_test (line 278) | fn is_glob_relative_test() {
  function editor_config (line 284) | fn editor_config(path: impl AsRef<Path>, source: &str) -> EditorConfig {
  function parse_test (line 299) | fn parse_test() {

FILE: helix-core/src/fuzzy.rs
  type LazyMutex (line 7) | pub struct LazyMutex<T> {
  function new (line 13) | pub const fn new(init: fn() -> T) -> Self {
  function lock (line 20) | pub fn lock(&self) -> impl DerefMut<Target = T> + '_ {
  function fuzzy_match (line 31) | pub fn fuzzy_match<T: AsRef<str>>(

FILE: helix-core/src/graphemes.rs
  function tab_width_at (line 19) | pub fn tab_width_at(visual_x: usize, tab_width: u16) -> usize {
  type Grapheme (line 24) | pub enum Grapheme<'a> {
  function new_decoration (line 31) | pub fn new_decoration(g: &'static str) -> Grapheme<'a> {
  function new (line 36) | pub fn new(g: GraphemeStr<'a>, visual_x: usize, tab_width: u16) -> Graph...
  function change_position (line 46) | pub fn change_position(&mut self, visual_x: usize, tab_width: u16) {
  function width (line 54) | pub fn width(&self) -> usize {
  function is_whitespace (line 66) | pub fn is_whitespace(&self) -> bool {
  function is_word_boundary (line 74) | pub fn is_word_boundary(&self) -> bool {
  method fmt (line 80) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  function grapheme_width (line 97) | pub fn grapheme_width(g: &str) -> usize {
  function nth_prev_grapheme_boundary (line 126) | pub fn nth_prev_grapheme_boundary(slice: RopeSlice, char_idx: usize, n: ...
  function prev_grapheme_boundary (line 169) | pub fn prev_grapheme_boundary(slice: RopeSlice, char_idx: usize) -> usize {
  function nth_next_grapheme_boundary (line 174) | pub fn nth_next_grapheme_boundary(slice: RopeSlice, char_idx: usize, n: ...
  function next_grapheme_boundary (line 217) | pub fn next_grapheme_boundary(slice: RopeSlice, char_idx: usize) -> usize {
  function ensure_grapheme_boundary_next (line 225) | pub fn ensure_grapheme_boundary_next(slice: RopeSlice, char_idx: usize) ...
  function ensure_grapheme_boundary_prev (line 237) | pub fn ensure_grapheme_boundary_prev(slice: RopeSlice, char_idx: usize) ...
  type GraphemeStr (line 247) | pub struct GraphemeStr<'a> {
  constant MASK_OWNED (line 254) | const MASK_OWNED: u32 = 1 << 31;
  function compute_len (line 256) | fn compute_len(&self) -> usize {
  type Target (line 262) | type Target = str;
  method deref (line 263) | fn deref(&self) -> &Self::Target {
  method drop (line 272) | fn drop(&mut self) {
  function from (line 286) | fn from(g: &'a str) -> Self {
  function from (line 296) | fn from(g: String) -> Self {
  function from (line 308) | fn from(g: Cow<'a, str>) -> Self {
  function eq (line 317) | fn eq(&self, other: &T) -> bool {
  function eq (line 322) | fn eq(&self, other: &str) -> bool {
  method fmt (line 328) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  method fmt (line 333) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  method clone (line 338) | fn clone(&self) -> Self {

FILE: helix-core/src/history.rs
  type State (line 8) | pub struct State {
  type History (line 51) | pub struct History {
    method commit_revision (line 85) | pub fn commit_revision(&mut self, transaction: &Transaction, original:...
    method commit_revision_at_timestamp (line 89) | pub fn commit_revision_at_timestamp(
    method current_revision (line 113) | pub fn current_revision(&self) -> usize {
    method at_root (line 118) | pub const fn at_root(&self) -> bool {
    method changes_since (line 124) | pub fn changes_since(&self, revision: usize) -> Option<Transaction> {
    method undo (line 138) | pub fn undo(&mut self) -> Option<&Transaction> {
    method redo (line 149) | pub fn redo(&mut self) -> Option<&Transaction> {
    method last_edit_pos (line 158) | pub fn last_edit_pos(&self) -> Option<usize> {
    method lowest_common_ancestor (line 183) | fn lowest_common_ancestor(&self, mut a: usize, mut b: usize) -> usize {
    method path_up (line 203) | fn path_up(&self, mut n: usize, a: usize) -> Vec<usize> {
    method jump_to (line 213) | fn jump_to(&mut self, to: usize) -> Vec<Transaction> {
    method jump_backward (line 227) | fn jump_backward(&mut self, delta: usize) -> Vec<Transaction> {
    method jump_forward (line 232) | fn jump_forward(&mut self, delta: usize) -> Vec<Transaction> {
    method revision_closer_to_instant (line 241) | fn revision_closer_to_instant(&self, i: usize, instant: Instant) -> us...
    method jump_instant (line 253) | fn jump_instant(&mut self, instant: Instant) -> Vec<Transaction> {
    method jump_duration_backward (line 270) | fn jump_duration_backward(&mut self, duration: Duration) -> Vec<Transa...
    method jump_duration_forward (line 279) | fn jump_duration_forward(&mut self, duration: Duration) -> Vec<Transac...
    method earlier (line 287) | pub fn earlier(&mut self, uk: UndoKind) -> Vec<Transaction> {
    method later (line 296) | pub fn later(&mut self, uk: UndoKind) -> Vec<Transaction> {
  type Revision (line 58) | struct Revision {
  method default (line 69) | fn default() -> Self {
  type UndoKind (line 307) | pub enum UndoKind {
    type Err (line 373) | type Err = String;
    method from_str (line 375) | fn from_str(s: &str) -> Result<Self, Self::Err> {
  constant TIME_UNITS (line 313) | const TIME_UNITS: &[(&[&str], &str, u64)] = &[
  function parse_human_duration (line 334) | fn parse_human_duration(s: &str) -> Result<Duration, String> {
  function test_undo_redo (line 393) | fn test_undo_redo() {
  function test_earlier_later (line 445) | fn test_earlier_later() {
  function test_parse_undo_kind (line 550) | fn test_parse_undo_kind() {

FILE: helix-core/src/increment/date_time.rs
  function increment (line 10) | pub fn increment(selected_text: &str, amount: i64) -> Option<String> {
  type Format (line 76) | struct Format {
    method new (line 84) | fn new(fmt: &'static str) -> Self {
  method eq (line 123) | fn eq(&self, other: &Self) -> bool {
  type DateField (line 131) | struct DateField {
    method from_specifier (line 138) | fn from_specifier(specifier: &str) -> Option<Self> {
  type DateUnit (line 226) | enum DateUnit {
    method is_date (line 237) | fn is_date(self) -> bool {
    method is_time (line 241) | fn is_time(self) -> bool {
  function test_increment_date_times (line 254) | fn test_increment_date_times() {
  function test_invalid_date_times (line 294) | fn test_invalid_date_times() {

FILE: helix-core/src/increment/integer.rs
  constant SEPARATOR (line 1) | const SEPARATOR: char = '_';
  function increment (line 14) | pub fn increment(selected_text: &str, amount: i64) -> Option<String> {
  function test_increment_basic_decimal_numbers (line 120) | fn test_increment_basic_decimal_numbers() {
  function test_increment_basic_hexadecimal_numbers (line 139) | fn test_increment_basic_hexadecimal_numbers() {
  function test_increment_basic_octal_numbers (line 158) | fn test_increment_basic_octal_numbers() {
  function test_increment_basic_binary_numbers (line 178) | fn test_increment_basic_binary_numbers() {
  function test_increment_with_separators (line 212) | fn test_increment_with_separators() {
  function test_leading_and_trailing_separators_arent_a_match (line 230) | fn test_leading_and_trailing_separators_arent_a_match() {

FILE: helix-core/src/increment/mod.rs
  function integer (line 4) | pub fn integer(selected_text: &str, amount: i64) -> Option<String> {
  function date_time (line 8) | pub fn date_time(selected_text: &str, amount: i64) -> Option<String> {

FILE: helix-core/src/indent.rs
  type IndentStyle (line 22) | pub enum IndentStyle {
    method from_str (line 37) | pub fn from_str(indent: &str) -> Self {
    method as_str (line 49) | pub fn as_str(&self) -> &'static str {
    method indent_width (line 64) | pub fn indent_width(&self, tab_width: usize) -> usize {
  constant INDENTS (line 28) | const INDENTS: &str = "                ";
  constant MAX_INDENT (line 29) | pub const MAX_INDENT: u8 = 16;
  function auto_detect_indent_style (line 76) | pub fn auto_detect_indent_style(document_text: &Rope) -> Option<IndentSt...
  function indent_level_for_line (line 197) | pub fn indent_level_for_line(line: RopeSlice, tab_width: usize, indent_w...
  function whitespace_with_same_width (line 211) | fn whitespace_with_same_width(text: RopeSlice) -> String {
  function normalize_indentation (line 229) | pub fn normalize_indentation(
  function add_indent_level (line 256) | fn add_indent_level(
  function is_first_in_line (line 295) | fn is_first_in_line(node: &Node, text: RopeSlice, new_line_byte_pos: Opt...
  type IndentQueryPredicates (line 309) | pub struct IndentQueryPredicates {
    method are_satisfied (line 316) | fn are_satisfied(
  type IndentQuery (line 363) | pub struct IndentQuery {
    method new (line 378) | pub fn new(grammar: Grammar, source: &str) -> Result<Self, tree_sitter...
  type Indentation (line 461) | pub struct Indentation<'a> {
  function add_line (line 475) | fn add_line(&mut self, added: Indentation<'a>) {
  function add_capture (line 494) | fn add_capture(&mut self, added: IndentCaptureType<'a>) {
  function net_indent (line 523) | fn net_indent(&self) -> isize {
  function relative_indent (line 528) | fn relative_indent(
  function to_string (line 551) | pub fn to_string(&self, indent_style: &IndentStyle, tab_width: usize) ->...
  type IndentCapture (line 564) | struct IndentCapture<'a> {
  type IndentCaptureType (line 569) | enum IndentCaptureType<'a> {
  function default_scope (line 579) | fn default_scope(&self) -> IndentScope {
  type IndentScope (line 591) | enum IndentScope {
  type ExtendCapture (line 601) | enum ExtendCapture {
  type IndentQueryResult (line 610) | struct IndentQueryResult<'a> {
  function get_node_start_line (line 615) | fn get_node_start_line(text: RopeSlice, node: &Node, new_line_byte_pos: ...
  function get_node_end_line (line 623) | fn get_node_end_line(text: RopeSlice, node: &Node, new_line_byte_pos: Op...
  function query_indents (line 632) | fn query_indents<'a>(
  function extend_nodes (line 745) | fn extend_nodes<'a>(
  function init_indent_query (line 815) | fn init_indent_query<'a, 'b>(
  function treesitter_indent_for_pos (line 911) | pub fn treesitter_indent_for_pos<'a>(
  function indent_for_newline (line 1003) | pub fn indent_for_newline(
  function get_scopes (line 1089) | pub fn get_scopes<'a>(syntax: Option<&'a Syntax>, text: RopeSlice, pos: ...
  function test_indent_level (line 1120) | fn test_indent_level() {
  function test_large_indent_level (line 1142) | fn test_large_indent_level() {
  function add_capture (line 1158) | fn add_capture() {
  function test_relative_indent (line 1279) | fn test_relative_indent() {

FILE: helix-core/src/lib.rs
  type Tendril (line 53) | pub type Tendril = SmartString<smartstring::LazyCompact>;

FILE: helix-core/src/line_ending.rs
  constant NATIVE_LINE_ENDING (line 4) | pub const NATIVE_LINE_ENDING: LineEnding = LineEnding::Crlf;
  constant NATIVE_LINE_ENDING (line 6) | pub const NATIVE_LINE_ENDING: LineEnding = LineEnding::LF;
  type LineEnding (line 10) | pub enum LineEnding {
    method len_chars (line 29) | pub const fn len_chars(&self) -> usize {
    method as_str (line 37) | pub const fn as_str(&self) -> &'static str {
    method from_char (line 57) | pub const fn from_char(ch: char) -> Option<LineEnding> {
    method from_str (line 82) | pub fn from_str(g: &str) -> Option<LineEnding> {
    method from_rope_slice (line 104) | pub fn from_rope_slice(g: &RopeSlice) -> Option<LineEnding> {
  function str_is_line_ending (line 118) | pub fn str_is_line_ending(s: &str) -> bool {
  function rope_is_line_ending (line 123) | pub fn rope_is_line_ending(r: RopeSlice) -> bool {
  function auto_detect_line_ending (line 128) | pub fn auto_detect_line_ending(doc: &Rope) -> Option<LineEnding> {
  function get_line_ending (line 143) | pub fn get_line_ending(line: &RopeSlice) -> Option<LineEnding> {
  function get_line_ending_of_str (line 164) | pub fn get_line_ending_of_str(line: &str) -> Option<LineEnding> {
  function get_line_ending_of_str (line 176) | pub fn get_line_ending_of_str(line: &str) -> Option<LineEnding> {
  function line_end_char_index (line 199) | pub fn line_end_char_index(slice: &RopeSlice, line: usize) -> usize {
  function line_end_byte_index (line 206) | pub fn line_end_byte_index(slice: &RopeSlice, line: usize) -> usize {
  function line_without_line_ending (line 214) | pub fn line_without_line_ending<'a>(slice: &'a RopeSlice, line_idx: usiz...
  function rope_end_without_line_ending (line 222) | pub fn rope_end_without_line_ending(slice: &RopeSlice) -> usize {
  function line_ending_autodetect (line 231) | fn line_ending_autodetect() {
  function str_to_line_ending (line 264) | fn str_to_line_ending() {
  function rope_slice_to_line_ending (line 273) | fn rope_slice_to_line_ending() {
  function get_line_ending_rope_slice (line 292) | fn get_line_ending_rope_slice() {
  function get_line_ending_str (line 302) | fn get_line_ending_str() {
  function line_end_char_index_rope_slice (line 312) | fn line_end_char_index_rope_slice() {

FILE: helix-core/src/match_brackets.rs
  constant MAX_PLAINTEXT_SCAN (line 9) | const MAX_PLAINTEXT_SCAN: usize = 10000;
  constant MATCH_LIMIT (line 10) | const MATCH_LIMIT: usize = 16;
  constant BRACKETS (line 12) | pub const BRACKETS: [(char, char); 9] = [
  constant PAIRS (line 27) | pub const PAIRS: [(char, char); BRACKETS.len() + 4] = {
  function find_matching_bracket (line 55) | pub fn find_matching_bracket(syntax: &Syntax, doc: RopeSlice, pos: usize...
  function find_matching_bracket_fuzzy (line 73) | pub fn find_matching_bracket_fuzzy(syntax: &Syntax, doc: RopeSlice, pos:...
  function find_pair (line 77) | fn find_pair(
  function find_matching_bracket_plaintext (line 169) | pub fn find_matching_bracket_plaintext(doc: RopeSlice, cursor_pos: usize...
  function get_pair (line 223) | pub fn get_pair(ch: char) -> (char, char) {
  function is_open_bracket (line 231) | pub fn is_open_bracket(ch: char) -> bool {
  function is_close_bracket (line 235) | pub fn is_close_bracket(ch: char) -> bool {
  function is_valid_bracket (line 239) | pub fn is_valid_bracket(ch: char) -> bool {
  function is_open_pair (line 243) | pub fn is_open_pair(ch: char) -> bool {
  function is_close_pair (line 247) | pub fn is_close_pair(ch: char) -> bool {
  function is_valid_pair (line 251) | pub fn is_valid_pair(ch: char) -> bool {
  function as_close_pair (line 257) | fn as_close_pair(doc: RopeSlice, node: &Node) -> Option<(char, char)> {
  function find_pair_end (line 269) | fn find_pair_end(
  function as_open_pair (line 299) | fn as_open_pair(doc: RopeSlice, node: &Node) -> Option<(char, char)> {
  function as_char (line 307) | fn as_char(doc: RopeSlice, node: &Node) -> Option<(usize, char)> {
  function find_matching_bracket_empty_file (line 321) | fn find_matching_bracket_empty_file() {
  function test_find_matching_bracket_current_line_plaintext (line 327) | fn test_find_matching_bracket_current_line_plaintext() {

FILE: helix-core/src/movement.rs
  type Direction (line 23) | pub enum Direction {
  type Movement (line 29) | pub enum Movement {
  function move_horizontally (line 34) | pub fn move_horizontally(
  function move_vertically_visual (line 55) | pub fn move_vertically_visual(
  function move_vertically (line 106) | pub fn move_vertically(
  function move_next_word_start (line 168) | pub fn move_next_word_start(slice: RopeSlice, range: Range, count: usize...
  function move_next_word_end (line 172) | pub fn move_next_word_end(slice: RopeSlice, range: Range, count: usize) ...
  function move_prev_word_start (line 176) | pub fn move_prev_word_start(slice: RopeSlice, range: Range, count: usize...
  function move_prev_word_end (line 180) | pub fn move_prev_word_end(slice: RopeSlice, range: Range, count: usize) ...
  function move_next_long_word_start (line 184) | pub fn move_next_long_word_start(slice: RopeSlice, range: Range, count: ...
  function move_next_long_word_end (line 188) | pub fn move_next_long_word_end(slice: RopeSlice, range: Range, count: us...
  function move_prev_long_word_start (line 192) | pub fn move_prev_long_word_start(slice: RopeSlice, range: Range, count: ...
  function move_prev_long_word_end (line 196) | pub fn move_prev_long_word_end(slice: RopeSlice, range: Range, count: us...
  function move_next_sub_word_start (line 200) | pub fn move_next_sub_word_start(slice: RopeSlice, range: Range, count: u...
  function move_next_sub_word_end (line 204) | pub fn move_next_sub_word_end(slice: RopeSlice, range: Range, count: usi...
  function move_prev_sub_word_start (line 208) | pub fn move_prev_sub_word_start(slice: RopeSlice, range: Range, count: u...
  function move_prev_sub_word_end (line 212) | pub fn move_prev_sub_word_end(slice: RopeSlice, range: Range, count: usi...
  function word_move (line 216) | fn word_move(slice: RopeSlice, range: Range, count: usize, target: WordM...
  function move_prev_paragraph (line 264) | pub fn move_prev_paragraph(
  function move_next_paragraph (line 311) | pub fn move_next_paragraph(
  function skip_while (line 363) | pub fn skip_while<F>(slice: RopeSlice, pos: usize, fun: F) -> Option<usize>
  function backwards_skip_while (line 375) | pub fn backwards_skip_while<F>(slice: RopeSlice, pos: usize, fun: F) -> ...
  type WordMotionTarget (line 392) | pub enum WordMotionTarget {
  type CharHelpers (line 412) | pub trait CharHelpers {
    method range_to_target (line 413) | fn range_to_target(&mut self, target: WordMotionTarget, origin: Range)...
    method range_to_target (line 420) | fn range_to_target(&mut self, target: WordMotionTarget, origin: Range)...
  function is_word_boundary (line 492) | fn is_word_boundary(a: char, b: char) -> bool {
  function is_long_word_boundary (line 496) | fn is_long_word_boundary(a: char, b: char) -> bool {
  function is_sub_word_boundary (line 505) | fn is_sub_word_boundary(a: char, b: char, dir: Direction) -> bool {
  function reached_target (line 524) | fn reached_target(target: WordMotionTarget, prev_ch: char, next_ch: char...
  function goto_treesitter_object (line 564) | pub fn goto_treesitter_object(
  function find_parent_start (line 621) | fn find_parent_start<'tree>(node: &Node<'tree>) -> Option<Node<'tree>> {
  function move_parent_node_end (line 632) | pub fn move_parent_node_end(
  constant SINGLE_LINE_SAMPLE (line 704) | const SINGLE_LINE_SAMPLE: &str = "This is a simple alphabetic line";
  constant MULTILINE_SAMPLE (line 705) | const MULTILINE_SAMPLE: &str = "\
  constant MULTIBYTE_CHARACTER_SAMPLE (line 713) | const MULTIBYTE_CHARACTER_SAMPLE: &str = "\
  function test_vertical_move (line 719) | fn test_vertical_move() {
  function horizontal_moves_through_single_line_text (line 744) | fn horizontal_moves_through_single_line_text() {
  function horizontal_moves_through_multiline_text (line 775) | fn horizontal_moves_through_multiline_text() {
  function selection_extending_moves_in_single_line_text (line 810) | fn selection_extending_moves_in_single_line_text() {
  function vertical_moves_in_single_column (line 839) | fn vertical_moves_in_single_column() {
  function vertical_moves_jumping_column (line 872) | fn vertical_moves_jumping_column() {
  function multibyte_character_wide_column_jumps (line 924) | fn multibyte_character_wide_column_jumps() {
  function nonsensical_ranges_panic_on_forward_movement_attempt_in_debug_mode (line 976) | fn nonsensical_ranges_panic_on_forward_movement_attempt_in_debug_mode() {
  function nonsensical_ranges_panic_on_forward_to_end_movement_attempt_in_debug_mode (line 982) | fn nonsensical_ranges_panic_on_forward_to_end_movement_attempt_in_debug_...
  function nonsensical_ranges_panic_on_backwards_movement_attempt_in_debug_mode (line 988) | fn nonsensical_ranges_panic_on_backwards_movement_attempt_in_debug_mode() {
  function test_behaviour_when_moving_to_start_of_next_words (line 993) | fn test_behaviour_when_moving_to_start_of_next_words() {
  function test_behaviour_when_moving_to_start_of_next_sub_words (line 1079) | fn test_behaviour_when_moving_to_start_of_next_sub_words() {
  function test_behaviour_when_moving_to_end_of_next_sub_words (line 1165) | fn test_behaviour_when_moving_to_end_of_next_sub_words() {
  function test_behaviour_when_moving_to_start_of_next_long_words (line 1251) | fn test_behaviour_when_moving_to_start_of_next_long_words() {
  function test_behaviour_when_moving_to_start_of_previous_words (line 1335) | fn test_behaviour_when_moving_to_start_of_previous_words() {
  function test_behaviour_when_moving_to_start_of_previous_sub_words (line 1420) | fn test_behaviour_when_moving_to_start_of_previous_sub_words() {
  function test_behaviour_when_moving_to_start_of_previous_long_words (line 1506) | fn test_behaviour_when_moving_to_start_of_previous_long_words() {
  function test_behaviour_when_moving_to_end_of_next_words (line 1603) | fn test_behaviour_when_moving_to_end_of_next_words() {
  function test_behaviour_when_moving_to_end_of_previous_words (line 1687) | fn test_behaviour_when_moving_to_end_of_previous_words() {
  function test_behaviour_when_moving_to_end_of_previous_sub_words (line 1769) | fn test_behaviour_when_moving_to_end_of_previous_sub_words() {
  function test_behaviour_when_moving_to_end_of_next_long_words (line 1855) | fn test_behaviour_when_moving_to_end_of_next_long_words() {
  function test_behaviour_when_moving_to_end_of_prev_long_words (line 1937) | fn test_behaviour_when_moving_to_end_of_prev_long_words() {
  function test_behaviour_when_moving_to_prev_paragraph_single (line 2031) | fn test_behaviour_when_moving_to_prev_paragraph_single() {
  function test_behaviour_when_moving_to_prev_paragraph_double (line 2065) | fn test_behaviour_when_moving_to_prev_paragraph_double() {
  function test_behaviour_when_moving_to_prev_paragraph_extend (line 2088) | fn test_behaviour_when_moving_to_prev_paragraph_extend() {
  function test_behaviour_when_moving_to_next_paragraph_single (line 2111) | fn test_behaviour_when_moving_to_next_paragraph_single() {
  function test_behaviour_when_moving_to_next_paragraph_double (line 2153) | fn test_behaviour_when_moving_to_next_paragraph_double() {
  function test_behaviour_when_moving_to_next_paragraph_extend (line 2176) | fn test_behaviour_when_moving_to_next_paragraph_extend() {

FILE: helix-core/src/object.rs
  function expand_selection (line 3) | pub fn expand_selection(syntax: &Syntax, text: RopeSlice, selection: Sel...
  function shrink_selection (line 27) | pub fn shrink_selection(syntax: &Syntax, text: RopeSlice, selection: Sel...
  function select_next_sibling (line 39) | pub fn select_next_sibling(syntax: &Syntax, text: RopeSlice, selection: ...
  function select_all_siblings (line 55) | pub fn select_all_siblings(syntax: &Syntax, text: RopeSlice, selection: ...
  function select_all_children (line 69) | pub fn select_all_children(syntax: &Syntax, text: RopeSlice, selection: ...
  function select_children (line 78) | fn select_children(cursor: &mut TreeCursor, text: RopeSlice, range: Rang...
  function select_prev_sibling (line 92) | pub fn select_prev_sibling(syntax: &Syntax, text: RopeSlice, selection: ...
  function select_node_impl (line 108) | fn select_node_impl<F>(

FILE: helix-core/src/position.rs
  type Position (line 20) | pub struct Position {
    method new (line 58) | pub const fn new(row: usize, col: usize) -> Self {
    method is_zero (line 62) | pub const fn is_zero(self) -> bool {
    method traverse (line 67) | pub fn traverse(self, text: &crate::Tendril) -> Self {
    method from (line 84) | fn from(tuple: (usize, usize)) -> Self {
  method add_assign (line 26) | fn add_assign(&mut self, rhs: Self) {
  method sub_assign (line 33) | fn sub_assign(&mut self, rhs: Self) {
  type Output (line 40) | type Output = Position;
  method sub (line 42) | fn sub(mut self, rhs: Self) -> Self::Output {
  type Output (line 49) | type Output = Position;
  method add (line 51) | fn add(mut self, rhs: Self) -> Self::Output {
  function coords_at_pos (line 96) | pub fn coords_at_pos(text: RopeSlice, pos: usize) -> Position {
  function visual_coords_at_pos (line 118) | pub fn visual_coords_at_pos(text: RopeSlice, pos: usize, tab_width: usiz...
  function visual_offset_from_block (line 149) | pub fn visual_offset_from_block(
  function softwrapped_dimensions (line 172) | pub fn softwrapped_dimensions(text: RopeSlice, text_fmt: &TextFormat) ->...
  type VisualOffsetError (line 183) | pub enum VisualOffsetError {
  function visual_offset_from_anchor (line 190) | pub fn visual_offset_from_anchor(
  function pos_at_coords (line 262) | pub fn pos_at_coords(text: RopeSlice, coords: Position, limit_before_lin...
  function pos_at_visual_coords (line 305) | pub fn pos_at_visual_coords(text: RopeSlice, coords: Position, tab_width...
  function char_idx_at_visual_offset (line 360) | pub fn char_idx_at_visual_offset(
  function char_idx_at_visual_block_offset (line 411) | pub fn char_idx_at_visual_block_offset(
  function test_ordering (line 459) | fn test_ordering() {
  function test_coords_at_pos (line 465) | fn test_coords_at_pos() {
  function test_visual_coords_at_pos (line 513) | fn test_visual_coords_at_pos() {
  function test_visual_off_from_block (line 561) | fn test_visual_off_from_block() {
  function test_pos_at_coords (line 685) | fn test_pos_at_coords() {
  function test_pos_at_visual_coords (line 751) | fn test_pos_at_visual_coords() {
  function test_char_idx_at_visual_row_offset_inline_annotation (line 817) | fn test_char_idx_at_visual_row_offset_inline_annotation() {
  function test_char_idx_at_visual_row_offset (line 841) | fn test_char_idx_at_visual_row_offset() {

FILE: helix-core/src/rope_reader.rs
  type RopeReader (line 6) | pub struct RopeReader<'a> {
  function new (line 12) | pub fn new(rope: RopeSlice<'a>) -> RopeReader<'a> {
  function read (line 21) | fn read(&mut self, mut buf: &mut [u8]) -> io::Result<usize> {

FILE: helix-core/src/search.rs
  type CharMatcher (line 5) | pub trait CharMatcher {
    method char_match (line 6) | fn char_match(&self, ch: char) -> bool;
    method char_match (line 10) | fn char_match(&self, ch: char) -> bool {
    method char_match (line 16) | fn char_match(&self, ch: char) -> bool {
  function find_nth_char (line 23) | pub fn find_nth_char<M: CharMatcher>(
  function test_find_nth_char (line 66) | fn test_find_nth_char() {

FILE: helix-core/src/selection.rs
  type Range (line 55) | pub struct Range {
    method new (line 66) | pub fn new(anchor: usize, head: usize) -> Self {
    method point (line 74) | pub fn point(head: usize) -> Self {
    method from_node (line 78) | pub fn from_node(node: Node, text: RopeSlice, direction: Direction) ->...
    method from (line 87) | pub fn from(&self) -> usize {
    method to (line 94) | pub fn to(&self) -> usize {
    method len (line 101) | pub fn len(&self) -> usize {
    method line_range (line 108) | pub fn line_range(&self, text: RopeSlice) -> (usize, usize) {
    method is_empty (line 121) | pub fn is_empty(&self) -> bool {
    method direction (line 129) | pub fn direction(&self) -> Direction {
    method flip (line 138) | pub fn flip(&self) -> Self {
    method with_direction (line 148) | pub fn with_direction(self, direction: Direction) -> Self {
    method overlaps (line 158) | pub fn overlaps(&self, other: &Self) -> bool {
    method contains_range (line 166) | pub fn contains_range(&self, other: &Self) -> bool {
    method contains (line 170) | pub fn contains(&self, pos: usize) -> bool {
    method map (line 180) | pub fn map(mut self, changes: &ChangeSet) -> Self {
    method extend (line 207) | pub fn extend(&self, from: usize, to: usize) -> Self {
    method merge (line 230) | pub fn merge(&self, other: Self) -> Self {
    method fragment (line 254) | pub fn fragment<'a, 'b: 'a>(&'a self, text: RopeSlice<'b>) -> Cow<'b, ...
    method slice (line 263) | pub fn slice<'a, 'b: 'a>(&'a self, text: RopeSlice<'b>) -> RopeSlice<'...
    method grapheme_aligned (line 276) | pub fn grapheme_aligned(&self, slice: RopeSlice) -> Self {
    method min_width_1 (line 317) | pub fn min_width_1(&self, slice: RopeSlice) -> Self {
    method cursor (line 335) | pub fn cursor(self, text: RopeSlice) -> usize {
    method put_cursor (line 353) | pub fn put_cursor(self, text: RopeSlice, char_idx: usize, extend: bool...
    method cursor_line (line 376) | pub fn cursor_line(&self, text: RopeSlice) -> usize {
    method is_single_grapheme (line 381) | pub fn is_single_grapheme(&self, doc: RopeSlice) -> bool {
    method into_byte_range (line 390) | pub fn into_byte_range(&self, text: RopeSlice) -> (usize, usize) {
    method from (line 396) | fn from((anchor, head): (usize, usize)) -> Self {
  function from (line 406) | fn from(range: Range) -> Self {
  type Selection (line 417) | pub struct Selection {
    method primary (line 428) | pub fn primary(&self) -> Range {
    method primary_mut (line 434) | pub fn primary_mut(&mut self) -> &mut Range {
    method into_single (line 439) | pub fn into_single(self) -> Self {
    method push (line 451) | pub fn push(mut self, range: Range) -> Self {
    method remove (line 458) | pub fn remove(mut self, index: usize) -> Self {
    method replace (line 472) | pub fn replace(mut self, index: usize, range: Range) -> Self {
    method map (line 479) | pub fn map(self, changes: &ChangeSet) -> Self {
    method map_no_normalize (line 485) | pub fn map_no_normalize(mut self, changes: &ChangeSet) -> Self {
    method ranges (line 512) | pub fn ranges(&self) -> &[Range] {
    method line_ranges (line 519) | pub fn line_ranges<'a>(&'a self, text: RopeSlice<'a>) -> LineRangeIter...
    method range_bounds (line 526) | pub fn range_bounds(&self) -> impl Iterator<Item = helix_stdx::Range> ...
    method primary_index (line 530) | pub fn primary_index(&self) -> usize {
    method set_primary_index (line 534) | pub fn set_primary_index(&mut self, idx: usize) {
    method single (line 541) | pub fn single(anchor: usize, head: usize) -> Self {
    method point (line 553) | pub fn point(pos: usize) -> Self {
    method normalize (line 560) | fn normalize(mut self) -> Self {
    method merge_ranges (line 590) | pub fn merge_ranges(self) -> Self {
    method merge_consecutive_ranges (line 597) | pub fn merge_consecutive_ranges(mut self) -> Self {
    method new (line 623) | pub fn new(ranges: SmallVec<[Range; 1]>, primary_index: usize) -> Self {
    method transform (line 636) | pub fn transform<F>(mut self, mut f: F) -> Self
    method transform_iter (line 647) | pub fn transform_iter<F, I>(mut self, f: F) -> Self
    method ensure_invariants (line 662) | pub fn ensure_invariants(self, text: RopeSlice) -> Self {
    method cursors (line 669) | pub fn cursors(self, text: RopeSlice) -> Self {
    method fragments (line 673) | pub fn fragments<'a>(
    method slices (line 681) | pub fn slices<'a>(
    method iter (line 690) | pub fn iter(&self) -> std::slice::Iter<'_, Range> {
    method len (line 695) | pub fn len(&self) -> usize {
    method contains (line 700) | pub fn contains(&self, other: &Selection) -> bool {
    method from_iter (line 724) | fn from_iter<T: IntoIterator<Item = Range>>(ranges: T) -> Self {
    method from (line 730) | fn from(range: Range) -> Self {
  type Item (line 706) | type Item = &'a Range;
  type IntoIter (line 707) | type IntoIter = std::slice::Iter<'a, Range>;
  method into_iter (line 709) | fn into_iter(self) -> std::slice::Iter<'a, Range> {
  type Item (line 715) | type Item = Range;
  type IntoIter (line 716) | type IntoIter = smallvec::IntoIter<[Range; 1]>;
  method into_iter (line 718) | fn into_iter(self) -> smallvec::IntoIter<[Range; 1]> {
  type LineRangeIter (line 738) | pub struct LineRangeIter<'a> {
  type Item (line 744) | type Item = (usize, usize);
  method next (line 746) | fn next(&mut self) -> Option<Self::Item> {
  function keep_or_remove_matches (line 767) | pub fn keep_or_remove_matches(
  function select_on_matches (line 787) | pub fn select_on_matches(
  function split_on_newline (line 818) | pub fn split_on_newline(text: RopeSlice, selection: &Selection) -> Selec...
  function split_on_matches (line 852) | pub fn split_on_matches(text: RopeSlice, selection: &Selection, regex: &...
  function test_new_empty (line 889) | fn test_new_empty() {
  function test_create_normalizes_and_merges (line 894) | fn test_create_normalizes_and_merges() {
  function test_create_merges_adjacent_points (line 936) | fn test_create_merges_adjacent_points() {
  function test_contains (line 959) | fn test_contains() {
  function test_overlaps (line 975) | fn test_overlaps() {
  function test_grapheme_aligned (line 1026) | fn test_grapheme_aligned() {
  function test_min_width_1 (line 1069) | fn test_min_width_1() {
  function test_select_on_matches (line 1100) | fn test_select_on_matches() {
  function test_line_range (line 1174) | fn test_line_range() {
  function selection_line_ranges (line 1204) | fn selection_line_ranges() {
  function test_cursor (line 1230) | fn test_cursor() {
  function test_put_cursor (line 1251) | fn test_put_cursor() {
  function test_split_on_matches (line 1280) | fn test_split_on_matches() {
  function test_merge_consecutive_ranges (line 1320) | fn test_merge_consecutive_ranges() {
  function test_selection_contains (line 1365) | fn test_selection_contains() {

FILE: helix-core/src/snippets.rs
  type TabstopIdx (line 7) | pub struct TabstopIdx(usize);
  constant LAST_TABSTOP_IDX (line 8) | pub const LAST_TABSTOP_IDX: TabstopIdx = TabstopIdx(usize::MAX);

FILE: helix-core/src/snippets/active.rs
  type ActiveSnippet (line 13) | pub struct ActiveSnippet {
    type Output (line 21) | type Output = Tabstop;
    method index (line 22) | fn index(&self, index: TabstopIdx) -> &Tabstop {
    method index_mut (line 28) | fn index_mut(&mut self, index: TabstopIdx) -> &mut Tabstop {
    method new (line 34) | pub fn new(snippet: RenderedSnippet) -> Option<Self> {
    method is_valid (line 44) | pub fn is_valid(&self, new_selection: &Selection) -> bool {
    method tabstops (line 48) | pub fn tabstops(&self) -> impl Iterator<Item = &Tabstop> {
    method delete_placeholder (line 52) | pub fn delete_placeholder(&self, doc: &Rope) -> Transaction {
    method map (line 63) | pub fn map(&mut self, changes: &ChangeSet) -> bool {
    method next_tabstop (line 133) | pub fn next_tabstop(&mut self, current_selection: &Selection) -> (Sele...
    method prev_tabstop (line 149) | pub fn prev_tabstop(&mut self, current_selection: &Selection) -> Optio...
    method primary_idx (line 160) | fn primary_idx(&self, current_selection: &Selection) -> usize {
    method activate_tabstop (line 174) | fn activate_tabstop(&mut self) -> bool {
    method tabstop_selection (line 198) | pub fn tabstop_selection(&self, primary_idx: usize, direction: Directi...
    method insert_subsnippet (line 203) | pub fn insert_subsnippet(mut self, snippet: RenderedSnippet) -> Option...
  function fully_remove (line 238) | fn fully_remove() {
  function tabstop_zero_with_placeholder (line 257) | fn tabstop_zero_with_placeholder() {

FILE: helix-core/src/snippets/elaborate.rs
  type Snippet (line 21) | pub struct Snippet {
    method parse (line 27) | pub fn parse(snippet: &str) -> Result<Self> {
    method new (line 33) | pub fn new(elements: Vec<parser::SnippetElement>) -> Snippet {
    method elements (line 45) | pub fn elements(&self) -> &[SnippetElement] {
    method tabstops (line 49) | pub fn tabstops(&self) -> impl Iterator<Item = &Tabstop> {
    method renumber_tabstops (line 53) | fn renumber_tabstops(&mut self) {
    method renumber_tabstops_in (line 73) | fn renumber_tabstops_in(tabstops: &[Tabstop], elements: &mut [SnippetE...
    method fixup_tabstops (line 91) | fn fixup_tabstops(&mut self) {
    method ensure_last_tabstop (line 105) | fn ensure_last_tabstop(&mut self) {
    method elaborate (line 119) | fn elaborate(
    method elaborate_choice (line 160) | fn elaborate_choice(
    method elaborate_placeholder (line 177) | fn elaborate_placeholder(
    method elaborate_transform (line 202) | fn elaborate_transform(
    type Output (line 228) | type Output = Tabstop;
    method index (line 229) | fn index(&self, index: TabstopIdx) -> &Tabstop {
  type SnippetElement (line 235) | pub enum SnippetElement {
  type Tabstop (line 248) | pub struct Tabstop {
  type TabstopKind (line 255) | pub enum TabstopKind {
    method is_empty (line 263) | pub fn is_empty(&self) -> bool {
  type Transform (line 269) | pub struct Transform {
    method new (line 286) | fn new(transform: parser::Transform) -> Option<Transform> {
    method apply (line 324) | pub fn apply(&self, mut doc: RopeSlice<'_>, range: Range) -> Tendril {
  method eq (line 277) | fn eq(&self, other: &Self) -> bool {
  method elaborate (line 379) | fn elaborate(idx: usize) -> Self {

FILE: helix-core/src/snippets/parser.rs
  type CaseChange (line 32) | pub enum CaseChange {
  type FormatItem (line 41) | pub enum FormatItem {
  type Transform (line 49) | pub struct Transform {
  type SnippetElement (line 56) | pub enum SnippetElement {
  function parse (line 77) | pub fn parse(s: &str) -> Result<Vec<SnippetElement>, &str> {
  function var (line 87) | fn var<'a>() -> impl Parser<'a, Output = &'a str> {
  constant TEXT_ESCAPE_CHARS (line 109) | const TEXT_ESCAPE_CHARS: &[char] = &['\\', '}', '$'];
  constant CHOICE_TEXT_ESCAPE_CHARS (line 110) | const CHOICE_TEXT_ESCAPE_CHARS: &[char] = &['\\', '|', ','];
  function text (line 112) | fn text<'a>(
  function digit (line 140) | fn digit<'a>() -> impl Parser<'a, Output = usize> {
  function case_change (line 144) | fn case_change<'a>() -> impl Parser<'a, Output = CaseChange> {
  function format (line 156) | fn format<'a>() -> impl Parser<'a, Output = FormatItem> {
  function regex (line 201) | fn regex<'a>() -> impl Parser<'a, Output = Transform> {
  function tabstop (line 228) | fn tabstop<'a>() -> impl Parser<'a, Output = SnippetElement> {
  function placeholder (line 241) | fn placeholder<'a>() -> impl Parser<'a, Output = SnippetElement> {
  function choice (line 262) | fn choice<'a>() -> impl Parser<'a, Output = SnippetElement> {
  function variable (line 278) | fn variable<'a>() -> impl Parser<'a, Output = SnippetElement> {
  function anything (line 318) | fn anything<'a>(
  function snippet (line 336) | fn snippet<'a>() -> impl Parser<'a, Output = Vec<SnippetElement>> {
  function empty_string_is_error (line 348) | fn empty_string_is_error() {
  function parse_placeholders_in_function_call (line 353) | fn parse_placeholders_in_function_call() {
  function unterminated_placeholder (line 381) | fn unterminated_placeholder() {
  function parse_empty_placeholder (line 393) | fn parse_empty_placeholder() {
  function parse_placeholders_in_statement (line 408) | fn parse_placeholders_in_statement() {
  function parse_tabstop_nested_in_placeholder (line 427) | fn parse_tabstop_nested_in_placeholder() {
  function parse_placeholder_nested_in_placeholder (line 444) | fn parse_placeholder_nested_in_placeholder() {
  function parse_all (line 463) | fn parse_all() {
  function regex_capture_replace (line 504) | fn regex_capture_replace() {
  function rust_macro (line 522) | fn rust_macro() {
  function assert_text (line 548) | fn assert_text(snippet: &str, parsed_text: &str) {
  function robust_parsing (line 564) | fn robust_parsing() {
  function assert_snippet (line 603) | fn assert_snippet(snippet: &str, expect: &[SnippetElement]) {
  function parse_variable (line 609) | fn parse_variable() {
  function parse_variable_transform (line 682) | fn parse_variable_transform() {

FILE: helix-core/src/snippets/render.rs
  type TabstopKind (line 17) | pub enum TabstopKind {
  type Tabstop (line 25) | pub struct Tabstop {
    method has_placeholder (line 32) | pub fn has_placeholder(&self) -> bool {
    method selection (line 39) | pub fn selection(
  type RenderedSnippet (line 62) | pub struct RenderedSnippet {
    method first_selection (line 68) | pub fn first_selection(&self, direction: Direction, primary_idx: usize...
    type Output (line 74) | type Output = Tabstop;
    method index (line 75) | fn index(&self, index: TabstopIdx) -> &Tabstop {
    method index_mut (line 81) | fn index_mut(&mut self, index: TabstopIdx) -> &mut Tabstop {
  method prepare_render (line 87) | pub fn prepare_render(&self) -> RenderedSnippet {
  method render_at (line 113) | pub fn render_at(
  method render (line 137) | pub fn render(
  type VariableResolver (line 175) | pub type VariableResolver = dyn FnMut(&str) -> Option<Cow<str>>;
  type SnippetRenderCtx (line 176) | pub struct SnippetRenderCtx {
    method test_ctx (line 185) | pub(super) fn test_ctx() -> SnippetRenderCtx {
  type SnippetRender (line 195) | struct SnippetRender<'a> {
  function render_elements (line 206) | fn render_elements(&mut self, elements: &[SnippetElement]) {
  function render_element (line 212) | fn render_element(&mut self, element: &SnippetElement) {
  function push_multiline_str (line 242) | fn push_multiline_str(&mut self, text: &str) {
  function push_str (line 254) | fn push_str(&mut self, mut text: &str, at_newline: bool) {
  function push_newline (line 276) | fn push_newline(&mut self) {
  function render_tabstop (line 282) | fn render_tabstop(&mut self, tabstop: TabstopIdx) {
  function assert_snippet (line 305) | fn assert_snippet(snippet: &str, expect: &str, tabstops: &[Tabstop]) {
  function rust_macro (line 327) | fn rust_macro() {

FILE: helix-core/src/surround.rs
  type Error (line 15) | pub enum Error {
  method fmt (line 23) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  type Result (line 33) | type Result<T> = std::result::Result<T, Error>;
  function find_nth_closest_pairs_pos (line 41) | pub fn find_nth_closest_pairs_pos(
  function find_nth_closest_pairs_ts (line 53) | fn find_nth_closest_pairs_ts(
  function find_nth_closest_pairs_plain (line 92) | fn find_nth_closest_pairs_plain(
  function find_nth_pairs_pos (line 160) | pub fn find_nth_pairs_pos(
  function find_nth_open_pair (line 217) | fn find_nth_open_pair(
  function find_nth_close_pair (line 260) | fn find_nth_close_pair(
  function get_surround_pos (line 305) | pub fn get_surround_pos(
  function test_get_surround_pos (line 341) | fn test_get_surround_pos() {
  function test_get_surround_pos_bail_different_surround_chars (line 356) | fn test_get_surround_pos_bail_different_surround_chars() {
  function test_get_surround_pos_bail_overlapping_surround_chars (line 371) | fn test_get_surround_pos_bail_overlapping_surround_chars() {
  function test_get_surround_pos_bail_cursor_overlap (line 386) | fn test_get_surround_pos_bail_cursor_overlap() {
  function test_find_nth_pairs_pos_quote_success (line 401) | fn test_find_nth_pairs_pos_quote_success() {
  function test_find_nth_pairs_pos_nested_quote_success (line 418) | fn test_find_nth_pairs_pos_nested_quote_success() {
  function test_find_nth_pairs_pos_inside_quote_ambiguous (line 435) | fn test_find_nth_pairs_pos_inside_quote_ambiguous() {
  function test_find_nth_closest_pairs_pos_index_range_panic (line 450) | fn test_find_nth_closest_pairs_pos_index_range_panic() {
  function rope_with_selections_and_expectations (line 467) | fn rope_with_selections_and_expectations(

FILE: helix-core/src/syntax.rs
  type LanguageData (line 40) | pub struct LanguageData {
    method new (line 50) | fn new(config: LanguageConfiguration) -> Self {
    method config (line 61) | pub fn config(&self) -> &Arc<LanguageConfiguration> {
    method compile_syntax_config (line 67) | pub fn compile_syntax_config(
    method syntax_config (line 93) | fn syntax_config(&self, loader: &Loader) -> Option<&SyntaxConfig> {
    method compile_indent_query (line 108) | pub fn compile_indent_query(
    method indent_query (line 122) | fn indent_query(&self, loader: &Loader) -> Option<&IndentQuery> {
    method compile_textobject_query (line 138) | pub fn compile_textobject_query(
    method textobject_query (line 152) | fn textobject_query(&self, loader: &Loader) -> Option<&TextObjectQuery> {
    method compile_tag_query (line 168) | pub fn compile_tag_query(
    method tag_query (line 190) | fn tag_query(&self, loader: &Loader) -> Option<&TagQuery> {
    method compile_rainbow_query (line 206) | pub fn compile_rainbow_query(
    method rainbow_query (line 220) | fn rainbow_query(&self, loader: &Loader) -> Option<&RainbowQuery> {
    method reconfigure (line 234) | fn reconfigure(&self, scopes: &[String]) {
  function reconfigure_highlights (line 241) | fn reconfigure_highlights(config: &SyntaxConfig, recognized_names: &[Str...
  function read_query (line 268) | pub fn read_query(lang: &str, query_filename: &str) -> String {
  type Loader (line 275) | pub struct Loader {
    method new (line 287) | pub fn new(config: Configuration) -> Result<Self, LoaderError> {
    method languages (line 324) | pub fn languages(&self) -> impl ExactSizeIterator<Item = (Language, &L...
    method language_configs (line 331) | pub fn language_configs(&self) -> impl ExactSizeIterator<Item = &Langu...
    method language (line 335) | pub fn language(&self, lang: Language) -> &LanguageData {
    method language_for_name (line 339) | pub fn language_for_name(&self, name: impl PartialEq<String>) -> Optio...
    method language_for_scope (line 345) | pub fn language_for_scope(&self, scope: &str) -> Option<Language> {
    method language_for_match (line 351) | pub fn language_for_match(&self, text: RopeSlice) -> Option<Language> {
    method language_for_filename (line 377) | pub fn language_for_filename(&self, path: &Path) -> Option<Language> {
    method language_for_shebang (line 391) | pub fn language_for_shebang(&self, text: RopeSlice) -> Option<Language> {
    method language_for_shebang_marker (line 406) | fn language_for_shebang_marker(&self, marker: RopeSlice) -> Option<Lan...
    method indent_query (line 411) | pub fn indent_query(&self, lang: Language) -> Option<&IndentQuery> {
    method textobject_query (line 415) | pub fn textobject_query(&self, lang: Language) -> Option<&TextObjectQu...
    method tag_query (line 419) | pub fn tag_query(&self, lang: Language) -> Option<&TagQuery> {
    method rainbow_query (line 423) | fn rainbow_query(&self, lang: Language) -> Option<&RainbowQuery> {
    method language_server_configs (line 427) | pub fn language_server_configs(&self) -> &HashMap<String, LanguageServ...
    method scopes (line 431) | pub fn scopes(&self) -> Guard<Arc<Vec<String>>> {
    method set_scopes (line 435) | pub fn set_scopes(&self, scopes: Vec<String>) {
  type LoaderError (line 284) | pub type LoaderError = globset::Error;
  method language_for_marker (line 446) | fn language_for_marker(&self, marker: InjectionLanguageMarker) -> Option...
  method get_config (line 458) | fn get_config(&self, lang: Language) -> Option<&SyntaxConfig> {
  type FileTypeGlob (line 464) | struct FileTypeGlob {
    method new (line 470) | pub fn new(glob: globset::Glob, language: Language) -> Self {
  type FileTypeGlobMatcher (line 476) | struct FileTypeGlobMatcher {
    method new (line 491) | fn new(file_types: Vec<FileTypeGlob>) -> Result<Self, globset::Error> {
    method language_for_path (line 503) | fn language_for_path(&self, path: &Path) -> Option<Language> {
  method default (line 482) | fn default() -> Self {
  type Syntax (line 514) | pub struct Syntax {
    method new (line 521) | pub fn new(source: RopeSlice, language: Language, loader: &Loader) -> ...
    method update (line 526) | pub fn update(
    method layer (line 541) | pub fn layer(&self, layer: Layer) -> &tree_house::LayerData {
    method root_layer (line 545) | pub fn root_layer(&self) -> Layer {
    method layer_for_byte_range (line 552) | pub fn layer_for_byte_range(&self, start: u32, end: u32) -> Layer {
    method layers_for_byte_range (line 561) | pub fn layers_for_byte_range(
    method root_language (line 569) | pub fn root_language(&self) -> Language {
    method tree (line 573) | pub fn tree(&self) -> &Tree {
    method tree_for_byte_range (line 577) | pub fn tree_for_byte_range(&self, start: u32, end: u32) -> &Tree {
    method named_descendant_for_byte_range (line 581) | pub fn named_descendant_for_byte_range(&self, start: u32, end: u32) ->...
    method descendant_for_byte_range (line 585) | pub fn descendant_for_byte_range(&self, start: u32, end: u32) -> Optio...
    method walk (line 589) | pub fn walk(&self) -> TreeCursor<'_> {
    method highlighter (line 593) | pub fn highlighter<'a>(
    method query_iter (line 602) | pub fn query_iter<'a, QueryLoader, LayerState, Range>(
    method tags (line 616) | pub fn tags<'a>(
    method rainbow_highlights (line 629) | pub fn rainbow_highlights(
  constant PARSE_TIMEOUT (line 518) | const PARSE_TIMEOUT: Duration = Duration::from_millis(500);
  type Highlighter (line 703) | pub type Highlighter<'a> = highlighter::Highlighter<'a, 'a, Loader>;
  function generate_edits (line 705) | fn generate_edits(old_text: RopeSlice, changeset: &ChangeSet) -> Vec<Inp...
  type OverlayHighlights (line 784) | pub enum OverlayHighlights {
    method single (line 802) | pub fn single(highlight: Highlight, range: ops::Range<usize>) -> Self {
    method is_empty (line 809) | fn is_empty(&self) -> bool {
  type Overlay (line 818) | struct Overlay {
    method new (line 831) | fn new(highlights: OverlayHighlights) -> Option<Self> {
    method current (line 839) | fn current(&self) -> Option<(Highlight, ops::Range<usize>)> {
    method start (line 848) | fn start(&self) -> Option<usize> {
  type OverlayHighlighter (line 862) | pub struct OverlayHighlighter {
    method new (line 869) | pub fn new(overlays: impl IntoIterator<Item = OverlayHighlights>) -> S...
    method next_event_offset (line 890) | pub fn next_event_offset(&self) -> usize {
    method advance (line 894) | pub fn advance(&mut self) -> (HighlightEvent, impl Iterator<Item = Hig...
  type CapturedNode (line 981) | pub enum CapturedNode<'a> {
  function start_byte (line 988) | pub fn start_byte(&self) -> usize {
  function end_byte (line 995) | pub fn end_byte(&self) -> usize {
  function byte_range (line 1002) | pub fn byte_range(&self) -> ops::Range<usize> {
  type TextObjectQuery (line 1008) | pub struct TextObjectQuery {
    method new (line 1013) | pub fn new(query: Query) -> Self {
    method capture_nodes (line 1033) | pub fn capture_nodes<'a>(
    method capture_nodes_any (line 1044) | pub fn capture_nodes_any<'a>(
  type TagQuery (line 1072) | pub struct TagQuery {
  function pretty_print_tree (line 1076) | pub fn pretty_print_tree<W: fmt::Write>(fmt: &mut W, node: Node) -> fmt:...
  function node_is_visible (line 1088) | fn node_is_visible(node: &Node) -> bool {
  function format_anonymous_node_kind (line 1092) | fn format_anonymous_node_kind(kind: &str) -> Cow<'_, str> {
  function pretty_print_tree_impl (line 1100) | fn pretty_print_tree_impl<W: fmt::Write>(
  function child_for_byte_range (line 1149) | pub fn child_for_byte_range<'a>(node: &Node<'a>, range: ops::Range<u32>)...
  type RainbowQuery (line 1162) | pub struct RainbowQuery {
    method new (line 1170) | fn new(grammar: Grammar, source: &str) -> Result<Self, tree_sitter::qu...
  function test_textobject_queries (line 1208) | fn test_textobject_queries() {
  function test_input_edits (line 1255) | fn test_input_edits() {
  function assert_pretty_print (line 1310) | fn assert_pretty_print(
  function test_pretty_print (line 1334) | fn test_pretty_print() {

FILE: helix-core/src/syntax/config.rs
  type Configuration (line 17) | pub struct Configuration {
  type LanguageConfiguration (line 25) | pub struct LanguageConfiguration {
    method language (line 109) | pub fn language(&self) -> Language {
  type RootMarkers (line 115) | pub type RootMarkers = GlobSet;
  type GlobSet (line 119) | pub struct GlobSet {
    method is_match (line 126) | pub fn is_match<P: AsRef<std::path::Path>>(&self, path: P) -> bool {
    method deserialize (line 145) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
  method serialize (line 132) | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
  type FileType (line 161) | pub enum FileType {
    method deserialize (line 191) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
  method serialize (line 173) | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
  function from_comment_tokens (line 245) | fn from_comment_tokens<'de, D>(deserializer: D) -> Result<Option<Vec<Str...
  type BlockCommentToken (line 264) | pub struct BlockCommentToken {
  method default (line 270) | fn default() -> Self {
  function from_block_comment_tokens (line 278) | fn from_block_comment_tokens<'de, D>(
  type LanguageServerFeature (line 300) | pub enum LanguageServerFeature {
  method fmt (line 327) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type LanguageServerFeatureConfiguration (line 358) | enum LanguageServerFeatureConfiguration {
  type LanguageServerFeatures (line 371) | pub struct LanguageServerFeatures {
    method has_feature (line 378) | pub fn has_feature(&self, feature: LanguageServerFeature) -> bool {
  function deserialize_lang_features (line 383) | fn deserialize_lang_features<'de, D>(
  function serialize_lang_features (line 410) | fn serialize_lang_features<S>(
  type LanguageServerConfiguration (line 435) | pub struct LanguageServerConfiguration {
  type FormatterConfiguration (line 452) | pub struct FormatterConfiguration {
  type AdvancedCompletion (line 461) | pub struct AdvancedCompletion {
  type DebugConfigCompletion (line 469) | pub enum DebugConfigCompletion {
  type DebugTemplate (line 476) | pub struct DebugTemplate {
  type DebugAdapterConfig (line 486) | pub struct DebugAdapterConfig {
  type DebuggerQuirks (line 501) | pub struct DebuggerQuirks {
  type IndentationConfiguration (line 508) | pub struct IndentationConfiguration {
  type IndentationHeuristic (line 519) | pub enum IndentationHeuristic {
  type AutoPairConfig (line 533) | pub enum AutoPairConfig {
  method default (line 542) | fn default() -> Self {
  function from (line 548) | fn from(auto_pair_config: &AutoPairConfig) -> Self {
  function from (line 558) | fn from(auto_pairs_config: AutoPairConfig) -> Self {
  type Err (line 564) | type Err = std::str::ParseBoolError;
  method from_str (line 567) | fn from_str(s: &str) -> Result<Self, Self::Err> {
  type SoftWrap (line 575) | pub struct SoftWrap {
  type WordCompletion (line 605) | pub struct WordCompletion {
  function deserialize_regex (line 610) | fn deserialize_regex<'de, D>(deserializer: D) -> Result<Option<rope::Reg...
  function deserialize_lsp_config (line 619) | fn deserialize_lsp_config<'de, D>(deserializer: D) -> Result<Option<serd...
  function deserialize_tab_width (line 628) | fn deserialize_tab_width<'de, D>(deserializer: D) -> Result<usize, D::Er...
  function deserialize_auto_pairs (line 643) | pub fn deserialize_auto_pairs<'de, D>(deserializer: D) -> Result<Option<...
  function default_timeout (line 650) | fn default_timeout() -> u64 {

FILE: helix-core/src/test.rs
  function print (line 36) | pub fn print(s: &str) -> (String, Selection) {
  function plain (line 152) | pub fn plain<R: Into<Rope>>(s: R, selection: &Selection) -> String {
  function print_single (line 187) | fn print_single() {
  function print_multi (line 215) | fn print_multi() {
  function print_multi_byte_code_point (line 263) | fn print_multi_byte_code_point() {
  function print_multi_code_point_grapheme (line 287) | fn print_multi_code_point_grapheme() {
  function plain_single (line 295) | fn plain_single() {
  function plain_multi (line 305) | fn plain_multi() {
  function plain_multi_byte_code_point (line 353) | fn plain_multi_byte_code_point() {
  function plain_multi_code_point_grapheme (line 377) | fn plain_multi_code_point_grapheme() {

FILE: helix-core/src/text_annotations.rs
  type InlineAnnotation (line 15) | pub struct InlineAnnotation {
    method new (line 21) | pub fn new(char_idx: usize, text: impl Into<Tendril>) -> Self {
  type Overlay (line 68) | pub struct Overlay {
    method new (line 74) | pub fn new(char_idx: usize, grapheme: impl Into<Tendril>) -> Self {
  type LineAnnotation (line 115) | pub trait LineAnnotation {
    method reset_pos (line 127) | fn reset_pos(&mut self, _char_idx: usize) -> usize {
    method skip_concealed_anchors (line 140) | fn skip_concealed_anchors(&mut self, conceal_end_char_idx: usize) -> u...
    method process_anchor (line 150) | fn process_anchor(&mut self, _grapheme: &FormattedGrapheme) -> usize {
    method insert_virtual_lines (line 168) | fn insert_virtual_lines(
  type Layer (line 177) | struct Layer<'a, A, M> {
  method clone (line 184) | fn clone(&self) -> Self {
  function reset_pos (line 194) | pub fn reset_pos(&self, char_idx: usize, get_char_idx: impl Fn(&A) -> us...
  function consume (line 201) | pub fn consume(&self, char_idx: usize, get_char_idx: impl Fn(&A) -> usiz...
  function from (line 214) | fn from((annotations, metadata): (&'a [A], M)) -> Layer<'a, A, M> {
  function reset_pos (line 223) | fn reset_pos<A, M>(layers: &[Layer<A, M>], pos: usize, get_pos: impl Fn(...
  type RawBox (line 252) | struct RawBox<T: ?Sized>(NonNull<T>);
  function get (line 258) | unsafe fn get(&self) -> &mut T {
  function from (line 263) | fn from(box_: Box<T>) -> Self {
  method drop (line 270) | fn drop(&mut self) {
  type TextAnnotations (line 278) | pub struct TextAnnotations<'a> {
  method fmt (line 285) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  function reset_pos (line 295) | pub fn reset_pos(&self, char_idx: usize) {
  function collect_overlay_highlights (line 303) | pub fn collect_overlay_highlights(&self, char_range: Range<usize>) -> Ov...
  function add_inline_annotations (line 329) | pub fn add_inline_annotations(
  function add_overlay (line 350) | pub fn add_overlay(&mut self, layer: &'a [Overlay], highlight: Option<Hi...
  function add_line_annotation (line 361) | pub fn add_line_annotation(&mut self, layer: Box<dyn LineAnnotation + 'a...
  function clear_line_annotations (line 369) | pub fn clear_line_annotations(&mut self) {
  function next_inline_annotation_at (line 373) | pub(crate) fn next_inline_annotation_at(
  function overlay_at (line 383) | pub(crate) fn overlay_at(&self, char_idx: usize) -> Option<(&Overlay, Op...
  function process_virtual_text_anchors (line 393) | pub(crate) fn process_virtual_text_anchors(&self, grapheme: &FormattedGr...
  function virtual_lines_at (line 408) | pub(crate) fn virtual_lines_at(

FILE: helix-core/src/textobject.rs
  function find_word_boundary (line 13) | fn find_word_boundary(slice: RopeSlice, mut pos: usize, direction: Direc...
  type TextObject (line 53) | pub enum TextObject {
  method fmt (line 61) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  function textobject_word (line 71) | pub fn textobject_word(
  function textobject_paragraph (line 114) | pub fn textobject_paragraph(
  function textobject_pair_surround (line 200) | pub fn textobject_pair_surround(
  function textobject_pair_surround_closest (line 211) | pub fn textobject_pair_surround_closest(
  function textobject_pair_surround_impl (line 221) | fn textobject_pair_surround_impl(
  function textobject_treesitter (line 257) | pub fn textobject_treesitter(
  function test_textobject_word (line 301) | fn test_textobject_word() {
  function test_textobject_paragraph_inside_single (line 416) | fn test_textobject_paragraph_inside_single() {
  function test_textobject_paragraph_inside_double (line 447) | fn test_textobject_paragraph_inside_double() {
  function test_textobject_paragraph_around_single (line 470) | fn test_textobject_paragraph_around_single() {
  function test_textobject_surround (line 501) | fn test_textobject_surround() {

FILE: helix-core/src/transaction.rs
  type Change (line 8) | pub type Change = (usize, usize, Option<Tendril>);
  type Deletion (line 9) | pub type Deletion = (usize, usize);
  type Operation (line 13) | pub enum Operation {
    method len_chars (line 24) | pub fn len_chars(&self) -> usize {
  type Assoc (line 33) | pub enum Assoc {
    method stay_at_gaps (line 52) | fn stay_at_gaps(self) -> bool {
    method insert_offset (line 56) | fn insert_offset(self, s: &str) -> usize {
    method sticky (line 67) | pub fn sticky(self) -> bool {
  type ChangeSet (line 73) | pub struct ChangeSet {
    method with_capacity (line 81) | pub fn with_capacity(capacity: usize) -> Self {
    method new (line 90) | pub fn new(doc: RopeSlice) -> Self {
    method changes (line 102) | pub fn changes(&self) -> &[Operation] {
    method delete (line 107) | pub(crate) fn delete(&mut self, n: usize) {
    method insert (line 122) | pub(crate) fn insert(&mut self, fragment: Tendril) {
    method retain (line 144) | pub(crate) fn retain(&mut self, n: usize) {
    method compose (line 163) | pub fn compose(self, other: Self) -> Self {
    method map (line 306) | pub fn map(self, _other: Self) -> Self {
    method invert (line 312) | pub fn invert(&self, original_doc: &Rope) -> Self {
    method apply (line 342) | pub fn apply(&self, text: &mut Rope) -> bool {
    method is_empty (line 370) | pub fn is_empty(&self) -> bool {
    method update_positions (line 388) | pub fn update_positions<'a>(&self, positions: impl Iterator<Item = (&'...
    method map_pos (line 518) | pub fn map_pos(&self, mut pos: usize, assoc: Assoc) -> usize {
    method changes_iter (line 523) | pub fn changes_iter(&self) -> ChangeIterator<'_> {
  type Transaction (line 531) | pub struct Transaction {
    method new (line 538) | pub fn new(doc: &Rope) -> Self {
    method changes (line 546) | pub fn changes(&self) -> &ChangeSet {
    method selection (line 551) | pub fn selection(&self) -> Option<&Selection> {
    method apply (line 556) | pub fn apply(&self, doc: &mut Rope) -> bool {
    method invert (line 566) | pub fn invert(&self, original: &Rope) -> Self {
    method compose (line 575) | pub fn compose(mut self, other: Self) -> Self {
    method with_selection (line 582) | pub fn with_selection(mut self, selection: Selection) -> Self {
    method change_ignore_overlapping (line 597) | pub fn change_ignore_overlapping<T>(
    method change (line 615) | pub fn change<I>(doc: &Rope, changes: I) -> Self
    method delete (line 655) | pub fn delete<I>(doc: &Rope, deletions: I) -> Self
    method insert_at_eof (line 688) | pub fn insert_at_eof(mut self, text: Tendril) -> Transaction {
    method change_by_selection (line 694) | pub fn change_by_selection<F>(doc: &Rope, selection: &Selection, f: F)...
    method change_by_selection_ignore_overlapping (line 701) | pub fn change_by_selection_ignore_overlapping(
    method delete_by_selection (line 742) | pub fn delete_by_selection<F>(doc: &Rope, selection: &Selection, f: F)...
    method insert (line 750) | pub fn insert(doc: &Rope, selection: &Selection, text: Tendril) -> Self {
    method changes_iter (line 756) | pub fn changes_iter(&self) -> ChangeIterator<'_> {
    method from (line 762) | fn from(changes: ChangeSet) -> Self {
  type ChangeIterator (line 770) | pub struct ChangeIterator<'a> {
  function new (line 776) | fn new(changeset: &'a ChangeSet) -> Self {
  type Item (line 783) | type Item = Change;
  method next (line 785) | fn next(&mut self) -> Option<Self::Item> {
  function composition (line 821) | fn composition() {
  function invert (line 852) | fn invert() {
  function map_pos (line 880) | fn map_pos() {
  function transaction_change (line 980) | fn transaction_change() {
  function changes_iter (line 992) | fn changes_iter() {
  function optimized_composition (line 1000) | fn optimized_composition() {
  function combine_with_empty (line 1041) | fn combine_with_empty() {
  function combine_with_utf8 (line 1055) | fn combine_with_utf8() {

FILE: helix-core/src/uri.rs
  type Uri (line 14) | pub enum Uri {
    method to_url (line 21) | pub fn to_url(&self) -> Result<url::Url, ()> {
    method as_path (line 27) | pub fn as_path(&self) -> Option<&Path> {
    method from (line 35) | fn from(path: PathBuf) -> Self {
    method fmt (line 41) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    type Error (line 91) | type Error = UrlConversionError;
    method try_from (line 93) | fn try_from(url: url::Url) -> Result<Self, Self::Error> {
    type Error (line 99) | type Error = UrlConversionError;
    method try_from (line 101) | fn try_from(url: &url::Url) -> Result<Self, Self::Error> {
  type UrlConversionError (line 49) | pub struct UrlConversionError {
    method fmt (line 61) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type UrlConversionErrorKind (line 55) | pub enum UrlConversionErrorKind {
  function convert_url_to_uri (line 80) | fn convert_url_to_uri(url: &url::Url) -> Result<Uri, UrlConversionErrorK...
  function unknown_scheme (line 115) | fn unknown_scheme() {

FILE: helix-core/src/wrap.rs
  function reflow_hard_wrap (line 6) | pub fn reflow_hard_wrap(text: &str, text_width: usize) -> SmartString<La...

FILE: helix-core/tests/data/indent/cpp.cpp
  function fn_with_many_parameters (line 5) | std::vector<std::string>
  class MyClass (line 42) | class MyClass : public MyBaseClass {

FILE: helix-core/tests/data/indent/rust.rs
  function hello_world (line 8) | fn hello_world() {
  function change (line 91) | pub fn change<I>(document: &Document, changes: I) -> Self

FILE: helix-core/tests/indent.rs
  function test_treesitter_indent_rust (line 11) | fn test_treesitter_indent_rust() {
  function test_treesitter_indent_cpp (line 16) | fn test_treesitter_indent_cpp() {
  function test_treesitter_indent_rust_helix (line 21) | fn test_treesitter_indent_rust_helix() {
  function test_indent_level_for_line_with_spaces (line 125) | fn test_indent_level_for_line_with_spaces() {
  function test_indent_level_for_line_with_tabs (line 136) | fn test_indent_level_for_line_with_tabs() {
  function test_indent_level_for_line_with_spaces_and_tabs (line 147) | fn test_indent_level_for_line_with_spaces_and_tabs() {
  function indent_tests_dir (line 157) | fn indent_tests_dir() -> PathBuf {
  function indent_test_path (line 163) | fn indent_test_path(name: &str) -> PathBuf {
  function indent_tests_config (line 169) | fn indent_tests_config() -> Configuration {
  function standard_treesitter_test (line 176) | fn standard_treesitter_test(file_name: &str, lang_scope: &str) {
  function test_treesitter_indent (line 185) | fn test_treesitter_indent(

FILE: helix-dap-types/src/lib.rs
  type ThreadId (line 9) | pub struct ThreadId(isize);
    method fmt (line 12) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  type ThreadStates (line 17) | pub type ThreadStates = HashMap<ThreadId, String>;
  type Request (line 19) | pub trait Request {
    constant COMMAND (line 22) | const COMMAND: &'static str;
    type Arguments (line 389) | type Arguments = InitializeArguments;
    type Result (line 390) | type Result = DebuggerCapabilities;
    constant COMMAND (line 391) | const COMMAND: &'static str = "initialize";
    type Arguments (line 398) | type Arguments = Value;
    type Result (line 399) | type Result = ();
    constant COMMAND (line 400) | const COMMAND: &'static str = "launch";
    type Arguments (line 407) | type Arguments = Value;
    type Result (line 408) | type Result = ();
    constant COMMAND (line 409) | const COMMAND: &'static str = "attach";
    type Arguments (line 427) | type Arguments = Value;
    type Result (line 428) | type Result = ();
    constant COMMAND (line 429) | const COMMAND: &'static str = "restart";
    type Arguments (line 436) | type Arguments = Option<DisconnectArguments>;
    type Result (line 437) | type Result = ();
    constant COMMAND (line 438) | const COMMAND: &'static str = "disconnect";
    type Arguments (line 451) | type Arguments = Option<TerminateArguments>;
    type Result (line 452) | type Result = ();
    constant COMMAND (line 453) | const COMMAND: &'static str = "terminate";
    type Arguments (line 460) | type Arguments = Option<ConfigurationDoneArguments>;
    type Result (line 461) | type Result = ();
    constant COMMAND (line 462) | const COMMAND: &'static str = "configurationDone";
    type Arguments (line 490) | type Arguments = SetBreakpointsArguments;
    type Result (line 491) | type Result = SetBreakpointsResponse;
    constant COMMAND (line 492) | const COMMAND: &'static str = "setBreakpoints";
    type Arguments (line 512) | type Arguments = ContinueArguments;
    type Result (line 513) | type Result = ContinueResponse;
    constant COMMAND (line 514) | const COMMAND: &'static str = "continue";
    type Arguments (line 541) | type Arguments = StackTraceArguments;
    type Result (line 542) | type Result = StackTraceResponse;
    constant COMMAND (line 543) | const COMMAND: &'static str = "stackTrace";
    type Arguments (line 559) | type Arguments = Option<ThreadsArguments>;
    type Result (line 560) | type Result = ThreadsResponse;
    constant COMMAND (line 561) | const COMMAND: &'static str = "threads";
    type Arguments (line 580) | type Arguments = ScopesArguments;
    type Result (line 581) | type Result = ScopesResponse;
    constant COMMAND (line 582) | const COMMAND: &'static str = "scopes";
    type Arguments (line 609) | type Arguments = VariablesArguments;
    type Result (line 610) | type Result = VariablesResponse;
    constant COMMAND (line 611) | const COMMAND: &'static str = "variables";
    type Arguments (line 628) | type Arguments = StepInArguments;
    type Result (line 629) | type Result = ();
    constant COMMAND (line 630) | const COMMAND: &'static str = "stepIn";
    type Arguments (line 645) | type Arguments = StepOutArguments;
    type Result (line 646) | type Result = ();
    constant COMMAND (line 647) | const COMMAND: &'static str = "stepOut";
    type Arguments (line 662) | type Arguments = NextArguments;
    type Result (line 663) | type Result = ();
    constant COMMAND (line 664) | const COMMAND: &'static str = "next";
    type Arguments (line 677) | type Arguments = PauseArguments;
    type Result (line 678) | type Result = ();
    constant COMMAND (line 679) | const COMMAND: &'static str = "pause";
    type Arguments (line 715) | type Arguments = EvaluateArguments;
    type Result (line 716) | type Result = EvaluateResponse;
    constant COMMAND (line 717) | const COMMAND: &'static str = "evaluate";
    type Arguments (line 739) | type Arguments = SetExceptionBreakpointsArguments;
    type Result (line 740) | type Result = SetExceptionBreakpointsResponse;
    constant COMMAND (line 741) | const COMMAND: &'static str = "setExceptionBreakpoints";
    type Arguments (line 772) | type Arguments = RunInTerminalArguments;
    type Result (line 773) | type Result = RunInTerminalResponse;
    constant COMMAND (line 774) | const COMMAND: &'static str = "runInTerminal";
    type Arguments (line 787) | type Arguments = StartDebuggingArguments;
    type Result (line 788) | type Result = ();
    constant COMMAND (line 789) | const COMMAND: &'static str = "startDebugging";
  type ColumnDescriptor (line 27) | pub struct ColumnDescriptor {
  type ExceptionBreakpointsFilter (line 40) | pub struct ExceptionBreakpointsFilter {
  type DebuggerCapabilities (line 55) | pub struct DebuggerCapabilities {
  type Checksum (line 136) | pub struct Checksum {
  type Source (line 143) | pub struct Source {
  type SourceBreakpoint (line 164) | pub struct SourceBreakpoint {
  type Breakpoint (line 178) | pub struct Breakpoint {
  type StackFrameFormat (line 202) | pub struct StackFrameFormat {
  type StackFrame (line 221) | pub struct StackFrame {
  type Thread (line 244) | pub struct Thread {
  type Scope (line 251) | pub struct Scope {
  type ValueFormat (line 275) | pub struct ValueFormat {
  type VariablePresentationHint (line 282) | pub struct VariablePresentationHint {
  type Variable (line 293) | pub struct Variable {
  type Module (line 313) | pub struct Module {
  function from_number (line 335) | fn from_number<'de, D>(deserializer: D) -> Result<String, D::Error>
  type InitializeArguments (line 356) | pub struct InitializeArguments {
  type Initialize (line 386) | pub enum Initialize {}
  type Launch (line 395) | pub enum Launch {}
  type Attach (line 404) | pub enum Attach {}
  type DisconnectArguments (line 414) | pub struct DisconnectArguments {
  type Restart (line 424) | pub enum Restart {}
  type Disconnect (line 433) | pub enum Disconnect {}
  type TerminateArguments (line 443) | pub struct TerminateArguments {
  type Terminate (line 448) | pub enum Terminate {}
  type ConfigurationDone (line 457) | pub enum ConfigurationDone {}
  type ConfigurationDoneArguments (line 466) | pub struct ConfigurationDoneArguments {}
  type SetBreakpointsArguments (line 470) | pub struct SetBreakpointsArguments {
  type SetBreakpointsResponse (line 481) | pub struct SetBreakpointsResponse {
  type SetBreakpoints (line 487) | pub enum SetBreakpoints {}
  type ContinueArguments (line 497) | pub struct ContinueArguments {
  type ContinueResponse (line 503) | pub struct ContinueResponse {
  type Continue (line 509) | pub enum Continue {}
  type StackTraceArguments (line 519) | pub struct StackTraceArguments {
  type StackTraceResponse (line 531) | pub struct StackTraceResponse {
  type StackTrace (line 538) | pub enum StackTrace {}
  type ThreadsArguments (line 547) | pub struct ThreadsArguments {}
  type ThreadsResponse (line 551) | pub struct ThreadsResponse {
  type Threads (line 556) | pub enum Threads {}
  type ScopesArguments (line 566) | pub struct ScopesArguments {
  type ScopesResponse (line 572) | pub struct ScopesResponse {
  type Scopes (line 577) | pub enum Scopes {}
  type VariablesArguments (line 587) | pub struct VariablesArguments {
  type VariablesResponse (line 601) | pub struct VariablesResponse {
  type Variables (line 606) | pub enum Variables {}
  type StepInArguments (line 616) | pub struct StepInArguments {
  type StepIn (line 625) | pub enum StepIn {}
  type StepOutArguments (line 635) | pub struct StepOutArguments {
  type StepOut (line 642) | pub enum StepOut {}
  type NextArguments (line 652) | pub struct NextArguments {
  type Next (line 659) | pub enum Next {}
  type PauseArguments (line 669) | pub struct PauseArguments {
  type Pause (line 674) | pub enum Pause {}
  type EvaluateArguments (line 684) | pub struct EvaluateArguments {
  type EvaluateResponse (line 696) | pub struct EvaluateResponse {
  type Evaluate (line 712) | pub enum Evaluate {}
  type SetExceptionBreakpointsArguments (line 722) | pub struct SetExceptionBreakpointsArguments {
  type SetExceptionBreakpointsResponse (line 730) | pub struct SetExceptionBreakpointsResponse {
  type SetExceptionBreakpoints (line 736) | pub enum SetExceptionBreakpoints {}
  type RunInTerminalResponse (line 748) | pub struct RunInTerminalResponse {
  type RunInTerminalArguments (line 757) | pub struct RunInTerminalArguments {
  type RunInTerminal (line 769) | pub enum RunInTerminal {}
  type StartDebuggingArguments (line 778) | pub struct StartDebuggingArguments {
  type StartDebugging (line 784) | pub enum StartDebugging {}
  type Event (line 798) | pub trait Event {
    constant EVENT (line 800) | const EVENT: &'static str;
    type Body (line 807) | type Body = Option<DebuggerCapabilities>;
    constant EVENT (line 808) | const EVENT: &'static str = "initialized";
    type Body (line 815) | type Body = StoppedBody;
    constant EVENT (line 816) | const EVENT: &'static str = "stopped";
    type Body (line 841) | type Body = ContinuedBody;
    constant EVENT (line 842) | const EVENT: &'static str = "continued";
    type Body (line 857) | type Body = ExitedBody;
    constant EVENT (line 858) | const EVENT: &'static str = "exited";
    type Body (line 871) | type Body = Option<TerminatedBody>;
    constant EVENT (line 872) | const EVENT: &'static str = "terminated";
    type Body (line 886) | type Body = ThreadBody;
    constant EVENT (line 887) | const EVENT: &'static str = "thread";
    type Body (line 901) | type Body = OutputBody;
    constant EVENT (line 902) | const EVENT: &'static str = "output";
    type Body (line 929) | type Body = BreakpointBody;
    constant EVENT (line 930) | const EVENT: &'static str = "breakpoint";
    type Body (line 944) | type Body = ModuleBody;
    constant EVENT (line 945) | const EVENT: &'static str = "module";
    type Body (line 959) | type Body = LoadedSourceBody;
    constant EVENT (line 960) | const EVENT: &'static str = "loadedSource";
    type Body (line 974) | type Body = ProcessBody;
    constant EVENT (line 975) | const EVENT: &'static str = "process";
    type Body (line 996) | type Body = CapabilitiesBody;
    constant EVENT (line 997) | const EVENT: &'static str = "capabilities";
    type Body (line 1018) | type Body = MemoryBody;
    constant EVENT (line 1019) | const EVENT: &'static str = "memory";
  type Initialized (line 804) | pub enum Initialized {}
  type Stopped (line 812) | pub enum Stopped {}
  type StoppedBody (line 821) | pub struct StoppedBody {
  type Continued (line 838) | pub enum Continued {}
  type ContinuedBody (line 847) | pub struct ContinuedBody {
  type Exited (line 854) | pub enum Exited {}
  type ExitedBody (line 863) | pub struct ExitedBody {
  type Terminated (line 868) | pub enum Terminated {}
  type TerminatedBody (line 877) | pub struct TerminatedBody {
  type Thread (line 883) | pub enum Thread {}
  type ThreadBody (line 892) | pub struct ThreadBody {
  type Output (line 898) | pub enum Output {}
  type OutputBody (line 907) | pub struct OutputBody {
  type Breakpoint (line 926) | pub enum Breakpoint {}
  type BreakpointBody (line 935) | pub struct BreakpointBody {
  type Module (line 941) | pub enum Module {}
  type ModuleBody (line 950) | pub struct ModuleBody {
  type LoadedSource (line 956) | pub enum LoadedSource {}
  type LoadedSourceBody (line 965) | pub struct LoadedSourceBody {
  type Process (line 971) | pub enum Process {}
  type ProcessBody (line 980) | pub struct ProcessBody {
  type Capabilities (line 993) | pub enum Capabilities {}
  type CapabilitiesBody (line 1002) | pub struct CapabilitiesBody {
  type Memory (line 1015) | pub enum Memory {}
  type MemoryBody (line 1024) | pub struct MemoryBody {
  type ConnectionType (line 1033) | pub enum ConnectionType {
  function test_deserialize_module_id_from_number (line 1039) | fn test_deserialize_module_id_from_number() {
  function test_deserialize_module_id_from_string (line 1046) | fn test_deserialize_module_id_from_string() {

FILE: helix-dap/src/client.rs
  type Client (line 30) | pub struct Client {
    method process (line 54) | pub async fn process(
    method streams (line 71) | pub fn streams(
    method tcp (line 103) | pub async fn tcp(
    method stdio (line 112) | pub fn stdio(
    method get_port (line 145) | async fn get_port() -> Option<u16> {
    method starting_request_args (line 159) | pub fn starting_request_args(&self) -> Option<&Value> {
    method tcp_process (line 163) | pub async fn tcp_process(
    method recv (line 203) | async fn recv(
    method id (line 225) | pub fn id(&self) -> DebugAdapterId {
    method connection_type (line 229) | pub fn connection_type(&self) -> Option<ConnectionType> {
    method next_request_id (line 233) | fn next_request_id(&self) -> u64 {
    method resume_application (line 242) | pub fn resume_application(&mut self) {
    method call (line 252) | pub fn call<R: helix_dap_types::Request>(
    method request (line 299) | pub async fn request<R: helix_dap_types::Request>(
    method reply (line 312) | pub fn reply(
    method capabilities (line 347) | pub fn capabilities(&self) -> &DebuggerCapabilities {
    method initialize (line 351) | pub async fn initialize(&mut self, adapter_id: String) -> Result<()> {
    method disconnect (line 374) | pub fn disconnect(
    method terminate (line 382) | pub fn terminate(
    method launch (line 390) | pub fn launch(&mut self, args: serde_json::Value) -> impl Future<Outpu...
    method attach (line 396) | pub fn attach(&mut self, args: serde_json::Value) -> impl Future<Outpu...
    method restart (line 402) | pub fn restart(&self) -> impl Future<Output = Result<Value>> {
    method set_breakpoints (line 411) | pub async fn set_breakpoints(
    method configuration_done (line 436) | pub async fn configuration_done(&self) -> Result<()> {
    method continue_thread (line 441) | pub fn continue_thread(&self, thread_id: ThreadId) -> impl Future<Outp...
    method stack_trace (line 447) | pub async fn stack_trace(
    method threads (line 462) | pub fn threads(&self) -> impl Future<Output = Result<Value>> {
    method scopes (line 466) | pub async fn scopes(&self, frame_id: usize) -> Result<Vec<Scope>> {
    method variables (line 473) | pub async fn variables(&self, variables_reference: usize) -> Result<Ve...
    method step_in (line 486) | pub fn step_in(&self, thread_id: ThreadId) -> impl Future<Output = Res...
    method step_out (line 496) | pub fn step_out(&self, thread_id: ThreadId) -> impl Future<Output = Re...
    method next (line 505) | pub fn next(&self, thread_id: ThreadId) -> impl Future<Output = Result...
    method pause (line 514) | pub fn pause(&self, thread_id: ThreadId) -> impl Future<Output = Resul...
    method eval (line 520) | pub async fn eval(
    method set_exception_breakpoints (line 535) | pub fn set_exception_breakpoints(
    method current_stack_frame (line 544) | pub fn current_stack_frame(&self) -> Option<&StackFrame> {

FILE: helix-dap/src/lib.rs
  type Error (line 13) | pub enum Error {
    method from (line 32) | fn from(value: serde_json::Error) -> Self {
    method from (line 38) | fn from(value: sonic_rs::Error) -> Self {
  type Result (line 29) | pub type Result<T> = core::result::Result<T, Error>;
  type Request (line 44) | pub enum Request {
    method parse (line 50) | pub fn parse(command: &str, arguments: Option<serde_json::Value>) -> R...
  type Event (line 65) | pub enum Event {
    method parse (line 86) | pub fn parse(event: &str, body: Option<serde_json::Value>) -> Result<S...
  function parse_value (line 111) | fn parse_value<T>(value: serde_json::Value) -> Result<T>

FILE: helix-dap/src/registry.rs
  type Registry (line 12) | pub struct Registry {
    method new (line 25) | pub fn new() -> Self {
    method start_client (line 33) | pub fn start_client(
    method remove_client (line 61) | pub fn remove_client(&mut self, id: DebugAdapterId) {
    method get_client (line 65) | pub fn get_client(&self, id: DebugAdapterId) -> Option<&Client> {
    method get_client_mut (line 69) | pub fn get_client_mut(&mut self, id: DebugAdapterId) -> Option<&mut Cl...
    method get_active_client (line 73) | pub fn get_active_client(&self) -> Option<&Client> {
    method get_active_client_mut (line 77) | pub fn get_active_client_mut(&mut self) -> Option<&mut Client> {
    method set_active_client (line 82) | pub fn set_active_client(&mut self, id: DebugAdapterId) {
    method unset_active_client (line 90) | pub fn unset_active_client(&mut self) {
    method current_stack_frame (line 94) | pub fn current_stack_frame(&self) -> Option<&StackFrame> {
  method default (line 101) | fn default() -> Self {
  method fmt (line 111) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {

FILE: helix-dap/src/transport.rs
  type Request (line 17) | pub struct Request {
  type Response (line 26) | pub struct Response {
  type Event (line 36) | pub struct Event {
  type Payload (line 43) | pub enum Payload {
  type Transport (line 53) | pub struct Transport {
    method start (line 60) | pub fn start(
    method recv_server_message (line 85) | async fn recv_server_message(
    method recv_server_error (line 138) | async fn recv_server_error(
    method send_payload_to_server (line 151) | async fn send_payload_to_server(
    method send_string_to_server (line 165) | async fn send_string_to_server(
    method process_response (line 185) | fn process_response(&self, res: Response) -> Result<Response> {
    method process_server_message (line 203) | async fn process_server_message(
    method recv (line 246) | async fn recv(
    method send_inner (line 289) | async fn send_inner(
    method send (line 302) | async fn send(
    method err (line 312) | async fn err(mut server_stderr: Box<dyn AsyncBufRead + Unpin + Send>) {

FILE: helix-event/src/cancel.rs
  function cancelable_future (line 9) | pub async fn cancelable_future<T>(
  type Shared (line 25) | struct Shared {
    method generation (line 43) | fn generation(&self) -> u32 {
    method num_running (line 47) | fn num_running(&self) -> u32 {
    method inc_generation (line 56) | fn inc_generation(&self, num_running: u32) -> (u32, u32) {
    method inc_running (line 73) | fn inc_running(&self, generation: u32) {
    method dec_running (line 94) | fn dec_running(&self, generation: u32) {
  type TaskController (line 127) | pub struct TaskController {
    method new (line 132) | pub fn new() -> Self {
    method cancel (line 138) | pub fn cancel(&mut self) -> bool {
    method is_running (line 144) | pub fn is_running(&self) -> bool {
    method restart (line 149) | pub fn restart(&mut self) -> TaskHandle {
  method drop (line 158) | fn drop(&mut self) {
  type TaskHandle (line 173) | pub struct TaskHandle {
    method canceled (line 197) | pub async fn canceled(&self) {
    method is_canceled (line 204) | pub fn is_canceled(&self) -> bool {
  method clone (line 179) | fn clone(&self) -> Self {
  method drop (line 189) | fn drop(&mut self) {
  function immediate_cancel (line 219) | fn immediate_cancel() {
  function running_count (line 235) | fn running_count() {
  function no_cancel (line 258) | fn no_cancel() {
  function delayed_cancel (line 271) | fn delayed_cancel() {

FILE: helix-event/src/debounce.rs
  type AsyncHook (line 15) | pub trait AsyncHook: Sync + Send + 'static + Sized {
    method handle_event (line 20) | fn handle_event(&mut self, event: Self::Event, timeout: Option<Instant...
    method finish_debounce (line 23) | fn finish_debounce(&mut self);
    method spawn (line 25) | fn spawn(self) -> mpsc::Sender<Self::Event> {
  function run (line 39) | async fn run<Hook: AsyncHook>(mut hook: Hook, mut rx: mpsc::Receiver<Hoo...
  function send_blocking (line 63) | pub fn send_blocking<T>(tx: &Sender<T>, data: T) {

FILE: helix-event/src/hook.rs
  type Opaque (line 23) | struct Opaque(());
  type ErasedHook (line 25) | pub(crate) struct ErasedHook {
    method new_dynamic (line 31) | pub(crate) fn new_dynamic<H: Fn() -> Result<()> + 'static + Send + Sync>(
    method new (line 54) | pub(crate) fn new<E: Event, F: Fn(&mut E) -> Result<()>>(hook: F) -> E...
    method call (line 76) | pub(crate) unsafe fn call<E: Event>(&self, event: &mut E) -> Result<()> {

FILE: helix-event/src/lib.rs
  function register_event (line 54) | pub fn register_event<E: Event + 'static>() {
  function register_hook_raw (line 70) | pub unsafe fn register_hook_raw<E: Event>(
  function register_dynamic_hook (line 77) | pub fn register_dynamic_hook(
  function dispatch (line 84) | pub fn dispatch(e: impl Event) {

FILE: helix-event/src/redraw.rs
  type RenderLockGuard (line 23) | pub type RenderLockGuard = RwLockReadGuard<'static, ()>;
  function request_redraw (line 28) | pub fn request_redraw() {
  function redraw_requested (line 34) | pub fn redraw_requested() -> impl Future<Output = ()> {
  function start_frame (line 41) | pub fn start_frame() {
  function lock_frame (line 51) | pub fn lock_frame() -> RenderLockGuard {
  type RequestRedrawOnDrop (line 56) | pub struct RequestRedrawOnDrop;
  method drop (line 59) | fn drop(&mut self) {

FILE: helix-event/src/registry.rs
  type Registry (line 16) | pub struct Registry {
    method register_event (line 22) | pub fn register_event<E: Event + 'static>(&mut self) {
    method register_hook (line 49) | pub unsafe fn register_hook<E: Event>(
    method register_dynamic_hook (line 66) | pub fn register_dynamic_hook(
    method dispatch (line 80) | pub fn dispatch<E: Event>(&self, mut event: E) {
  function with (line 113) | pub(crate) fn with<T>(f: impl FnOnce(&Registry) -> T) -> T {
  function with_mut (line 117) | pub(crate) fn with_mut<T>(f: impl FnOnce(&mut Registry) -> T) -> T {
  type Event (line 125) | pub unsafe trait Event: Sized {
    constant ID (line 128) | const ID: &'static str;
    constant LIFETIMES (line 129) | const LIFETIMES: usize;

FILE: helix-event/src/runtime.rs
  type RuntimeLocal (line 17) | pub struct RuntimeLocal<T: 'static> {
  type Target (line 25) | type Target = T;
  method deref (line 27) | fn deref(&self) -> &Self::Target {
  type RuntimeLocal (line 43) | pub struct RuntimeLocal<T: 'static> {
  function __new (line 54) | pub const fn __new(init: fn() -> T) -> Self {
  type Target (line 66) | type Target = T;
  method deref (line 67) | fn deref(&self) -> &T {

FILE: helix-event/src/status.rs
  type Severity (line 12) | pub enum Severity {
  type StatusMessage (line 19) | pub struct StatusMessage {
    method from (line 25) | fn from(err: anyhow::Error) -> Self {
    method from (line 34) | fn from(msg: &'static str) -> Self {
  function report (line 46) | pub async fn report(msg: impl Into<StatusMessage>) {
  function report_blocking (line 54) | pub fn report_blocking(msg: impl Into<StatusMessage>) {
  function setup (line 64) | pub fn setup() -> Receiver<StatusMessage> {

FILE: helix-event/src/test.rs
  function smoke_test (line 9) | fn smoke_test() {
  function dynamic (line 60) | fn dynamic() {

FILE: helix-loader/build.rs
  constant MAJOR (line 5) | const MAJOR: &str = env!("CARGO_PKG_VERSION_MAJOR");
  constant MINOR (line 6) | const MINOR: &str = env!("CARGO_PKG_VERSION_MINOR");
  constant PATCH (line 7) | const PATCH: &str = env!("CARGO_PKG_VERSION_PATCH");
  function main (line 9) | fn main() {

FILE: helix-loader/src/config.rs
  function default_lang_config (line 4) | pub fn default_lang_config() -> toml::Value {
  function user_lang_config (line 11) | pub fn user_lang_config() -> Result<toml::Value, toml::de::Error> {

FILE: helix-loader/src/grammar.rs
  constant DYLIB_EXTENSION (line 15) | const DYLIB_EXTENSION: &str = "dylib";
  constant DYLIB_EXTENSION (line 18) | const DYLIB_EXTENSION: &str = "so";
  constant DYLIB_EXTENSION (line 21) | const DYLIB_EXTENSION: &str = "dll";
  constant DYLIB_EXTENSION (line 24) | const DYLIB_EXTENSION: &str = "wasm";
  type Configuration (line 27) | struct Configuration {
  type GrammarSelection (line 35) | pub enum GrammarSelection {
  type GrammarConfiguration (line 42) | pub struct GrammarConfiguration {
  type GrammarSource (line 50) | pub enum GrammarSource {
  constant BUILD_TARGET (line 63) | const BUILD_TARGET: &str = env!("BUILD_TARGET");
  constant REMOTE_NAME (line 64) | const REMOTE_NAME: &str = "origin";
  function get_language (line 67) | pub fn get_language(name: &str) -> Result<Option<Grammar>> {
  function get_language (line 72) | pub fn get_language(name: &str) -> Result<Option<Grammar>> {
  function ensure_git_is_available (line 84) | fn ensure_git_is_available() -> Result<()> {
  function fetch_grammars (line 89) | pub fn fetch_grammars() -> Result<()> {
  function build_grammars (line 150) | pub fn build_grammars(target: Option<String>) -> Result<()> {
  function get_grammar_configs (line 197) | fn get_grammar_configs() -> Result<Vec<GrammarConfiguration>> {
  function get_grammar_names (line 219) | pub fn get_grammar_names() -> Result<Option<HashSet<String>>> {
  function run_parallel (line 240) | fn run_parallel<F, Res>(grammars: Vec<GrammarConfiguration>, job: F) -> ...
  type FetchStatus (line 264) | enum FetchStatus {
  type VendoredGrammar (line 270) | struct VendoredGrammar {
    method new (line 275) | fn new(grammar: &str) -> Self {
    method revision (line 287) | fn revision(&self) -> Option<String> {
    method fetch (line 295) | fn fetch(&self, remote: &str, rev: &str) -> Result<()> {
    method init (line 307) | fn init(&self, remote: &str) -> Result<()> {
    method reinit (line 328) | fn reinit(&self, remote: &str) -> Result<()> {
    method remote (line 335) | fn remote(&self) -> Option<String> {
    method set_remote (line 340) | fn set_remote(&self, remote: &str) -> Result<()> {
  function fetch_grammar (line 347) | fn fetch_grammar(grammar: GrammarConfiguration) -> Result<FetchStatus> {
  function git (line 372) | fn git<I, S>(repository_dir: &Path, args: I) -> Result<String>
  type BuildStatus (line 396) | enum BuildStatus {
  function build_grammar (line 401) | fn build_grammar(grammar: GrammarConfiguration, target: Option<&str>) ->...
  function build_tree_sitter_library (line 439) | fn build_tree_sitter_library(
  function needs_recompile (line 623) | fn needs_recompile(
  function mtime (line 643) | fn mtime(path: &Path) -> Result<SystemTime> {
  function load_runtime_file (line 649) | pub fn load_runtime_file(language: &str, filename: &str) -> Result<Strin...

FILE: helix-loader/src/lib.rs
  constant VERSION_AND_GIT_HASH (line 9) | pub const VERSION_AND_GIT_HASH: &str = env!("VERSION_AND_GIT_HASH");
  function initialize_config_file (line 18) | pub fn initialize_config_file(specified_file: Option<PathBuf>) {
  function initialize_log_file (line 24) | pub fn initialize_log_file(specified_file: Option<PathBuf>) {
  function prioritize_runtime_dirs (line 41) | fn prioritize_runtime_dirs() -> Vec<PathBuf> {
  function runtime_dirs (line 84) | pub fn runtime_dirs() -> &'static [PathBuf] {
  function find_runtime_file (line 93) | fn find_runtime_file(rel_path: &Path) -> Option<PathBuf> {
  function runtime_file (line 110) | pub fn runtime_file(rel_path: impl AsRef<Path>) -> PathBuf {
  function config_dir (line 119) | pub fn config_dir() -> PathBuf {
  function cache_dir (line 127) | pub fn cache_dir() -> PathBuf {
  function config_file (line 135) | pub fn config_file() -> PathBuf {
  function log_file (line 139) | pub fn log_file() -> PathBuf {
  function workspace_config_file (line 143) | pub fn workspace_config_file() -> PathBuf {
  function lang_config_file (line 147) | pub fn lang_config_file() -> PathBuf {
  function default_log_file (line 151) | pub fn default_log_file() -> PathBuf {
  function merge_toml_values (line 187) | pub fn merge_toml_values(left: toml::Value, right: toml::Value, merge_de...
  function find_workspace (line 245) | pub fn find_workspace() -> (PathBuf, bool) {
  function find_workspace_in (line 250) | pub fn find_workspace_in(dir: impl AsRef<Path>) -> (PathBuf, bool) {
  function default_config_file (line 265) | fn default_config_file() -> PathBuf {
  function ensure_parent_dir (line 269) | fn ensure_parent_dir(path: &Path) {
  function language_toml_map_merges (line 285) | fn language_toml_map_merges() {
  function language_toml_nested_array_merges (line 320) | fn language_toml_nested_array_merges() {

FILE: helix-loader/src/main.rs
  function main (line 7) | fn main() -> Result<()> {

FILE: helix-lsp-types/src/call_hierarchy.rs
  type CallHierarchyClientCapabilities (line 9) | pub type CallHierarchyClientCapabilities = DynamicRegistrationClientCapa...
  type CallHierarchyOptions (line 13) | pub struct CallHierarchyOptions {
  type CallHierarchyServerCapability (line 20) | pub enum CallHierarchyServerCapability {
    method from (line 26) | fn from(from: CallHierarchyOptions) -> Self {
    method from (line 32) | fn from(from: bool) -> Self {
  type CallHierarchyPrepareParams (line 39) | pub struct CallHierarchyPrepareParams {
  type CallHierarchyItem (line 49) | pub struct CallHierarchyItem {
  type CallHierarchyIncomingCallsParams (line 81) | pub struct CallHierarchyIncomingCallsParams {
  type CallHierarchyIncomingCall (line 94) | pub struct CallHierarchyIncomingCall {
  type CallHierarchyOutgoingCallsParams (line 105) | pub struct CallHierarchyOutgoingCallsParams {
  type CallHierarchyOutgoingCall (line 118) | pub struct CallHierarchyOutgoingCall {

FILE: helix-lsp-types/src/code_action.rs
  type CodeActionProviderCapability (line 12) | pub enum CodeActionProviderCapability {
    method from (line 18) | fn from(from: CodeActionOptions) -> Self {
    method from (line 24) | fn from(from: bool) -> Self {
  type CodeActionClientCapabilities (line 31) | pub struct CodeActionClientCapabilities {
  type CodeActionCapabilityResolveSupport (line 87) | pub struct CodeActionCapabilityResolveSupport {
  type CodeActionLiteralSupport (line 94) | pub struct CodeActionLiteralSupport {
  type CodeActionKindLiteralSupport (line 101) | pub struct CodeActionKindLiteralSupport {
  type CodeActionParams (line 112) | pub struct CodeActionParams {
  type CodeActionResponse (line 130) | pub type CodeActionResponse = Vec<CodeActionOrCommand>;
  type CodeActionOrCommand (line 135) | pub enum CodeActionOrCommand {
    method from (line 141) | fn from(command: Command) -> Self {
    method from (line 147) | fn from(action: CodeAction) -> Self {
  type CodeActionKind (line 153) | pub struct CodeActionKind(Cow<'static, str>);
    constant EMPTY (line 157) | pub const EMPTY: CodeActionKind = CodeActionKind::new("");
    constant QUICKFIX (line 160) | pub const QUICKFIX: CodeActionKind = CodeActionKind::new("quickfix");
    constant REFACTOR (line 163) | pub const REFACTOR: CodeActionKind = CodeActionKind::new("refactor");
    constant REFACTOR_EXTRACT (line 174) | pub const REFACTOR_EXTRACT: CodeActionKind = CodeActionKind::new("refa...
    constant REFACTOR_INLINE (line 184) | pub const REFACTOR_INLINE: CodeActionKind = CodeActionKind::new("refac...
    constant REFACTOR_REWRITE (line 196) | pub const REFACTOR_REWRITE: CodeActionKind = CodeActionKind::new("refa...
    constant SOURCE (line 201) | pub const SOURCE: CodeActionKind = CodeActionKind::new("source");
    constant SOURCE_ORGANIZE_IMPORTS (line 204) | pub const SOURCE_ORGANIZE_IMPORTS: CodeActionKind =
    constant SOURCE_FIX_ALL (line 214) | pub const SOURCE_FIX_ALL: CodeActionKind = CodeActionKind::new("source...
    method new (line 216) | pub const fn new(tag: &'static str) -> Self {
    method as_str (line 220) | pub fn as_str(&self) -> &str {
    method from (line 226) | fn from(from: String) -> Self {
    method from (line 232) | fn from(from: &'static str) -> Self {
  type CodeAction (line 239) | pub struct CodeAction {
  type CodeActionDisabled (line 300) | pub struct CodeActionDisabled {
  type CodeActionTriggerKind (line 312) | pub struct CodeActionTriggerKind(i32);
  type CodeActionContext (line 330) | pub struct CodeActionContext {
  type CodeActionOptions (line 350) | pub struct CodeActionOptions {
  function test_code_action_response (line 375) | fn test_code_action_response() {

FILE: helix-lsp-types/src/code_lens.rs
  type CodeLensClientCapabilities (line 9) | pub type CodeLensClientCapabilities = DynamicRegistrationClientCapabilit...
  type CodeLensOptions (line 14) | pub struct CodeLensOptions {
  type CodeLensParams (line 22) | pub struct CodeLensParams {
  type CodeLens (line 40) | pub struct CodeLens {
  type CodeLensWorkspaceClientCapabilities (line 56) | pub struct CodeLensWorkspaceClientCapabilities {

FILE: helix-lsp-types/src/color.rs
  type DocumentColorClientCapabilities (line 7) | pub type DocumentColorClientCapabilities = DynamicRegistrationClientCapa...
  type ColorProviderOptions (line 11) | pub struct ColorProviderOptions {}
  type StaticTextDocumentColorProviderOptions (line 15) | pub struct StaticTextDocumentColorProviderOptions {
  type ColorProviderCapability (line 26) | pub enum ColorProviderCapability {
    method from (line 33) | fn from(from: ColorProviderOptions) -> Self {
    method from (line 39) | fn from(from: StaticTextDocumentColorProviderOptions) -> Self {
    method from (line 45) | fn from(from: bool) -> Self {
  type DocumentColorParams (line 52) | pub struct DocumentColorParams {
  type ColorInformation (line 65) | pub struct ColorInformation {
  type Color (line 74) | pub struct Color {
  type ColorPresentationParams (line 87) | pub struct ColorPresentationParams {
  type ColorPresentation (line 106) | pub struct ColorPresentation {

FILE: helix-lsp-types/src/completion.rs
  type InsertTextFormat (line 16) | pub struct InsertTextFormat(i32);
  type CompletionItemKind (line 27) | pub struct CompletionItemKind(i32);
  type CompletionItemCapability (line 60) | pub struct CompletionItemCapability {
  type CompletionItemCapabilityResolveSupport (line 131) | pub struct CompletionItemCapabilityResolveSupport {
  type InsertTextModeSupport (line 138) | pub struct InsertTextModeSupport {
  type InsertTextMode (line 148) | pub struct InsertTextMode(i32);
  type CompletionItemTag (line 171) | pub struct CompletionItemTag(i32);
  type CompletionItemKindCapability (line 180) | pub struct CompletionItemKindCapability {
  type CompletionListCapability (line 195) | pub struct CompletionListCapability {
  type CompletionClientCapabilities (line 210) | pub struct CompletionClientCapabilities {
  type InsertReplaceEdit (line 248) | pub struct InsertReplaceEdit {
  type CompletionTextEdit (line 261) | pub enum CompletionTextEdit {
    method from (line 267) | fn from(edit: TextEdit) -> Self {
    method from (line 273) | fn from(edit: InsertReplaceEdit) -> Self {
  type CompletionOptions (line 281) | pub struct CompletionOptions {
  type CompletionOptionsCompletionItem (line 324) | pub struct CompletionOptionsCompletionItem {
  type CompletionRegistrationOptions (line 335) | pub struct CompletionRegistrationOptions {
  type CompletionResponse (line 345) | pub enum CompletionResponse {
    method from (line 351) | fn from(items: Vec<CompletionItem>) -> Self {
    method from (line 357) | fn from(list: CompletionList) -> Self {
  type CompletionParams (line 364) | pub struct CompletionParams {
  type CompletionContext (line 382) | pub struct CompletionContext {
  type CompletionTriggerKind (line 395) | pub struct CompletionTriggerKind(i32);
  type CompletionList (line 408) | pub struct CompletionList {
  type CompletionItem (line 419) | pub struct CompletionItem {
    method new_simple (line 545) | pub fn new_simple(label: String, detail: String) -> CompletionItem {
  type CompletionItemLabelDetails (line 559) | pub struct CompletionItemLabelDetails {
  function test_tag_support_deserialization (line 579) | fn test_tag_support_deserialization() {
  function test_debug_enum (line 604) | fn test_debug_enum() {
  function test_try_from_enum (line 613) | fn test_try_from_enum() {

FILE: helix-lsp-types/src/document_diagnostic.rs
  type DiagnosticClientCapabilities (line 15) | pub struct DiagnosticClientCapabilities {
  type DiagnosticOptions (line 33) | pub struct DiagnosticOptions {
  function serialize_option_arc_str (line 56) | fn serialize_option_arc_str<S: serde::Serializer>(
  function deserialize_option_arc_str (line 63) | fn deserialize_option_arc_str<'de, D: serde::Deserializer<'de>>(
  type DiagnosticRegistrationOptions (line 74) | pub struct DiagnosticRegistrationOptions {
  type DiagnosticServerCapabilities (line 87) | pub enum DiagnosticServerCapabilities {
  type DocumentDiagnosticParams (line 97) | pub struct DocumentDiagnosticParams {
  type FullDocumentDiagnosticReport (line 125) | pub struct FullDocumentDiagnosticReport {
  type UnchangedDocumentDiagnosticReport (line 142) | pub struct UnchangedDocumentDiagnosticReport {
  type DocumentDiagnosticReportKind (line 152) | pub enum DocumentDiagnosticReportKind {
    method from (line 160) | fn from(from: FullDocumentDiagnosticReport) -> Self {
    method from (line 166) | fn from(from: UnchangedDocumentDiagnosticReport) -> Self {
  type RelatedFullDocumentDiagnosticReport (line 176) | pub struct RelatedFullDocumentDiagnosticReport {
  type RelatedUnchangedDocumentDiagnosticReport (line 198) | pub struct RelatedUnchangedDocumentDiagnosticReport {
  type DocumentDiagnosticReport (line 224) | pub enum DocumentDiagnosticReport {
    method from (line 232) | fn from(from: RelatedFullDocumentDiagnosticReport) -> Self {
    method from (line 238) | fn from(from: RelatedUnchangedDocumentDiagnosticReport) -> Self {
  type DocumentDiagnosticReportPartialResult (line 248) | pub struct DocumentDiagnosticReportPartialResult {
  type DocumentDiagnosticReportResult (line 258) | pub enum DocumentDiagnosticReportResult {
    method from (line 264) | fn from(from: DocumentDiagnosticReport) -> Self {
    method from (line 270) | fn from(from: DocumentDiagnosticReportPartialResult) -> Self {
  type DiagnosticServerCancellationData (line 282) | pub struct DiagnosticServerCancellationData {
  method default (line 287) | fn default() -> Self {

FILE: helix-lsp-types/src/document_highlight.rs
  type DocumentHighlightClientCapabilities (line 8) | pub type DocumentHighlightClientCapabilities = DynamicRegistrationClient...
  type DocumentHighlightParams (line 12) | pub struct DocumentHighlightParams {
  type DocumentHighlight (line 27) | pub struct DocumentHighlight {
  type DocumentHighlightKind (line 39) | pub struct DocumentHighlightKind(i32);

FILE: helix-lsp-types/src/document_link.rs
  type DocumentLinkClientCapabilities (line 10) | pub struct DocumentLinkClientCapabilities {
  type DocumentLinkOptions (line 22) | pub struct DocumentLinkOptions {
  type DocumentLinkParams (line 33) | pub struct DocumentLinkParams {
  type DocumentLink (line 47) | pub struct DocumentLink {

FILE: helix-lsp-types/src/document_symbols.rs
  type DocumentSymbolClientCapabilities (line 12) | pub struct DocumentSymbolClientCapabilities {
  type DocumentSymbolResponse (line 40) | pub enum DocumentSymbolResponse {
    method from (line 46) | fn from(info: Vec<SymbolInformation>) -> Self {
    method from (line 52) | fn from(symbols: Vec<DocumentSymbol>) -> Self {
  type DocumentSymbolParams (line 59) | pub struct DocumentSymbolParams {
  type DocumentSymbol (line 76) | pub struct DocumentSymbol {
  type SymbolInformation (line 110) | pub struct SymbolInformation {

FILE: helix-lsp-types/src/error_codes.rs
  constant SERVER_NOT_INITIALIZED (line 8) | pub const SERVER_NOT_INITIALIZED: i64 = -32002;
  constant UNKNOWN_ERROR_CODE (line 13) | pub const UNKNOWN_ERROR_CODE: i64 = -32001;
  constant LSP_RESERVED_ERROR_RANGE_START (line 19) | pub const LSP_RESERVED_ERROR_RANGE_START: i64 = -32899;
  constant REQUEST_FAILED (line 27) | pub const REQUEST_FAILED: i64 = -32803;
  constant SERVER_CANCELLED (line 34) | pub const SERVER_CANCELLED: i64 = -32802;
  constant CONTENT_MODIFIED (line 44) | pub const CONTENT_MODIFIED: i64 = -32801;
  constant REQUEST_CANCELLED (line 48) | pub const REQUEST_CANCELLED: i64 = -32800;
  constant LSP_RESERVED_ERROR_RANGE_END (line 54) | pub const LSP_RESERVED_ERROR_RANGE_END: i64 = -32800;

FILE: helix-lsp-types/src/file_operations.rs
  type WorkspaceFileOperationsClientCapabilities (line 5) | pub struct WorkspaceFileOperationsClientCapabilities {
  type WorkspaceFileOperationsServerCapabilities (line 38) | pub struct WorkspaceFileOperationsServerCapabilities {
  type FileOperationRegistrationOptions (line 73) | pub struct FileOperationRegistrationOptions {
  type FileOperationFilter (line 84) | pub struct FileOperationFilter {
  type FileOperationPatternKind (line 98) | pub enum FileOperationPatternKind {
  type FileOperationPatternOptions (line 112) | pub struct FileOperationPatternOptions {
  type FileOperationPattern (line 124) | pub struct FileOperationPattern {
  type CreateFilesParams (line 155) | pub struct CreateFilesParams {
  type FileCreate (line 164) | pub struct FileCreate {
  type RenameFilesParams (line 175) | pub struct RenameFilesParams {
  type FileRename (line 186) | pub struct FileRename {
  type DeleteFilesParams (line 200) | pub struct DeleteFilesParams {
  type FileDelete (line 210) | pub struct FileDelete {

FILE: helix-lsp-types/src/folding_range.rs
  type FoldingRangeParams (line 8) | pub struct FoldingRangeParams {
  type FoldingRangeProviderCapability (line 21) | pub enum FoldingRangeProviderCapability {
    method from (line 28) | fn from(from: StaticTextDocumentColorProviderOptions) -> Self {
    method from (line 34) | fn from(from: FoldingProviderOptions) -> Self {
    method from (line 40) | fn from(from: bool) -> Self {
  type FoldingProviderOptions (line 46) | pub struct FoldingProviderOptions {}
  type FoldingRangeKindCapability (line 50) | pub struct FoldingRangeKindCapability {
  type FoldingRangeCapability (line 61) | pub struct FoldingRangeCapability {
  type FoldingRangeClientCapabilities (line 72) | pub struct FoldingRangeClientCapabilities {
  type FoldingRangeKind (line 105) | pub enum FoldingRangeKind {
  type FoldingRange (line 117) | pub struct FoldingRange {

FILE: helix-lsp-types/src/formatting.rs
  type DocumentFormattingClientCapabilities (line 10) | pub type DocumentFormattingClientCapabilities = DynamicRegistrationClien...
  type DocumentRangeFormattingClientCapabilities (line 11) | pub type DocumentRangeFormattingClientCapabilities = DynamicRegistration...
  type DocumentOnTypeFormattingClientCapabilities (line 12) | pub type DocumentOnTypeFormattingClientCapabilities = DynamicRegistratio...
  type DocumentOnTypeFormattingOptions (line 17) | pub struct DocumentOnTypeFormattingOptions {
  type DocumentFormattingParams (line 28) | pub struct DocumentFormattingParams {
  type FormattingOptions (line 42) | pub struct FormattingOptions {
  type FormattingProperty (line 68) | pub enum FormattingProperty {
  type DocumentRangeFormattingParams (line 76) | pub struct DocumentRangeFormattingParams {
  type DocumentOnTypeFormattingParams (line 92) | pub struct DocumentOnTypeFormattingParams {
  type DocumentOnTypeFormattingRegistrationOptions (line 107) | pub struct DocumentOnTypeFormattingRegistrationOptions {
  function formatting_options (line 126) | fn formatting_options() {

FILE: helix-lsp-types/src/hover.rs
  type HoverClientCapabilities (line 10) | pub struct HoverClientCapabilities {
  type HoverOptions (line 24) | pub struct HoverOptions {
  type HoverRegistrationOptions (line 31) | pub struct HoverRegistrationOptions {
  type HoverProviderCapability (line 41) | pub enum HoverProviderCapability {
    method from (line 47) | fn from(from: HoverOptions) -> Self {
    method from (line 53) | fn from(from: bool) -> Self {
  type HoverParams (line 60) | pub struct HoverParams {
  type Hover (line 70) | pub struct Hover {
  type HoverContents (line 82) | pub enum HoverContents {

FILE: helix-lsp-types/src/inlay_hint.rs
  type InlayHintServerCapabilities (line 11) | pub enum InlayHintServerCapabilities {
  type InlayHintClientCapabilities (line 21) | pub struct InlayHintClientCapabilities {
  type InlayHintOptions (line 37) | pub struct InlayHintOptions {
  type InlayHintRegistrationOptions (line 52) | pub struct InlayHintRegistrationOptions {
  type InlayHintParams (line 68) | pub struct InlayHintParams {
  type InlayHint (line 84) | pub struct InlayHint {
  type InlayHintLabel (line 141) | pub enum InlayHintLabel {
    method from (line 148) | fn from(from: String) -> Self {
    method from (line 155) | fn from(from: Vec<InlayHintLabelPart>) -> Self {
  type InlayHintTooltip (line 162) | pub enum InlayHintTooltip {
    method from (line 169) | fn from(from: String) -> Self {
    method from (line 176) | fn from(from: MarkupContent) -> Self {
  type InlayHintLabelPart (line 185) | pub struct InlayHintLabelPart {
  type InlayHintLabelPartTooltip (line 219) | pub enum InlayHintLabelPartTooltip {
    method from (line 226) | fn from(from: String) -> Self {
    method from (line 233) | fn from(from: MarkupContent) -> Self {
  type InlayHintKind (line 243) | pub struct InlayHintKind(i32);
  type InlayHintResolveClientCapabilities (line 259) | pub struct InlayHintResolveClientCapabilities {
  type InlayHintWorkspaceClientCapabilities (line 269) | pub struct InlayHintWorkspaceClientCapabilities {

FILE: helix-lsp-types/src/inline_completion.rs
  type InlineCompletionClientCapabilities (line 12) | pub struct InlineCompletionClientCapabilities {
  type InlineCompletionOptions (line 22) | pub struct InlineCompletionOptions {
  type InlineCompletionRegistrationOptions (line 31) | pub struct InlineCompletionRegistrationOptions {
  type InlineCompletionParams (line 47) | pub struct InlineCompletionParams {
  type InlineCompletionTriggerKind (line 62) | pub struct InlineCompletionTriggerKind(i32);
  type SelectedCompletionInfo (line 79) | pub struct SelectedCompletionInfo {
  type InlineCompletionContext (line 93) | pub struct InlineCompletionContext {
  type InlineCompletionResponse (line 115) | pub enum InlineCompletionResponse {
  type InlineCompletionList (line 124) | pub struct InlineCompletionList {
  type InlineCompletionItem (line 135) | pub struct InlineCompletionItem {

FILE: helix-lsp-types/src/inline_value.rs
  type InlineValueClientCapabilities (line 8) | pub type InlineValueClientCapabilities = DynamicRegistrationClientCapabi...
  type InlineValueServerCapabilities (line 12) | pub enum InlineValueServerCapabilities {
  type InlineValueOptions (line 21) | pub struct InlineValueOptions {
  type InlineValueRegistrationOptions (line 30) | pub struct InlineValueRegistrationOptions {
  type InlineValueParams (line 46) | pub struct InlineValueParams {
  type InlineValueContext (line 64) | pub struct InlineValueContext {
  type InlineValueText (line 78) | pub struct InlineValueText {
  type InlineValueVariableLookup (line 96) | pub struct InlineValueVariableLookup {
  type InlineValueEvaluatableExpression (line 120) | pub struct InlineValueEvaluatableExpression {
  type InlineValue (line 141) | pub enum InlineValue {
    method from (line 149) | fn from(from: InlineValueText) -> Self {
    method from (line 156) | fn from(from: InlineValueVariableLookup) -> Self {
    method from (line 163) | fn from(from: InlineValueEvaluatableExpression) -> Self {
  type InlineValueWorkspaceClientCapabilities (line 173) | pub struct InlineValueWorkspaceClientCapabilities {
  function inline_values (line 192) | fn inline_values() {

FILE: helix-lsp-types/src/lib.rs
  type PascalCaseBuf (line 29) | type PascalCaseBuf = [u8; 32];
  function fmt_pascal_case_const (line 30) | const fn fmt_pascal_case_const(name: &str) -> (PascalCaseBuf, usize) {
  function fmt_pascal_case (line 56) | fn fmt_pascal_case(f: &mut std::fmt::Formatter<'_>, name: &str) -> std::...
  type NumberOrString (line 209) | pub enum NumberOrString {
  type CancelParams (line 217) | pub struct CancelParams {
  type LSPAny (line 227) | pub type LSPAny = serde_json::Value;
  type LSPObject (line 232) | pub type LSPObject = serde_json::Map<String, serde_json::Value>;
  type LSPArray (line 237) | pub type LSPArray = Vec<serde_json::Value>;
  type Position (line 244) | pub struct Position {
    method new (line 256) | pub fn new(line: u32, character: u32) -> Position {
  type Range (line 264) | pub struct Range {
    method new (line 272) | pub fn new(start: Position, end: Position) -> Range {
  type Location (line 279) | pub struct Location {
    method new (line 285) | pub fn new(uri: Url, range: Range) -> Location {
  type LocationLink (line 293) | pub struct LocationLink {
  type PositionEncodingKind (line 316) | pub struct PositionEncodingKind(std::borrow::Cow<'static, str>);
    constant UTF8 (line 320) | pub const UTF8: PositionEncodingKind = PositionEncodingKind::new("utf-...
    constant UTF16 (line 326) | pub const UTF16: PositionEncodingKind = PositionEncodingKind::new("utf...
    constant UTF32 (line 333) | pub const UTF32: PositionEncodingKind = PositionEncodingKind::new("utf...
    method new (line 335) | pub const fn new(tag: &'static str) -> Self {
    method as_str (line 339) | pub fn as_str(&self) -> &str {
    method from (line 345) | fn from(from: String) -> Self {
    method from (line 351) | fn from(from: &'static str) -> Self {
  type Diagnostic (line 360) | pub struct Diagnostic {
    method new (line 411) | pub fn new(
    method new_simple (line 432) | pub fn new_simple(range: Range, message: String) -> Diagnostic {
    method new_with_code_number (line 436) | pub fn new_with_code_number(
  type CodeDescription (line 406) | pub struct CodeDescription {
  type DiagnosticSeverity (line 451) | pub struct DiagnosticSeverity(i32);
  type DiagnosticRelatedInformation (line 469) | pub struct DiagnosticRelatedInformation {
  type DiagnosticTag (line 480) | pub struct DiagnosticTag(i32);
  type Command (line 500) | pub struct Command {
    method new (line 512) | pub fn new(title: String, command: String, arguments: Option<Vec<Value...
  type TextEdit (line 528) | pub struct TextEdit {
    method new (line 538) | pub fn new(range: Range, new_text: String) -> TextEdit {
  type ChangeAnnotationIdentifier (line 547) | pub type ChangeAnnotationIdentifier = String;
  type AnnotatedTextEdit (line 554) | pub struct AnnotatedTextEdit {
  type TextDocumentEdit (line 569) | pub struct TextDocumentEdit {
  type ChangeAnnotation (line 585) | pub struct ChangeAnnotation {
  type ChangeAnnotationWorkspaceEditClientCapabilities (line 603) | pub struct ChangeAnnotationWorkspaceEditClientCapabilities {
  type CreateFileOptions (line 614) | pub struct CreateFileOptions {
  type CreateFile (line 626) | pub struct CreateFile {
  type RenameFileOptions (line 643) | pub struct RenameFileOptions {
  type RenameFile (line 655) | pub struct RenameFile {
  type DeleteFileOptions (line 674) | pub struct DeleteFileOptions {
  type DeleteFile (line 692) | pub struct DeleteFile {
  type WorkspaceEdit (line 706) | pub struct WorkspaceEdit {
    method new (line 913) | pub fn new(changes: HashMap<Url, Vec<TextEdit>>) -> WorkspaceEdit {
  type DocumentChanges (line 740) | pub enum DocumentChanges {
  type DocumentChangeOperation (line 762) | pub enum DocumentChangeOperation {
  type ResourceOp (line 769) | pub enum ResourceOp {
  type DidChangeConfigurationClientCapabilities (line 775) | pub type DidChangeConfigurationClientCapabilities = DynamicRegistrationC...
  type ConfigurationParams (line 779) | pub struct ConfigurationParams {
  type ConfigurationItem (line 785) | pub struct ConfigurationItem {
  function deserialize (line 801) | pub fn deserialize<'de, D, V>(deserializer: D) -> Result<Option<HashMap<...
  function serialize (line 889) | pub fn serialize<S, V>(
  type TextDocumentIdentifier (line 924) | pub struct TextDocumentIdentifier {
    method new (line 934) | pub fn new(uri: Url) -> TextDocumentIdentifier {
  type TextDocumentItem (line 942) | pub struct TextDocumentItem {
    method new (line 958) | pub fn new(uri: Url, language_id: String, version: i32, text: String) ...
  type VersionedTextDocumentIdentifier (line 970) | pub struct VersionedTextDocumentIdentifier {
    method new (line 983) | pub fn new(uri: Url, version: i32) -> VersionedTextDocumentIdentifier {
  type OptionalVersionedTextDocumentIdentifier (line 990) | pub struct OptionalVersionedTextDocumentIdentifier {
    method new (line 1008) | pub fn new(uri: Url, version: i32) -> OptionalVersionedTextDocumentIde...
  type TextDocumentPositionParams (line 1019) | pub struct TextDocumentPositionParams {
    method new (line 1032) | pub fn new(
  type DocumentFilter (line 1050) | pub struct DocumentFilter {
  type DocumentSelector (line 1065) | pub type DocumentSelector = Vec<DocumentFilter>;
  type InitializeParams (line 1071) | pub struct InitializeParams {
  type ClientInfo (line 1131) | pub struct ClientInfo {
  type InitializedParams (line 1140) | pub struct InitializedParams {}
  type GenericRegistrationOptions (line 1143) | pub struct GenericRegistrationOptions {
  type GenericOptions (line 1155) | pub struct GenericOptions {
  type GenericParams (line 1161) | pub struct GenericParams {
  type DynamicRegistrationClientCapabilities (line 1174) | pub struct DynamicRegistrationClientCapabilities {
  type GotoCapability (line 1182) | pub struct GotoCapability {
  type WorkspaceEditClientCapabilities (line 1193) | pub struct WorkspaceEditClientCapabilities {
  type ResourceOperationKind (line 1226) | pub enum ResourceOperationKind {
  type FailureHandlingKind (line 1234) | pub enum FailureHandlingKind {
  type SymbolKind (line 1244) | pub struct SymbolKind(i32);
  type SymbolKindCapability (line 1279) | pub struct SymbolKindCapability {
  type WorkspaceClientCapabilities (line 1294) | pub struct WorkspaceClientCapabilities {
  type TextDocumentSyncClientCapabilities (line 1370) | pub struct TextDocumentSyncClientCapabilities {
  type PublishDiagnosticsClientCapabilities (line 1392) | pub struct PublishDiagnosticsClientCapabilities {
  type TagSupport (line 1430) | pub struct TagSupport<T> {
  function deserialize_compat (line 1439) | fn deserialize_compat<'de, S>(serializer: S) -> Result<Option<TagSupport...
  type TextDocumentClientCapabilities (line 1460) | pub struct TextDocumentClientCapabilities {
  type ClientCapabilities (line 1606) | pub struct ClientCapabilities {
  type GeneralClientCapabilities (line 1637) | pub struct GeneralClientCapabilities {
  type StaleRequestSupportClientCapabilities (line 1687) | pub struct StaleRequestSupportClientCapabilities {
  type RegularExpressionsClientCapabilities (line 1699) | pub struct RegularExpressionsClientCapabilities {
  type MarkdownClientCapabilities (line 1710) | pub struct MarkdownClientCapabilities {
  type InitializeResult (line 1728) | pub struct InitializeResult {
  type ServerInfo (line 1745) | pub struct ServerInfo {
  type InitializeError (line 1754) | pub struct InitializeError {
  type TextDocumentSyncKind (line 1768) | pub struct TextDocumentSyncKind(i32);
  type ExecuteCommandClientCapabilities (line 1783) | pub type ExecuteCommandClientCapabilities = DynamicRegistrationClientCap...
  type ExecuteCommandOptions (line 1787) | pub struct ExecuteCommandOptions {
  type SaveOptions (line 1798) | pub struct SaveOptions {
  type TextDocumentSyncSaveOptions (line 1806) | pub enum TextDocumentSyncSaveOptions {
    method from (line 1812) | fn from(from: SaveOptions) -> Self {
    method from (line 1818) | fn from(from: bool) -> Self {
  type TextDocumentSyncOptions (line 1825) | pub struct TextDocumentSyncOptions {
  type OneOf (line 1850) | pub enum OneOf<A, B> {
  type TextDocumentSyncCapability (line 1857) | pub enum TextDocumentSyncCapability {
    method from (line 1863) | fn from(from: TextDocumentSyncOptions) -> Self {
    method from (line 1869) | fn from(from: TextDocumentSyncKind) -> Self {
  type ImplementationProviderCapability (line 1876) | pub enum ImplementationProviderCapability {
    method from (line 1882) | fn from(from: StaticTextDocumentRegistrationOptions) -> Self {
    method from (line 1888) | fn from(from: bool) -> Self {
  type TypeDefinitionProviderCapability (line 1895) | pub enum TypeDefinitionProviderCapability {
    method from (line 1901) | fn from(from: StaticTextDocumentRegistrationOptions) -> Self {
    method from (line 1907) | fn from(from: bool) -> Self {
  type ServerCapabilities (line 1914) | pub struct ServerCapabilities {
  type WorkspaceServerCapabilities (line 2073) | pub struct WorkspaceServerCapabilities {
  type Registration (line 2085) | pub struct Registration {
  type RegistrationParams (line 2099) | pub struct RegistrationParams {
  type TextDocumentRegistrationOptions (line 2107) | pub struct TextDocumentRegistrationOptions {
  type DeclarationCapability (line 2115) | pub enum DeclarationCapability {
  type DeclarationRegistrationOptions (line 2123) | pub struct DeclarationRegistrationOptions {
  type DeclarationOptions (line 2136) | pub struct DeclarationOptions {
  type StaticRegistrationOptions (line 2143) | pub struct StaticRegistrationOptions {
  type WorkDoneProgressOptions (line 2150) | pub struct WorkDoneProgressOptions {
  type DocumentFormattingOptions (line 2157) | pub struct DocumentFormattingOptions {
  type DocumentRangeFormattingOptions (line 2164) | pub struct DocumentRangeFormattingOptions {
  type DefinitionOptions (line 2171) | pub struct DefinitionOptions {
  type DocumentSymbolOptions (line 2178) | pub struct DocumentSymbolOptions {
  type ReferencesOptions (line 2192) | pub struct ReferencesOptions {
  type DocumentHighlightOptions (line 2199) | pub struct DocumentHighlightOptions {
  type WorkspaceSymbolOptions (line 2206) | pub struct WorkspaceSymbolOptions {
  type StaticTextDocumentRegistrationOptions (line 2220) | pub struct StaticTextDocumentRegistrationOptions {
  type Unregistration (line 2231) | pub struct Unregistration {
  type UnregistrationParams (line 2241) | pub struct UnregistrationParams {
  type DidChangeConfigurationParams (line 2246) | pub struct DidChangeConfigurationParams {
  type DidOpenTextDocumentParams (line 2253) | pub struct DidOpenTextDocumentParams {
  type DidChangeTextDocumentParams (line 2260) | pub struct DidChangeTextDocumentParams {
  type TextDocumentContentChangeEvent (line 2273) | pub struct TextDocumentContentChangeEvent {
  type TextDocumentChangeRegistrationOptions (line 2293) | pub struct TextDocumentChangeRegistrationOptions {
  type WillSaveTextDocumentParams (line 2306) | pub struct WillSaveTextDocumentParams {
  type TextDocumentSaveReason (line 2317) | pub struct TextDocumentSaveReason(i32);
  type DidCloseTextDocumentParams (line 2334) | pub struct DidCloseTextDocumentParams {
  type DidSaveTextDocumentParams (line 2341) | pub struct DidSaveTextDocumentParams {
  type TextDocumentSaveRegistrationOptions (line 2353) | pub struct TextDocumentSaveRegistrationOptions {
  type DidChangeWatchedFilesClientCapabilities (line 2364) | pub struct DidChangeWatchedFilesClientCapabilities {
  type DidChangeWatchedFilesParams (line 2380) | pub struct DidChangeWatchedFilesParams {
  type FileChangeType (line 2388) | pub struct FileChangeType(i32);
  type FileEvent (line 2404) | pub struct FileEvent {
    method new (line 2414) | pub fn new(uri: Url, typ: FileChangeType) -> FileEvent {
  type DidChangeWatchedFilesRegistrationOptions (line 2421) | pub struct DidChangeWatchedFilesRegistrationOptions {
  type FileSystemWatcher (line 2428) | pub struct FileSystemWatcher {
  type GlobPattern (line 2446) | pub enum GlobPattern {
    method from (line 2453) | fn from(from: Pattern) -> Self {
    method from (line 2460) | fn from(from: RelativePattern) -> Self {
  type RelativePattern (line 2472) | pub struct RelativePattern {
  type Pattern (line 2495) | pub type Pattern = String;
  method deserialize (line 2510) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
  method serialize (line 2522) | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
  type PublishDiagnosticsParams (line 2531) | pub struct PublishDiagnosticsParams {
    method new (line 2544) | pub fn new(
  type Documentation (line 2559) | pub enum Documentation {
  type MarkedString (line 2576) | pub enum MarkedString {
    method from_markdown (line 2588) | pub fn from_markdown(markdown: String) -> MarkedString {
    method from_language_code (line 2592) | pub fn from_language_code(language: String, code_block: String) -> Mar...
  type LanguageString (line 2582) | pub struct LanguageString {
  type GotoDefinitionParams (line 2602) | pub struct GotoDefinitionParams {
  type GotoDefinitionResponse (line 2616) | pub enum GotoDefinitionResponse {
    method from (line 2623) | fn from(location: Location) -> Self {
    method from (line 2629) | fn from(locations: Vec<Location>) -> Self {
    method from (line 2635) | fn from(locations: Vec<LocationLink>) -> Self {
  type ExecuteCommandParams (line 2641) | pub struct ExecuteCommandParams {
  type ExecuteCommandRegistrationOptions (line 2654) | pub struct ExecuteCommandRegistrationOptions {
  type ApplyWorkspaceEditParams (line 2664) | pub struct ApplyWorkspaceEditParams {
  type ApplyWorkspaceEditResponse (line 2677) | pub struct ApplyWorkspaceEditResponse {
  type MarkupKind (line 2702) | pub enum MarkupKind {
  type MarkupContent (line 2733) | pub struct MarkupContent {
  type PartialResultParams (line 2741) | pub struct PartialResultParams {
  type SymbolTag (line 2751) | pub struct SymbolTag(i32);
  function test_serialization (line 2765) | pub(crate) fn test_serialization<SER>(ms: &SER, expected: &str)
  function test_deserialization (line 2775) | pub(crate) fn test_deserialization<T>(json: &str, expected: &T)
  function one_of (line 2784) | fn one_of() {
  function number_or_string (line 2796) | fn number_or_string() {
  function marked_string (line 2803) | fn marked_string() {
  function language_string (line 2813) | fn language_string() {
  function workspace_edit (line 2824) | fn workspace_edit() {
  function root_uri_can_be_missing (line 2858) | fn root_uri_can_be_missing() {
  function test_watch_kind (line 2863) | fn test_watch_kind() {
  function test_resource_operation_kind (line 2873) | fn test_resource_operation_kind() {

FILE: helix-lsp-types/src/linked_editing.rs
  type LinkedEditingRangeClientCapabilities (line 9) | pub type LinkedEditingRangeClientCapabilities = DynamicRegistrationClien...
  type LinkedEditingRangeOptions (line 13) | pub struct LinkedEditingRangeOptions {
  type LinkedEditingRangeRegistrationOptions (line 20) | pub struct LinkedEditingRangeRegistrationOptions {
  type LinkedEditingRangeServerCapabilities (line 33) | pub enum LinkedEditingRangeServerCapabilities {
  type LinkedEditingRangeParams (line 41) | pub struct LinkedEditingRangeParams {
  type LinkedEditingRanges (line 51) | pub struct LinkedEditingRanges {

FILE: helix-lsp-types/src/lsif.rs
  type Id (line 10) | pub type Id = crate::NumberOrString;
  type LocationOrRangeId (line 14) | pub enum LocationOrRangeId {
  type Entry (line 21) | pub struct Entry {
  type Element (line 30) | pub enum Element {
  type ToolInfo (line 36) | pub struct ToolInfo {
  type Encoding (line 46) | pub enum Encoding {
  type RangeBasedDocumentSymbol (line 53) | pub struct RangeBasedDocumentSymbol {
  type DocumentSymbolOrRangeBasedVec (line 63) | pub enum DocumentSymbolOrRangeBasedVec {
  type DefinitionTag (line 70) | pub struct DefinitionTag {
  type DeclarationTag (line 89) | pub struct DeclarationTag {
  type ReferenceTag (line 107) | pub struct ReferenceTag {
  type UnknownTag (line 113) | pub struct UnknownTag {
  type RangeTag (line 120) | pub enum RangeTag {
  type Vertex (line 130) | pub enum Vertex {
  type EventKind (line 174) | pub enum EventKind {
  type EventScope (line 181) | pub enum EventScope {
  type Event (line 187) | pub struct Event {
  type Edge (line 196) | pub enum Edge {
  type EdgeData (line 229) | pub struct EdgeData {
  type EdgeDataMultiIn (line 236) | pub struct EdgeDataMultiIn {
  type DefinitionResultType (line 243) | pub enum DefinitionResultType {
  type ItemKind (line 250) | pub enum ItemKind {
  type Item (line 260) | pub struct Item {
  type Document (line 270) | pub struct Document {
  type ResultSet (line 278) | pub struct ResultSet {
  type Project (line 286) | pub struct Project {
  type MetaData (line 296) | pub struct MetaData {
  type Repository (line 316) | pub struct Repository {
  type PackageInformation (line 325) | pub struct PackageInformation {

FILE: helix-lsp-types/src/moniker.rs
  type MonikerClientCapabilities (line 8) | pub type MonikerClientCapabilities = DynamicRegistrationClientCapabilities;
  type MonikerServerCapabilities (line 12) | pub enum MonikerServerCapabilities {
  type MonikerOptions (line 18) | pub struct MonikerOptions {
  type MonikerRegistrationOptions (line 25) | pub struct MonikerRegistrationOptions {
  type UniquenessLevel (line 36) | pub enum UniquenessLevel {
  type MonikerKind (line 52) | pub enum MonikerKind {
  type MonikerParams (line 64) | pub struct MonikerParams {
  type Moniker (line 78) | pub struct Moniker {

FILE: helix-lsp-types/src/notification.rs
  type Notification (line 5) | pub trait Notification {
    constant METHOD (line 7) | const METHOD: &'static str;
    type Params (line 94) | type Params = CancelParams;
    constant METHOD (line 95) | const METHOD: &'static str = "$/cancelRequest";
    type Params (line 104) | type Params = SetTraceParams;
    constant METHOD (line 105) | const METHOD: &'static str = "$/setTrace";
    type Params (line 117) | type Params = LogTraceParams;
    constant METHOD (line 118) | const METHOD: &'static str = "$/logTrace";
    type Params (line 129) | type Params = InitializedParams;
    constant METHOD (line 130) | const METHOD: &'static str = "initialized";
    type Params (line 140) | type Params = ();
    constant METHOD (line 141) | const METHOD: &'static str = "exit";
    type Params (line 150) | type Params = ShowMessageParams;
    constant METHOD (line 151) | const METHOD: &'static str = "window/showMessage";
    type Params (line 159) | type Params = LogMessageParams;
    constant METHOD (line 160) | const METHOD: &'static str = "window/logMessage";
    type Params (line 170) | type Params = OneOf<LSPObject, LSPArray>;
    constant METHOD (line 171) | const METHOD: &'static str = "telemetry/event";
    type Params (line 179) | type Params = DidChangeConfigurationParams;
    constant METHOD (line 180) | const METHOD: &'static str = "workspace/didChangeConfiguration";
    type Params (line 190) | type Params = DidOpenTextDocumentParams;
    constant METHOD (line 191) | const METHOD: &'static str = "textDocument/didOpen";
    type Params (line 200) | type Params = DidChangeTextDocumentParams;
    constant METHOD (line 201) | const METHOD: &'static str = "textDocument/didChange";
    type Params (line 210) | type Params = WillSaveTextDocumentParams;
    constant METHOD (line 211) | const METHOD: &'static str = "textDocument/willSave";
    type Params (line 221) | type Params = DidCloseTextDocumentParams;
    constant METHOD (line 222) | const METHOD: &'static str = "textDocument/didClose";
    type Params (line 230) | type Params = DidSaveTextDocumentParams;
    constant METHOD (line 231) | const METHOD: &'static str = "textDocument/didSave";
    type Params (line 242) | type Params = DidChangeWatchedFilesParams;
    constant METHOD (line 243) | const METHOD: &'static str = "workspace/didChangeWatchedFiles";
    type Params (line 252) | type Params = DidChangeWorkspaceFoldersParams;
    constant METHOD (line 253) | const METHOD: &'static str = "workspace/didChangeWorkspaceFolders";
    type Params (line 261) | type Params = PublishDiagnosticsParams;
    constant METHOD (line 262) | const METHOD: &'static str = "textDocument/publishDiagnostics";
    type Params (line 271) | type Params = ProgressParams;
    constant METHOD (line 272) | const METHOD: &'static str = "$/progress";
    type Params (line 281) | type Params = WorkDoneProgressCancelParams;
    constant METHOD (line 282) | const METHOD: &'static str = "window/workDoneProgress/cancel";
    type Params (line 290) | type Params = CreateFilesParams;
    constant METHOD (line 291) | const METHOD: &'static str = "workspace/didCreateFiles";
    type Params (line 299) | type Params = RenameFilesParams;
    constant METHOD (line 300) | const METHOD: &'static str = "workspace/didRenameFiles";
    type Params (line 308) | type Params = DeleteFilesParams;
    constant METHOD (line 309) | const METHOD: &'static str = "workspace/didDeleteFiles";
  type Cancel (line 91) | pub enum Cancel {}
  type SetTrace (line 101) | pub enum SetTrace {}
  type LogTrace (line 114) | pub enum LogTrace {}
  type Initialized (line 126) | pub enum Initialized {}
  type Exit (line 137) | pub enum Exit {}
  type ShowMessage (line 147) | pub enum ShowMessage {}
  type LogMessage (line 156) | pub enum LogMessage {}
  type TelemetryEvent (line 167) | pub enum TelemetryEvent {}
  type DidChangeConfiguration (line 176) | pub enum DidChangeConfiguration {}
  type DidOpenTextDocument (line 187) | pub enum DidOpenTextDocument {}
  type DidChangeTextDocument (line 197) | pub enum DidChangeTextDocument {}
  type WillSaveTextDocument (line 207) | pub enum WillSaveTextDocument {}
  type DidCloseTextDocument (line 218) | pub enum DidCloseTextDocument {}
  type DidSaveTextDocument (line 227) | pub enum DidSaveTextDocument {}
  type DidChangeWatchedFiles (line 239) | pub enum DidChangeWatchedFiles {}
  type DidChangeWorkspaceFolders (line 249) | pub enum DidChangeWorkspaceFolders {}
  type PublishDiagnostics (line 258) | pub enum PublishDiagnostics {}
  type Progress (line 268) | pub enum Progress {}
  type WorkDoneProgressCancel (line 278) | pub enum WorkDoneProgressCancel {}
  type DidCreateFiles (line 287) | pub enum DidCreateFiles {}
  type DidRenameFiles (line 296) | pub enum DidRenameFiles {}
  type DidDeleteFiles (line 305) | pub enum DidDeleteFiles {}
  function fake_call (line 316) | fn fake_call<N>()
  function check_macro_definitions (line 333) | fn check_macro_definitions() {
  function check_proposed_macro_definitions (line 360) | fn check_proposed_macro_definitions() {}

FILE: helix-lsp-types/src/progress.rs
  type ProgressToken (line 5) | pub type ProgressToken = NumberOrString;
  type ProgressParams (line 11) | pub struct ProgressParams {
  type ProgressParamsValue (line 21) | pub enum ProgressParamsValue {
  type WorkDoneProgressCreateParams (line 29) | pub struct WorkDoneProgressCreateParams {
  type WorkDoneProgressCancelParams (line 38) | pub struct WorkDoneProgressCancelParams {
  type WorkDoneProgressParams (line 46) | pub struct WorkDoneProgressParams {
  type WorkDoneProgressBegin (line 53) | pub struct WorkDoneProgressBegin {
  type WorkDoneProgressReport (line 85) | pub struct WorkDoneProgressReport {
  type WorkDoneProgressEnd (line 111) | pub struct WorkDoneProgressEnd {
  type WorkDoneProgress (line 122) | pub enum WorkDoneProgress {

FILE: helix-lsp-types/src/references.rs
  type ReferenceClientCapabilities (line 7) | pub type ReferenceClientCapabilities = DynamicRegistrationClientCapabili...
  type ReferenceContext (line 10) | pub struct ReferenceContext {
  type ReferenceParams (line 17) | pub struct ReferenceParams {

FILE: helix-lsp-types/src/rename.rs
  type RenameParams (line 6) | pub struct RenameParams {
  type RenameOptions (line 22) | pub struct RenameOptions {
  type RenameClientCapabilities (line 33) | pub struct RenameClientCapabilities {
  type PrepareSupportDefaultBehavior (line 66) | pub struct PrepareSupportDefaultBehavior(i32);
  type PrepareRenameResponse (line 78) | pub enum PrepareRenameResponse {

FILE: helix-lsp-types/src/request.rs
  type Request (line 5) | pub trait Request {
    constant METHOD (line 8) | const METHOD: &'static str;
    type Params (line 221) | type Params = InitializeParams;
    type Result (line 222) | type Result = InitializeResult;
    constant METHOD (line 223) | const METHOD: &'static str = "initialize";
    type Params (line 233) | type Params = ();
    type Result (line 234) | type Result = ();
    constant METHOD (line 235) | const METHOD: &'static str = "shutdown";
    type Params (line 245) | type Params = ShowMessageRequestParams;
    type Result (line 246) | type Result = Option<MessageActionItem>;
    constant METHOD (line 247) | const METHOD: &'static str = "window/showMessageRequest";
    type Params (line 257) | type Params = RegistrationParams;
    type Result (line 258) | type Result = ();
    constant METHOD (line 259) | const METHOD: &'static str = "client/registerCapability";
    type Params (line 268) | type Params = UnregistrationParams;
    type Result (line 269) | type Result = ();
    constant METHOD (line 270) | const METHOD: &'static str = "client/unregisterCapability";
    type Params (line 287) | type Params = CompletionParams;
    type Result (line 288) | type Result = Option<CompletionResponse>;
    constant METHOD (line 289) | const METHOD: &'static str = "textDocument/completion";
    type Params (line 297) | type Params = CompletionItem;
    type Result (line 298) | type Result = CompletionItem;
    constant METHOD (line 299) | const METHOD: &'static str = "completionItem/resolve";
    type Params (line 308) | type Params = HoverParams;
    type Result (line 309) | type Result = Option<Hover>;
    constant METHOD (line 310) | const METHOD: &'static str = "textDocument/hover";
    type Params (line 319) | type Params = SignatureHelpParams;
    type Result (line 320) | type Result = Option<SignatureHelp>;
    constant METHOD (line 321) | const METHOD: &'static str = "textDocument/signatureHelp";
    type Params (line 332) | type Params = GotoDeclarationParams;
    type Result (line 333) | type Result = Option<GotoDeclarationResponse>;
    constant METHOD (line 334) | const METHOD: &'static str = "textDocument/declaration";
    type Params (line 343) | type Params = GotoDefinitionParams;
    type Result (line 344) | type Result = Option<GotoDefinitionResponse>;
    constant METHOD (line 345) | const METHOD: &'static str = "textDocument/definition";
    type Params (line 354) | type Params = ReferenceParams;
    type Result (line 355) | type Result = Option<Vec<Location>>;
    constant METHOD (line 356) | const METHOD: &'static str = "textDocument/references";
    type Params (line 369) | type Params = GotoTypeDefinitionParams;
    type Result (line 370) | type Result = Option<GotoTypeDefinitionResponse>;
    constant METHOD (line 371) | const METHOD: &'static str = "textDocument/typeDefinition";
    type Params (line 384) | type Params = GotoImplementationParams;
    type Result (line 385) | type Result = Option<GotoImplementationResponse>;
    constant METHOD (line 386) | const METHOD: &'static str = "textDocument/implementation";
    type Params (line 400) | type Params = DocumentHighlightParams;
    type Result (line 401) | type Result = Option<Vec<DocumentHighlight>>;
    constant METHOD (line 402) | const METHOD: &'static str = "textDocument/documentHighlight";
    type Params (line 411) | type Params = DocumentSymbolParams;
    type Result (line 412) | type Result = Option<DocumentSymbolResponse>;
    constant METHOD (line 413) | const METHOD: &'static str = "textDocument/documentSymbol";
    type Params (line 422) | type Params = WorkspaceSymbolParams;
    type Result (line 423) | type Result = Option<WorkspaceSymbolResponse>;
    constant METHOD (line 424) | const METHOD: &'static str = "workspace/symbol";
    type Params (line 433) | type Params = WorkspaceSymbol;
    type Result (line 434) | type Result = WorkspaceSymbol;
    constant METHOD (line 435) | const METHOD: &'static str = "workspaceSymbol/resolve";
    type Params (line 445) | type Params = ExecuteCommandParams;
    type Result (line 446) | type Result = Option<Value>;
    constant METHOD (line 447) | const METHOD: &'static str = "workspace/executeCommand";
    type Params (line 459) | type Params = WillSaveTextDocumentParams;
    type Result (line 460) | type Result = Option<Vec<TextEdit>>;
    constant METHOD (line 461) | const METHOD: &'static str = "textDocument/willSaveWaitUntil";
    type Params (line 470) | type Params = ApplyWorkspaceEditParams;
    type Result (line 471) | type Result = ApplyWorkspaceEditResponse;
    constant METHOD (line 472) | const METHOD: &'static str = "workspace/applyEdit";
    type Params (line 492) | type Params = ConfigurationParams;
    type Result (line 493) | type Result = Vec<Value>;
    constant METHOD (line 494) | const METHOD: &'static str = "workspace/configuration";
    type Params (line 504) | type Params = CodeActionParams;
    type Result (line 505) | type Result = Option<CodeActionResponse>;
    constant METHOD (line 506) | const METHOD: &'static str = "textDocument/codeAction";
    type Params (line 518) | type Params = CodeAction;
    type Result (line 519) | type Result = CodeAction;
    constant METHOD (line 520) | const METHOD: &'static str = "codeAction/resolve";
    type Params (line 528) | type Params = CodeLensParams;
    type Result (line 529) | type Result = Option<Vec<CodeLens>>;
    constant METHOD (line 530) | const METHOD: &'static str = "textDocument/codeLens";
    type Params (line 539) | type Params = CodeLens;
    type Result (line 540) | type Result = CodeLens;
    constant METHOD (line 541) | const METHOD: &'static str = "codeLens/resolve";
    type Params (line 549) | type Params = DocumentLinkParams;
    type Result (line 550) | type Result = Option<Vec<DocumentLink>>;
    constant METHOD (line 551) | const METHOD: &'static str = "textDocument/documentLink";
    type Params (line 560) | type Params = DocumentLink;
    type Result (line 561) | type Result = DocumentLink;
    constant METHOD (line 562) | const METHOD: &'static str = "documentLink/resolve";
    type Params (line 570) | type Params = DocumentFormattingParams;
    type Result (line 571) | type Result = Option<Vec<TextEdit>>;
    constant METHOD (line 572) | const METHOD: &'static str = "textDocument/formatting";
    type Params (line 580) | type Params = DocumentRangeFormattingParams;
    type Result (line 581) | type Result = Option<Vec<TextEdit>>;
    constant METHOD (line 582) | const METHOD: &'static str = "textDocument/rangeFormatting";
    type Params (line 591) | type Params = DocumentOnTypeFormattingParams;
    type Result (line 592) | type Result = Option<Vec<TextEdit>>;
    constant METHOD (line 593) | const METHOD: &'static str = "textDocument/onTypeFormatting";
    type Params (line 605) | type Params = LinkedEditingRangeParams;
    type Result (line 606) | type Result = Option<LinkedEditingRanges>;
    constant METHOD (line 607) | const METHOD: &'static str = "textDocument/linkedEditingRange";
    type Params (line 615) | type Params = RenameParams;
    type Result (line 616) | type Result = Option<WorkspaceEdit>;
    constant METHOD (line 617) | const METHOD: &'static str = "textDocument/rename";
    type Params (line 626) | type Params = DocumentColorParams;
    type Result (line 627) | type Result = Vec<ColorInformation>;
    constant METHOD (line 628) | const METHOD: &'static str = "textDocument/documentColor";
    type Params (line 637) | type Params = ColorPresentationParams;
    type Result (line 638) | type Result = Vec<ColorPresentation>;
    constant METHOD (line 639) | const METHOD: &'static str = "textDocument/colorPresentation";
    type Params (line 647) | type Params = FoldingRangeParams;
    type Result (line 648) | type Result = Option<Vec<FoldingRange>>;
    constant METHOD (line 649) | const METHOD: &'static str = "textDocument/foldingRange";
    type Params (line 658) | type Params = TextDocumentPositionParams;
    type Result (line 659) | type Result = Option<PrepareRenameResponse>;
    constant METHOD (line 660) | const METHOD: &'static str = "textDocument/prepareRename";
    type Params (line 669) | type Params = InlineCompletionParams;
    type Result (line 670) | type Result = Option<InlineCompletionResponse>;
    constant METHOD (line 671) | const METHOD: &'static str = "textDocument/inlineCompletion";
    type Params (line 681) | type Params = ();
    type Result (line 682) | type Result = Option<Vec<WorkspaceFolder>>;
    constant METHOD (line 683) | const METHOD: &'static str = "workspace/workspaceFolders";
    type Params (line 692) | type Params = WorkDoneProgressCreateParams;
    type Result (line 693) | type Result = ();
    constant METHOD (line 694) | const METHOD: &'static str = "window/workDoneProgress/create";
    type Params (line 709) | type Params = SelectionRangeParams;
    type Result (line 710) | type Result = Option<Vec<SelectionRange>>;
    constant METHOD (line 711) | const METHOD: &'static str = "textDocument/selectionRange";
    type Params (line 717) | type Params = CallHierarchyPrepareParams;
    type Result (line 718) | type Result = Option<Vec<CallHierarchyItem>>;
    constant METHOD (line 719) | const METHOD: &'static str = "textDocument/prepareCallHierarchy";
    type Params (line 725) | type Params = CallHierarchyIncomingCallsParams;
    type Result (line 726) | type Result = Option<Vec<CallHierarchyIncomingCall>>;
    constant METHOD (line 727) | const METHOD: &'static str = "callHierarchy/incomingCalls";
    type Params (line 733) | type Params = CallHierarchyOutgoingCallsParams;
    type Result (line 734) | type Result = Option<Vec<CallHierarchyOutgoingCall>>;
    constant METHOD (line 735) | const METHOD: &'static str = "callHierarchy/outgoingCalls";
    type Params (line 741) | type Params = SemanticTokensParams;
    type Result (line 742) | type Result = Option<SemanticTokensResult>;
    constant METHOD (line 743) | const METHOD: &'static str = "textDocument/semanticTokens/full";
    type Params (line 749) | type Params = SemanticTokensDeltaParams;
    type Result (line 750) | type Result = Option<SemanticTokensFullDeltaResult>;
    constant METHOD (line 751) | const METHOD: &'static str = "textDocument/semanticTokens/full/delta";
    type Params (line 757) | type Params = SemanticTokensRangeParams;
    type Result (line 758) | type Result = Option<SemanticTokensRangeResult>;
    constant METHOD (line 759) | const METHOD: &'static str = "textDocument/semanticTokens/range";
    type Params (line 770) | type Params = ();
    type Result (line 771) | type Result = ();
    constant METHOD (line 772) | const METHOD: &'static str = "workspace/semanticTokens/refresh";
    type Params (line 783) | type Params = ();
    type Result (line 784) | type Result = ();
    constant METHOD (line 785) | const METHOD: &'static str = "workspace/codeLens/refresh";
    type Params (line 792) | type Params = CreateFilesParams;
    type Result (line 793) | type Result = Option<WorkspaceEdit>;
    constant METHOD (line 794) | const METHOD: &'static str = "workspace/willCreateFiles";
    type Params (line 801) | type Params = RenameFilesParams;
    type Result (line 802) | type Result = Option<WorkspaceEdit>;
    constant METHOD (line 803) | const METHOD: &'static str = "workspace/willRenameFiles";
    type Params (line 810) | type Params = DeleteFilesParams;
    type Result (line 811) | type Result = Option<WorkspaceEdit>;
    constant METHOD (line 812) | const METHOD: &'static str = "workspace/willDeleteFiles";
    type Params (line 819) | type Params = ShowDocumentParams;
    type Result (line 820) | type Result = ShowDocumentResult;
    constant METHOD (line 821) | const METHOD: &'static str = "window/showDocument";
    type Params (line 827) | type Params = MonikerParams;
    type Result (line 828) | type Result = Option<Vec<Moniker>>;
    constant METHOD (line 829) | const METHOD: &'static str = "textDocument/moniker";
    type Params (line 837) | type Params = InlayHintParams;
    type Result (line 838) | type Result = Option<Vec<InlayHint>>;
    constant METHOD (line 839) | const METHOD: &'static str = "textDocument/inlayHint";
    type Params (line 849) | type Params = InlayHint;
    type Result (line 850) | type Result = InlayHint;
    constant METHOD (line 851) | const METHOD: &'static str = "inlayHint/resolve";
    type Params (line 863) | type Params = ();
    type Result (line 864) | type Result = ();
    constant METHOD (line 865) | const METHOD: &'static str = "workspace/inlayHint/refresh";
    type Params (line 873) | type Params = InlineValueParams;
    type Result (line 874) | type Result = Option<InlineValue>;
    constant METHOD (line 875) | const METHOD: &'static str = "textDocument/inlineValue";
    type Params (line 887) | type Params = ();
    type Result (line 888) | type Result = ();
    constant METHOD (line 889) | const METHOD: &'static str = "workspace/inlineValue/refresh";
    type Params (line 899) | type Params = DocumentDiagnosticParams;
    type Result (line 900) | type Result = DocumentDiagnosticReportResult;
    constant METHOD (line 901) | const METHOD: &'static str = "textDocument/diagnostic";
    type Params (line 914) | type Params = WorkspaceDiagnosticParams;
    constant METHOD (line 915) | const METHOD: &'static str = "workspace/diagnostic";
    type Result (line 916) | type Result = WorkspaceDiagnosticReportResult;
    type Params (line 927) | type Params = ();
    type Result (line 928) | type Result = ();
    constant METHOD (line 929) | const METHOD: &'static str = "workspace/diagnostic/refresh";
    type Params (line 941) | type Params = TypeHierarchyPrepareParams;
    type Result (line 942) | type Result = Option<Vec<TypeHierarchyItem>>;
    constant METHOD (line 943) | const METHOD: &'static str = "textDocument/prepareTypeHierarchy";
    type Params (line 954) | type Params = TypeHierarchySupertypesParams;
    type Result (line 955) | type Result = Option<Vec<TypeHierarchyItem>>;
    constant METHOD (line 956) | const METHOD: &'static str = "typeHierarchy/supertypes";
    type Params (line 966) | type Params = TypeHierarchySubtypesParams;
    type Result (line 967) | type Result = Option<Vec<TypeHierarchyItem>>;
    constant METHOD (line 968) | const METHOD: &'static str = "typeHierarchy/subtypes";
  type Initialize (line 218) | pub enum Initialize {}
  type Shutdown (line 230) | pub enum Shutdown {}
  type ShowMessageRequest (line 242) | pub enum ShowMessageRequest {}
  type RegisterCapability (line 254) | pub enum RegisterCapability {}
  type UnregisterCapability (line 265) | pub enum UnregisterCapability {}
  type Completion (line 284) | pub enum Completion {}
  type ResolveCompletionItem (line 294) | pub enum ResolveCompletionItem {}
  type HoverRequest (line 305) | pub enum HoverRequest {}
  type SignatureHelpRequest (line 316) | pub enum SignatureHelpRequest {}
  type GotoDeclaration (line 325) | pub enum GotoDeclaration {}
  type GotoDeclarationParams (line 326) | pub type GotoDeclarationParams = GotoDefinitionParams;
  type GotoDeclarationResponse (line 327) | pub type GotoDeclarationResponse = GotoDefinitionResponse;
  type GotoDefinition (line 340) | pub enum GotoDefinition {}
  type References (line 351) | pub enum References {}
  type GotoTypeDefinition (line 363) | pub enum GotoTypeDefinition {}
  type GotoTypeDefinitionParams (line 365) | pub type GotoTypeDefinitionParams = GotoDefinitionParams;
  type GotoTypeDefinitionResponse (line 366) | pub type GotoTypeDefinitionResponse = GotoDefinitionResponse;
  type GotoImplementation (line 378) | pub enum GotoImplementation {}
  type GotoImplementationParams (line 380) | pub type GotoImplementationParams = GotoTypeDefinitionParams;
  type GotoImplementationResponse (line 381) | pub type GotoImplementationResponse = GotoDefinitionResponse;
  type DocumentHighlightRequest (line 397) | pub enum DocumentHighlightRequest {}
  type DocumentSymbolRequest (line 408) | pub enum DocumentSymbolRequest {}
  type WorkspaceSymbolRequest (line 419) | pub enum WorkspaceSymbolRequest {}
  type WorkspaceSymbolResolve (line 430) | pub enum WorkspaceSymbolResolve {}
  type ExecuteCommand (line 442) | pub enum ExecuteCommand {}
  type WillSaveWaitUntil (line 456) | pub enum WillSaveWaitUntil {}
  type ApplyWorkspaceEdit (line 467) | pub enum ApplyWorkspaceEdit {}
  type WorkspaceConfiguration (line 489) | pub enum WorkspaceConfiguration {}
  type CodeActionRequest (line 501) | pub enum CodeActionRequest {}
  type CodeActionResolveRequest (line 515) | pub enum CodeActionResolveRequest {}
  type CodeLensRequest (line 525) | pub enum CodeLensRequest {}
  type CodeLensResolve (line 536) | pub enum CodeLensResolve {}
  type DocumentLinkRequest (line 546) | pub enum DocumentLinkRequest {}
  type DocumentLinkResolve (line 557) | pub enum DocumentLinkResolve {}
  type Formatting (line 567) | pub enum Formatting {}
  type RangeFormatting (line 577) | pub enum RangeFormatting {}
  type OnTypeFormatting (line 588) | pub enum OnTypeFormatting {}
  type LinkedEditingRange (line 602) | pub enum LinkedEditingRange {}
  type Rename (line 612) | pub enum Rename {}
  type DocumentColor (line 623) | pub enum DocumentColor {}
  type ColorPresentationRequest (line 634) | pub enum ColorPresentationRequest {}
  type FoldingRangeRequest (line 644) | pub enum FoldingRangeRequest {}
  type PrepareRenameRequest (line 655) | pub enum PrepareRenameRequest {}
  type InlineCompletionRequest (line 665) | pub enum InlineCompletionRequest {}
  type WorkspaceFoldersRequest (line 678) | pub enum WorkspaceFoldersRequest {}
  type WorkDoneProgressCreate (line 689) | pub enum WorkDoneProgressCreate {}
  type SelectionRangeRequest (line 706) | pub enum SelectionRangeRequest {}
  type CallHierarchyPrepare (line 714) | pub enum CallHierarchyPrepare {}
  type CallHierarchyIncomingCalls (line 722) | pub enum CallHierarchyIncomingCalls {}
  type CallHierarchyOutgoingCalls (line 730) | pub enum CallHierarchyOutgoingCalls {}
  type SemanticTokensFullRequest (line 738) | pub enum SemanticTokensFullRequest {}
  type SemanticTokensFullDeltaRequest (line 746) | pub enum SemanticTokensFullDeltaRequest {}
  type SemanticTokensRangeRequest (line 754) | pub enum SemanticTokensRangeRequest {}
  type SemanticTokensRefresh (line 767) | pub enum SemanticTokensRefresh {}
  type CodeLensRefresh (line 780) | pub enum CodeLensRefresh {}
  type WillCreateFiles (line 789) | pub enum WillCreateFiles {}
  type WillRenameFiles (line 798) | pub enum WillRenameFiles {}
  type WillDeleteFiles (line 807) | pub enum WillDeleteFiles {}
  type ShowDocument (line 816) | pub enum ShowDocument {}
  type MonikerRequest (line 824) | pub enum MonikerRequest {}
  type InlayHintRequest (line 834) | pub enum InlayHintRequest {}
  type InlayHintResolveRequest (line 846) | pub enum InlayHintResolveRequest {}
  type InlayHintRefreshRequest (line 860) | pub enum InlayHintRefreshRequest {}
  type InlineValueRequest (line 870) | pub enum InlineValueRequest {}
  type InlineValueRefreshRequest (line 884) | pub enum InlineValueRefreshRequest {}
  type DocumentDiagnosticRequest (line 896) | pub enum DocumentDiagnosticRequest {}
  type WorkspaceDiagnosticRequest (line 911) | pub enum WorkspaceDiagnosticRequest {}
  type WorkspaceDiagnosticRefresh (line 924) | pub enum WorkspaceDiagnosticRefresh {}
  type TypeHierarchyPrepare (line 938) | pub enum TypeHierarchyPrepare {}
  type TypeHierarchySupertypes (line 951) | pub enum TypeHierarchySupertypes {}
  type TypeHierarchySubtypes (line 963) | pub enum TypeHierarchySubtypes {}
  function fake_call (line 975) | fn fake_call<R>()
  function check_macro_definitions (line 993) | fn check_macro_definitions() {
  function check_proposed_macro_definitions (line 1067) | fn check_proposed_macro_definitions() {}

FILE: helix-lsp-types/src/selection_range.rs
  type SelectionRangeClientCapabilities (line 9) | pub struct SelectionRangeClientCapabilities {
  type SelectionRangeOptions (line 19) | pub struct SelectionRangeOptions {
  type SelectionRangeRegistrationOptions (line 25) | pub struct SelectionRangeRegistrationOptions {
  type SelectionRangeProviderCapability (line 35) | pub enum SelectionRangeProviderCapability {
    method from (line 42) | fn from(from: SelectionRangeRegistrationOptions) -> Self {
    method from (line 48) | fn from(from: SelectionRangeOptions) -> Self {
    method from (line 54) | fn from(from: bool) -> Self {
  type SelectionRangeParams (line 62) | pub struct SelectionRangeParams {
  type SelectionRange (line 79) | pub struct SelectionRange {

FILE: helix-lsp-types/src/semantic_tokens.rs
  type SemanticTokenType (line 16) | pub struct SemanticTokenType(Cow<'static, str>);
    constant NAMESPACE (line 19) | pub const NAMESPACE: SemanticTokenType = SemanticTokenType::new("names...
    constant TYPE (line 20) | pub const TYPE: SemanticTokenType = SemanticTokenType::new("type");
    constant CLASS (line 21) | pub const CLASS: SemanticTokenType = SemanticTokenType::new("class");
    constant ENUM (line 22) | pub const ENUM: SemanticTokenType = SemanticTokenType::new("enum");
    constant INTERFACE (line 23) | pub const INTERFACE: SemanticTokenType = SemanticTokenType::new("inter...
    constant STRUCT (line 24) | pub const STRUCT: SemanticTokenType = SemanticTokenType::new("struct");
    constant TYPE_PARAMETER (line 25) | pub const TYPE_PARAMETER: SemanticTokenType = SemanticTokenType::new("...
    constant PARAMETER (line 26) | pub const PARAMETER: SemanticTokenType = SemanticTokenType::new("param...
    constant VARIABLE (line 27) | pub const VARIABLE: SemanticTokenType = SemanticTokenType::new("variab...
    constant PROPERTY (line 28) | pub const PROPERTY: SemanticTokenType = SemanticTokenType::new("proper...
    constant ENUM_MEMBER (line 29) | pub const ENUM_MEMBER: SemanticTokenType = SemanticTokenType::new("enu...
    constant EVENT (line 30) | pub const EVENT: SemanticTokenType = SemanticTokenType::new("event");
    constant FUNCTION (line 31) | pub const FUNCTION: SemanticTokenType = SemanticTokenType::new("functi...
    constant METHOD (line 32) | pub const METHOD: SemanticTokenType = SemanticTokenType::new("method");
    constant MACRO (line 33) | pub const MACRO: SemanticTokenType = SemanticTokenType::new("macro");
    constant KEYWORD (line 34) | pub const KEYWORD: SemanticTokenType = SemanticTokenType::new("keyword");
    constant MODIFIER (line 35) | pub const MODIFIER: SemanticTokenType = SemanticTokenType::new("modifi...
    constant COMMENT (line 36) | pub const COMMENT: SemanticTokenType = SemanticTokenType::new("comment");
    constant STRING (line 37) | pub const STRING: SemanticTokenType = SemanticTokenType::new("string");
    constant NUMBER (line 38) | pub const NUMBER: SemanticTokenType = SemanticTokenType::new("number");
    constant REGEXP (line 39) | pub const REGEXP: SemanticTokenType = SemanticTokenType::new("regexp");
    constant OPERATOR (line 40) | pub const OPERATOR: SemanticTokenType = SemanticTokenType::new("operat...
    constant DECORATOR (line 43) | pub const DECORATOR: SemanticTokenType = SemanticTokenType::new("decor...
    method new (line 45) | pub const fn new(tag: &'static str) -> Self {
    method as_str (line 49) | pub fn as_str(&self) -> &str {
    method from (line 55) | fn from(from: String) -> Self {
    method from (line 61) | fn from(from: &'static str) -> Self {
  type SemanticTokenModifier (line 72) | pub struct SemanticTokenModifier(Cow<'static, str>);
    constant DECLARATION (line 75) | pub const DECLARATION: SemanticTokenModifier = SemanticTokenModifier::...
    constant DEFINITION (line 76) | pub const DEFINITION: SemanticTokenModifier = SemanticTokenModifier::n...
    constant READONLY (line 77) | pub const READONLY: SemanticTokenModifier = SemanticTokenModifier::new...
    constant STATIC (line 78) | pub const STATIC: SemanticTokenModifier = SemanticTokenModifier::new("...
    constant DEPRECATED (line 79) | pub const DEPRECATED: SemanticTokenModifier = SemanticTokenModifier::n...
    constant ABSTRACT (line 80) | pub const ABSTRACT: SemanticTokenModifier = SemanticTokenModifier::new...
    constant ASYNC (line 81) | pub const ASYNC: SemanticTokenModifier = SemanticTokenModifier::new("a...
    constant MODIFICATION (line 82) | pub const MODIFICATION: SemanticTokenModifier = SemanticTokenModifier:...
    constant DOCUMENTATION (line 83) | pub const DOCUMENTATION: SemanticTokenModifier = SemanticTokenModifier...
    constant DEFAULT_LIBRARY (line 84) | pub const DEFAULT_LIBRARY: SemanticTokenModifier = SemanticTokenModifi...
    method new (line 86) | pub const fn new(tag: &'static str) -> Self {
    method as_str (line 90) | pub fn as_str(&self) -> &str {
    method from (line 96) | fn from(from: String) -> Self {
    method from (line 102) | fn from(from: &'static str) -> Self {
  type TokenFormat (line 108) | pub struct TokenFormat(Cow<'static, str>);
    constant RELATIVE (line 111) | pub const RELATIVE: TokenFormat = TokenFormat::new("relative");
    method new (line 113) | pub const fn new(tag: &'static str) -> Self {
    method as_str (line 117) | pub fn as_str(&self) -> &str {
    method from (line 123) | fn from(from: String) -> Self {
    method from (line 129) | fn from(from: &'static str) -> Self {
  type SemanticTokensLegend (line 137) | pub struct SemanticTokensLegend {
  type SemanticToken (line 147) | pub struct SemanticToken {
    method deserialize_tokens (line 156) | fn deserialize_tokens<'de, D>(deserializer: D) -> Result<Vec<SemanticT...
    method serialize_tokens (line 180) | fn serialize_tokens<S>(tokens: &[SemanticToken], serializer: S) -> Res...
    method deserialize_tokens_opt (line 195) | fn deserialize_tokens_opt<'de, D>(
    method serialize_tokens_opt (line 211) | fn serialize_tokens_opt<S>(
  type SemanticTokens (line 234) | pub struct SemanticTokens {
  type SemanticTokensPartialResult (line 255) | pub struct SemanticTokensPartialResult {
  type SemanticTokensResult (line 266) | pub enum SemanticTokensResult {
    method from (line 272) | fn from(from: SemanticTokens) -> Self {
    method from (line 278) | fn from(from: SemanticTokensPartialResult) -> Self {
  type SemanticTokensEdit (line 286) | pub struct SemanticTokensEdit {
  type SemanticTokensFullDeltaResult (line 302) | pub enum SemanticTokensFullDeltaResult {
    method from (line 309) | fn from(from: SemanticTokens) -> Self {
    method from (line 315) | fn from(from: SemanticTokensDelta) -> Self {
  type SemanticTokensDelta (line 323) | pub struct SemanticTokensDelta {
  type SemanticTokensClientCapabilities (line 336) | pub struct SemanticTokensClientCapabilities {
  type SemanticTokensClientCapabilitiesRequests (line 395) | pub struct SemanticTokensClientCapabilitiesRequests {
  type SemanticTokensFullOptions (line 408) | pub enum SemanticTokensFullOptions {
  type SemanticTokensOptions (line 421) | pub struct SemanticTokensOptions {
  type SemanticTokensRegistrationOptions (line 440) | pub struct SemanticTokensRegistrationOptions {
  type SemanticTokensServerCapabilities (line 454) | pub enum SemanticTokensServerCapabilities {
    method from (line 460) | fn from(from: SemanticTokensOptions) -> Self {
    method from (line 466) | fn from(from: SemanticTokensRegistrationOptions) -> Self {
  type SemanticTokensWorkspaceClientCapabilities (line 473) | pub struct SemanticTokensWorkspaceClientCapabilities {
  type SemanticTokensParams (line 486) | pub struct SemanticTokensParams {
  type SemanticTokensDeltaParams (line 499) | pub struct SemanticTokensDeltaParams {
  type SemanticTokensRangeParams (line 516) | pub struct SemanticTokensRangeParams {
  type SemanticTokensRangeResult (line 533) | pub enum SemanticTokensRangeResult {
    method from (line 539) | fn from(tokens: SemanticTokens) -> Self {
    method from (line 545) | fn from(partial: SemanticTokensPartialResult) -> Self {
  function test_semantic_tokens_support_serialization (line 556) | fn test_semantic_tokens_support_serialization() {
  function test_semantic_tokens_support_deserialization (line 604) | fn test_semantic_tokens_support_deserialization() {
  function test_semantic_tokens_support_deserialization_err (line 653) | fn test_semantic_tokens_support_deserialization_err() {
  function test_semantic_tokens_edit_support_deserialization (line 664) | fn test_semantic_tokens_edit_support_deserialization() {
  function test_semantic_tokens_edit_support_serialization (line 700) | fn test_semantic_tokens_edit_support_serialization() {

FILE: helix-lsp-types/src/signature_help.rs
  type SignatureInformationSettings (line 10) | pub struct SignatureInformationSettings {
  type ParameterInformationSettings (line 29) | pub struct ParameterInformationSettings {
  type SignatureHelpClientCapabilities (line 40) | pub struct SignatureHelpClientCapabilities {
  type SignatureHelpOptions (line 63) | pub struct SignatureHelpOptions {
  type SignatureHelpRegistrationOptions (line 80) | pub struct SignatureHelpRegistrationOptions {
  type SignatureHelpTriggerKind (line 88) | pub struct SignatureHelpTriggerKind(i32);
  type SignatureHelpParams (line 102) | pub struct SignatureHelpParams {
  type SignatureHelpContext (line 117) | pub struct SignatureHelpContext {
  type SignatureHelp (line 143) | pub struct SignatureHelp {
  type SignatureInformation (line 161) | pub struct SignatureInformation {
  type ParameterInformation (line 188) | pub struct ParameterInformation {
  type ParameterLabel (line 204) | pub enum ParameterLabel {

FILE: helix-lsp-types/src/trace.rs
  type SetTraceParams (line 4) | pub struct SetTraceParams {
  type TraceValue (line 16) | pub enum TraceValue {
  type LogTraceParams (line 27) | pub struct LogTraceParams {
  function test_set_trace_params (line 42) | fn test_set_trace_params() {
  function test_log_trace_params (line 52) | fn test_log_trace_params() {
  function test_trace_value (line 71) | fn test_trace_value() {

FILE: helix-lsp-types/src/type_hierarchy.rs
  type TypeHierarchyClientCapabilities (line 9) | pub type TypeHierarchyClientCapabilities = DynamicRegistrationClientCapa...
  type TypeHierarchyOptions (line 12) | pub struct TypeHierarchyOptions {
  type TypeHierarchyRegistrationOptions (line 18) | pub struct TypeHierarchyRegistrationOptions {
  type TypeHierarchyPrepareParams (line 28) | pub struct TypeHierarchyPrepareParams {
  type TypeHierarchySupertypesParams (line 36) | pub struct TypeHierarchySupertypesParams {
  type TypeHierarchySubtypesParams (line 46) | pub struct TypeHierarchySubtypesParams {
  type TypeHierarchyItem (line 57) | pub struct TypeHierarchyItem {

FILE: helix-lsp-types/src/window.rs
  type MessageType (line 11) | pub struct MessageType(i32);
  type WindowClientCapabilities (line 28) | pub struct WindowClientCapabilities {
  type ShowMessageRequestClientCapabilities (line 53) | pub struct ShowMessageRequestClientCapabilities {
  type MessageActionItemCapabilities (line 61) | pub struct MessageActionItemCapabilities {
  type MessageActionItem (line 71) | pub struct MessageActionItem {
  type MessageActionItemProperty (line 84) | pub enum MessageActionItemProperty {
  type LogMessageParams (line 92) | pub struct LogMessageParams {
  type ShowMessageParams (line 102) | pub struct ShowMessageParams {
  type ShowMessageRequestParams (line 112) | pub struct ShowMessageRequestParams {
  type ShowDocumentClientCapabilities (line 128) | pub struct ShowDocumentClientCapabilities {
  type ShowDocumentParams (line 138) | pub struct ShowDocumentParams {
  type ShowDocumentResult (line 168) | pub struct ShowDocumentResult {

FILE: helix-lsp-types/src/workspace_diagnostic.rs
  type DiagnosticWorkspaceClientCapabilities (line 13) | pub struct DiagnosticWorkspaceClientCapabilities {
  type PreviousResultId (line 29) | pub struct PreviousResultId {
  type WorkspaceDiagnosticParams (line 42) | pub struct WorkspaceDiagnosticParams {
  type WorkspaceFullDocumentDiagnosticReport (line 62) | pub struct WorkspaceFullDocumentDiagnosticReport {
  type WorkspaceUnchangedDocumentDiagnosticReport (line 80) | pub struct WorkspaceUnchangedDocumentDiagnosticReport {
  type WorkspaceDocumentDiagnosticReport (line 98) | pub enum WorkspaceDocumentDiagnosticReport {
    method from (line 104) | fn from(from: WorkspaceFullDocumentDiagnosticReport) -> Self {
    method from (line 110) | fn from(from: WorkspaceUnchangedDocumentDiagnosticReport) -> Self {
  type WorkspaceDiagnosticReport (line 119) | pub struct WorkspaceDiagnosticReport {
  type WorkspaceDiagnosticReportPartialResult (line 127) | pub struct WorkspaceDiagnosticReportPartialResult {
  type WorkspaceDiagnosticReportResult (line 133) | pub enum WorkspaceDiagnosticReportResult {
    method from (line 139) | fn from(from: WorkspaceDiagnosticReport) -> Self {
    method from (line 145) | fn from(from: WorkspaceDiagnosticReportPartialResult) -> Self {

FILE: helix-lsp-types/src/workspace_folders.rs
  type WorkspaceFoldersServerCapabilities (line 7) | pub struct WorkspaceFoldersServerCapabilities {
  type WorkspaceFolder (line 25) | pub struct WorkspaceFolder {
  type DidChangeWorkspaceFoldersParams (line 34) | pub struct DidChangeWorkspaceFoldersParams {
  type WorkspaceFoldersChangeEvent (line 42) | pub struct WorkspaceFoldersChangeEvent {

FILE: helix-lsp-types/src/workspace_symbols.rs
  type WorkspaceSymbolClientCapabilities (line 10) | pub struct WorkspaceSymbolClientCapabilities {
  type WorkspaceSymbolParams (line 41) | pub struct WorkspaceSymbolParams {
  type WorkspaceSymbolResolveSupportCapability (line 53) | pub struct WorkspaceSymbolResolveSupportCapability {
  type WorkspaceSymbol (line 64) | pub struct WorkspaceSymbol {
  type WorkspaceLocation (line 96) | pub struct WorkspaceLocation {
  type WorkspaceSymbolResponse (line 102) | pub enum WorkspaceSymbolResponse {

FILE: helix-lsp/src/client.rs
  function workspace_for_uri (line 43) | fn workspace_for_uri(uri: lsp::Url) -> WorkspaceFolder {
  type Client (line 55) | pub struct Client {
    method try_add_doc (line 73) | pub fn try_add_doc(
    method add_workspace_folder (line 157) | fn add_workspace_folder(
    method get_merged_formatting_options (line 185) | fn get_merged_formatting_options(
    method start (line 208) | pub fn start(
    method name (line 272) | pub fn name(&self) -> &str {
    method id (line 276) | pub fn id(&self) -> LanguageServerId {
    method next_request_id (line 280) | fn next_request_id(&self) -> jsonrpc::Id {
    method value_into_params (line 285) | fn value_into_params(value: Value) -> jsonrpc::Params {
    method is_initialized (line 296) | pub fn is_initialized(&self) -> bool {
    method capabilities (line 300) | pub fn capabilities(&self) -> &lsp::ServerCapabilities {
    method file_operations_intests (line 306) | pub(crate) fn file_operations_intests(&self) -> &FileOperationsInterest {
    method supports_feature (line 313) | pub fn supports_feature(&self, feature: LanguageServerFeature) -> bool {
    method offset_encoding (line 409) | pub fn offset_encoding(&self) -> OffsetEncoding {
    method config (line 425) | pub fn config(&self) -> Option<&Value> {
    method workspace_folders (line 429) | pub async fn workspace_folders(
    method call (line 436) | fn call<R: lsp::request::Request>(
    method call_with_ref (line 446) | fn call_with_ref<R: lsp::request::Request>(
    method call_with_timeout (line 456) | fn call_with_timeout<R: lsp::request::Request>(
    method notify (line 501) | pub fn notify<R: lsp::notification::Notification>(&self, params: R::Pa...
    method reply (line 535) | pub fn reply(
    method initialize (line 568) | pub(crate) async fn initialize(&self, enable_snippets: bool) -> Result...
    method shutdown (line 759) | pub async fn shutdown(&self) -> Result<()> {
    method exit (line 763) | pub fn exit(&self) {
    method shutdown_and_exit (line 769) | pub async fn shutdown_and_exit(&self) -> Result<()> {
    method force_shutdown (line 776) | pub async fn force_shutdown(&self) -> Result<()> {
    method did_change_configuration (line 788) | pub fn did_change_configuration(&self, settings: Value) {
    method did_change_workspace (line 794) | pub fn did_change_workspace(&self, added: Vec<WorkspaceFolder>, remove...
    method will_rename (line 800) | pub fn will_rename(
    method did_rename (line 828) | pub fn did_rename(&self, old_path: &Path, new_path: &Path, is_dir: boo...
    method text_document_did_open (line 854) | pub fn text_document_did_open(
    method changeset_to_changes (line 871) | pub fn changeset_to_changes(
    method text_document_did_change (line 981) | pub fn text_document_did_change(
    method text_document_did_close (line 1026) | pub fn text_document_did_close(&self, text_document: lsp::TextDocument...
    method text_document_did_save (line 1034) | pub fn text_document_did_save(
    method completion (line 1063) | pub fn completion(
    method resolve_completion_item (line 1091) | pub fn resolve_completion_item(
    method resolve_code_action (line 1098) | pub fn resolve_code_action(
    method text_document_signature_help (line 1116) | pub fn text_document_signature_help(
    method text_document_range_inlay_hints (line 1140) | pub fn text_document_range_inlay_hints(
    method text_document_document_color (line 1165) | pub fn text_document_document_color(
    method text_document_document_link (line 1184) | pub fn text_document_document_link(
    method resolve_document_link (line 1202) | pub fn resolve_document_link(
    method text_document_hover (line 1213) | pub fn text_document_hover(
    method text_document_formatting (line 1244) | pub fn text_document_formatting(
    method text_document_range_formatting (line 1269) | pub fn text_document_range_formatting(
    method text_document_diagnostic (line 1296) | pub fn text_document_diagnostic(
    method text_document_document_highlight (line 1322) | pub fn text_document_document_highlight(
    method goto_request (line 1350) | fn goto_request<
    method goto_definition (line 1375) | pub fn goto_definition(
    method goto_declaration (line 1396) | pub fn goto_declaration(
    method goto_type_definition (line 1421) | pub fn goto_type_definition(
    method goto_implementation (line 1445) | pub fn goto_implementation(
    method goto_reference (line 1469) | pub fn goto_reference(
    method document_symbols (line 1501) | pub fn document_symbols(
    method prepare_call_hierarchy (line 1522) | pub fn prepare_call_hierarchy(
    method call_hierarchy_incoming (line 1548) | pub fn call_hierarchy_incoming(
    method call_hierarchy_outgoing (line 1571) | pub fn call_hierarchy_outgoing(
    method prepare_rename (line 1594) | pub fn prepare_rename(
    method workspace_symbols (line 1618) | pub fn workspace_symbols(
    method code_actions (line 1639) | pub fn code_actions(
    method rename_symbol (line 1667) | pub fn rename_symbol(
    method command (line 1691) | pub fn command(
    method did_change_watched_files (line 1711) | pub fn did_change_watched_files(&self, changes: Vec<lsp::FileEvent>) {

FILE: helix-lsp/src/file_event.rs
  type Event (line 8) | enum Event {
  type ClientState (line 28) | struct ClientState {
  type Handler (line 43) | pub struct Handler {
    method new (line 54) | pub fn new() -> Self {
    method register (line 60) | pub fn register(
    method unregister (line 75) | pub fn unregister(&self, client_id: LanguageServerId, registration_id:...
    method file_changed (line 82) | pub fn file_changed(&self, path: PathBuf) {
    method remove_client (line 86) | pub fn remove_client(&self, client_id: LanguageServerId) {
    method run (line 90) | async fn run(mut rx: mpsc::UnboundedReceiver<Event>) {
  method default (line 48) | fn default() -> Self {

FILE: helix-lsp/src/file_operations.rs
  type FileOperationFilter (line 8) | pub(crate) struct FileOperationFilter {
    method new (line 14) | fn new(capability: Option<&lsp::FileOperationRegistrationOptions>) -> ...
    method has_interest (line 71) | pub(crate) fn has_interest(&self, path: &Path, is_dir: bool) -> bool {
  type FileOperationsInterest (line 81) | pub(crate) struct FileOperationsInterest {
    method new (line 92) | pub fn new(capabilities: &lsp::ServerCapabilities) -> FileOperationsIn...

FILE: helix-lsp/src/jsonrpc.rs
  type ErrorCode (line 16) | pub enum ErrorCode {
    method code (line 26) | pub fn code(&self) -> i64 {
    method from (line 39) | fn from(code: i64) -> Self {
    method deserialize (line 52) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
  method serialize (line 62) | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
  type Error (line 71) | pub struct Error {
    method invalid_params (line 79) | pub fn invalid_params<M>(message: M) -> Self
    method fmt (line 92) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  type Id (line 104) | pub enum Id {
    method fmt (line 138) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  function deserialize_jsonrpc_id_num (line 110) | fn deserialize_jsonrpc_id_num<'de, D>(deserializer: D) -> Result<u64, D:...
  type Version (line 149) | pub enum Version {
    method deserialize (line 184) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
  method serialize (line 154) | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
  type VersionVisitor (line 164) | struct VersionVisitor;
    type Value (line 167) | type Value = Version;
    method expecting (line 169) | fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::...
    method visit_str (line 172) | fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
  type Params (line 194) | pub enum Params {
    method parse (line 201) | pub fn parse<D>(self) -> Result<D, Error>
    method is_none (line 210) | pub fn is_none(&self) -> bool {
  method from (line 216) | fn from(params: Params) -> Value {
  type MethodCall (line 226) | pub struct MethodCall {
  type Notification (line 235) | pub struct Notification {
  type Call (line 245) | pub enum Call {
    method from (line 265) | fn from(method_call: MethodCall) -> Self {
    method from (line 271) | fn from(notification: Notification) -> Self {
  function default_params (line 256) | fn default_params() -> Params {
  function default_id (line 260) | fn default_id() -> Id {
  type Request (line 279) | pub enum Request {
  type Success (line 287) | pub struct Success {
  type Failure (line 295) | pub struct Failure {
  type Output (line 307) | pub enum Output {
  function from (line 313) | fn from(output: Output) -> Self {
  type Response (line 323) | pub enum Response {
    method from (line 329) | fn from(failure: Failure) -> Self {
    method from (line 335) | fn from(success: Success) -> Self {
  function method_call_serialize (line 341) | fn method_call_serialize() {
  function notification_serialize (line 359) | fn notification_serialize() {
  function serialize_skip_none_params (line 376) | fn serialize_skip_none_params() {
  function id_deserialize (line 403) | fn id_deserialize() {
  function success_output_deserialize (line 419) | fn success_output_deserialize() {
  function success_output_deserialize_with_extra_fields (line 436) | fn success_output_deserialize_with_extra_fields() {

FILE: helix-lsp/src/lib.rs
  type Result (line 33) | pub type Result<T, E = Error> = core::result::Result<T, E>;
  type LanguageServerName (line 34) | pub type LanguageServerName = String;
  type Error (line 38) | pub enum Error {
    method from (line 58) | fn from(value: serde_json::Error) -> Self {
    method from (line 64) | fn from(value: sonic_rs::Error) -> Self {
  type OffsetEncoding (line 70) | pub enum OffsetEncoding {
  function diagnostic_to_lsp_diagnostic (line 90) | pub fn diagnostic_to_lsp_diagnostic(
  function lsp_pos_to_pos (line 146) | pub fn lsp_pos_to_pos(
  function pos_to_lsp_pos (line 223) | pub fn pos_to_lsp_pos(
  function range_to_lsp_range (line 254) | pub fn range_to_lsp_range(
  function lsp_range_to_range (line 265) | pub fn lsp_range_to_range(
  function find_completion_range (line 290) | fn find_completion_range(text: RopeSlice, replace_mode: bool, cursor: us...
  function completion_range (line 306) | fn completion_range(
  function generate_transaction_from_completion_edit (line 331) | pub fn generate_transaction_from_completion_edit(
  function generate_transaction_from_snippet (line 374) | pub fn generate_transaction_from_snippet(
  function generate_transaction_from_edits (line 411) | pub fn generate_transaction_from_edits(
  type MethodCall (line 472) | pub enum MethodCall {
    method parse (line 485) | pub fn parse(method: &str, params: jsonrpc::Params) -> Result<MethodCa...
  type Notification (line 527) | pub enum Notification {
    method parse (line 539) | pub fn parse(method: &str, params: jsonrpc::Params) -> Result<Notifica...
  type Registry (line 572) | pub st
Condensed preview — 1642 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,689K chars).
[
  {
    "path": ".cargo/config.toml",
    "chars": 897,
    "preview": "# we use tokio_unstable to enable runtime::Handle::id so we can separate\n# globals from multiple parallel tests. If that"
  },
  {
    "path": ".envrc",
    "chars": 201,
    "preview": "watch_file shell.nix\nwatch_file default.nix\nwatch_file flake.lock\nwatch_file rust-toolchain.toml\n\n# try to use flakes, i"
  },
  {
    "path": ".gitattributes",
    "chars": 304,
    "preview": "# Auto detect text files and perform normalization\n*          text=auto\n\n*.rs       text diff=rust\n*.toml     text diff="
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 30,
    "preview": "open_collective: helix-editor\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yaml",
    "chars": 2326,
    "preview": "name: Bug Report\ndescription: Create a report to help us improve\nlabels: C-bug\nbody:\n  - type: markdown\n    attributes:\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/enhancement.md",
    "chars": 294,
    "preview": "---\nname: Enhancement\nabout: Suggest an improvement\ntitle: ''\nlabels: C-enhancement\nassignees: ''\n---\n\n<!--\nYour enhance"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 475,
    "preview": "# Please see the documentation for all configuration options:\n# https://help.github.com/github/administering-a-repositor"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 4711,
    "preview": "name: Build\non:\n  pull_request:\n  push:\n    branches:\n      - master\n  merge_group:\n  schedule:\n    - cron: \"00 01 * * *"
  },
  {
    "path": ".github/workflows/cachix.yml",
    "chars": 589,
    "preview": "# Publish the Nix flake outputs to Cachix\nname: Cachix\non:\n  push:\n    branches:\n      - master\n\njobs:\n  publish:\n    na"
  },
  {
    "path": ".github/workflows/gh-pages.yml",
    "chars": 947,
    "preview": "name: GitHub Pages\n\non:\n  push:\n    branches:\n      - master\n    tags:\n      - '*'\n\njobs:\n  deploy:\n    runs-on: ubuntu-"
  },
  {
    "path": ".github/workflows/languages.toml",
    "chars": 637,
    "preview": "# This languages.toml is used for testing in CI.\n\n[[language]]\nname = \"rust\"\nscope = \"source.rust\"\ninjection-regex = \"ru"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 9886,
    "preview": "name: Release\non:\n  push:\n    tags:\n    - '[0-9]+.[0-9]+'\n    - '[0-9]+.[0-9]+.[0-9]+'\n    branches:\n    - 'patch/ci-rel"
  },
  {
    "path": ".gitignore",
    "chars": 73,
    "preview": "target\n.direnv\nhelix-term/rustfmt.toml\nresult\nruntime/grammars\n.DS_Store\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 279378,
    "preview": "<!--\n# YY.0M (YYYY-0M-0D)\n\nBreaking changes:\n\nFeatures:\n\nCommands:\n\nUsability improvements:\n\nFixes:\n\nThemes:\n\nNew langua"
  },
  {
    "path": "Cargo.toml",
    "chars": 1394,
    "preview": "[workspace]\nresolver = \"2\"\nmembers = [\n  \"helix-core\",\n  \"helix-view\",\n  \"helix-term\",\n  \"helix-tui\",\n  \"helix-lsp-types"
  },
  {
    "path": "LICENSE",
    "chars": 16725,
    "preview": "Mozilla Public License Version 2.0\n==================================\n\n1. Definitions\n--------------\n\n1.1. \"Contributor\""
  },
  {
    "path": "README.md",
    "chars": 2697,
    "preview": "<div align=\"center\">\n\n<h1>\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"logo_dark.svg\">\n  <source me"
  },
  {
    "path": "base16_theme.toml",
    "chars": 1884,
    "preview": "# Author: NNB <nnbnh@protonmail.com>\n\n\"ui.menu\" = { fg = \"black\", bg = \"white\" }\n\"ui.menu.selected\" = { modifiers = [\"re"
  },
  {
    "path": "contrib/Helix.appdata.xml",
    "chars": 4740,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component type=\"desktop-application\">\n  <id>com.helix_editor.Helix</id>\n  <metad"
  },
  {
    "path": "contrib/Helix.desktop",
    "chars": 3133,
    "preview": "[Desktop Entry]\nName=Helix\nGenericName=Text Editor\nGenericName[ar]=مُحَرِّرُ نُصُوص\nGenericName[de]=Texteditor\nGenericNa"
  },
  {
    "path": "contrib/completion/hx.bash",
    "chars": 955,
    "preview": "#!/usr/bin/env bash\n# Bash completion script for Helix editor\n\n_hx() {\n    local cur prev languages\n    COMPREPLY=()\n   "
  },
  {
    "path": "contrib/completion/hx.elv",
    "chars": 2075,
    "preview": "# You can move it here ~/.config/elvish/lib/hx.elv\n# Or add `eval (slurp < ~/$REPOS/helix/contrib/completion/hx.elv)`\n# "
  },
  {
    "path": "contrib/completion/hx.fish",
    "chars": 1249,
    "preview": "#!/usr/bin/env fish\n# Fish completion script for Helix editor\n\ncomplete -c hx -s h -l help -d \"Prints help information\"\n"
  },
  {
    "path": "contrib/completion/hx.nu",
    "chars": 1855,
    "preview": "# Completions for Helix: <https://github.com/helix-editor/helix>\n#\n# NOTE: the `+N` syntax is not supported in Nushell ("
  },
  {
    "path": "contrib/completion/hx.zsh",
    "chars": 1209,
    "preview": "#compdef _hx hx\n# Zsh completion script for Helix editor\n\n_hx() {\n\t_arguments -C \\\n\t\t\"-h[Prints help information]\" \\\n\t\t\""
  },
  {
    "path": "contrib/hx_launcher.sh",
    "chars": 84,
    "preview": "#!/usr/bin/env sh\n\nHELIX_RUNTIME=/usr/lib/helix/runtime exec /usr/lib/helix/hx \"$@\"\n"
  },
  {
    "path": "default.nix",
    "chars": 2579,
    "preview": "{\n  lib,\n  rustPlatform,\n  callPackage,\n  runCommand,\n  installShellFiles,\n  git,\n  gitRev ? null,\n  grammarOverlays ? ["
  },
  {
    "path": "docs/CONTRIBUTING.md",
    "chars": 3943,
    "preview": "# Contributing\n\nContributors are very welcome! **No contribution is too small and all contributions are valued.**\n\nSome "
  },
  {
    "path": "docs/architecture.md",
    "chars": 5928,
    "preview": "\n| Crate           | Description                                                      |\n| -----------     | ----------- "
  },
  {
    "path": "docs/releases.md",
    "chars": 3178,
    "preview": "## Checklist\n\nHelix releases are versioned in the Calendar Versioning scheme:\n`YY.0M(.MICRO)`, for example, `22.05` for "
  },
  {
    "path": "docs/vision.md",
    "chars": 3274,
    "preview": "The Helix project still has a ways to go before reaching its goals.  This document outlines some of those goals and the "
  },
  {
    "path": "flake.nix",
    "chars": 2918,
    "preview": "{\n  description = \"A post-modern text editor.\";\n\n  inputs = {\n    nixpkgs.url = \"github:nixos/nixpkgs/nixos-unstable\";\n "
  },
  {
    "path": "grammars.nix",
    "chars": 3981,
    "preview": "{\n  stdenv,\n  lib,\n  runCommand,\n  includeGrammarIf ? _: true,\n  grammarOverlays ? [],\n  ...\n}: let\n  languagesConfig =\n"
  },
  {
    "path": "helix-core/.gitignore",
    "chars": 19,
    "preview": "/target\nCargo.lock\n"
  },
  {
    "path": "helix-core/Cargo.toml",
    "chars": 1587,
    "preview": "[package]\nname = \"helix-core\"\ndescription = \"Helix editor core editing primitives\"\ninclude = [\"src/**/*\", \"README.md\"]\nv"
  },
  {
    "path": "helix-core/src/auto_pairs.rs",
    "chars": 12509,
    "preview": "//! When typing the opening character of one of the possible pairs defined below,\n//! this module provides the functiona"
  },
  {
    "path": "helix-core/src/case_conversion.rs",
    "chars": 1803,
    "preview": "use crate::Tendril;\n\n// todo: should this be grapheme aware?\n\npub fn to_pascal_case(text: impl Iterator<Item = char>) ->"
  },
  {
    "path": "helix-core/src/chars.rs",
    "chars": 4268,
    "preview": "//! Utility functions to categorize a `char`.\n\nuse crate::LineEnding;\n\n#[derive(Debug, Eq, PartialEq)]\npub enum CharCate"
  },
  {
    "path": "helix-core/src/command_line.rs",
    "chars": 47222,
    "preview": "//! Types and parsing code for command mode (`:`) input.\n//!\n//! Command line parsing is done in steps:\n//!\n//! * The `T"
  },
  {
    "path": "helix-core/src/comment.rs",
    "chars": 16910,
    "preview": "//! This module contains the functionality toggle comments on lines over the selection\n//! using the comment character d"
  },
  {
    "path": "helix-core/src/completion.rs",
    "chars": 624,
    "preview": "use std::borrow::Cow;\n\nuse crate::{diagnostic::LanguageServerId, Transaction};\n\n#[derive(Debug, PartialEq, Clone)]\npub s"
  },
  {
    "path": "helix-core/src/config.rs",
    "chars": 2520,
    "preview": "use crate::syntax::{\n    config::{Configuration, LanguageConfiguration},\n    Loader, LoaderError,\n};\n\n/// Language confi"
  },
  {
    "path": "helix-core/src/diagnostic.rs",
    "chars": 3106,
    "preview": "//! LSP diagnostic utility types.\nuse std::{fmt, sync::Arc};\n\npub use helix_stdx::range::Range;\nuse serde::{Deserialize,"
  },
  {
    "path": "helix-core/src/diff.rs",
    "chars": 7308,
    "preview": "use std::ops::Range;\nuse std::time::Instant;\n\nuse imara_diff::{Algorithm, Diff, Hunk, IndentHeuristic, IndentLevel, Inte"
  },
  {
    "path": "helix-core/src/doc_formatter/test.rs",
    "chars": 6078,
    "preview": "use crate::doc_formatter::{DocumentFormatter, TextFormat};\nuse crate::text_annotations::{InlineAnnotation, Overlay, Text"
  },
  {
    "path": "helix-core/src/doc_formatter.rs",
    "chars": 16435,
    "preview": "//! The `DocumentFormatter` forms the bridge between the raw document text\n//! and onscreen positioning. It yields the t"
  },
  {
    "path": "helix-core/src/editor_config.rs",
    "chars": 12554,
    "preview": "//! Support for [EditorConfig](https://EditorConfig.org) configuration loading.\n//!\n//! EditorConfig is an editor-agnost"
  },
  {
    "path": "helix-core/src/fuzzy.rs",
    "chars": 1373,
    "preview": "use std::ops::DerefMut;\n\nuse nucleo::pattern::{Atom, AtomKind, CaseMatching, Normalization};\nuse nucleo::Config;\nuse par"
  },
  {
    "path": "helix-core/src/graphemes.rs",
    "chars": 11285,
    "preview": "//! Utility functions to traverse the unicode graphemes of a `Rope`'s text contents.\n//!\n//! Based on <https://github.co"
  },
  {
    "path": "helix-core/src/history.rs",
    "chars": 21839,
    "preview": "use crate::{Assoc, ChangeSet, Range, Rope, Selection, Transaction};\nuse once_cell::sync::Lazy;\nuse regex::Regex;\nuse std"
  },
  {
    "path": "helix-core/src/increment/date_time.rs",
    "chars": 9947,
    "preview": "use chrono::{Duration, NaiveDate, NaiveDateTime, NaiveTime};\nuse once_cell::sync::Lazy;\nuse regex::Regex;\nuse std::fmt::"
  },
  {
    "path": "helix-core/src/increment/integer.rs",
    "chars": 8049,
    "preview": "const SEPARATOR: char = '_';\n\n/// Increment an integer.\n///\n/// Supported bases:\n///     2 with prefix 0b\n///     8 with"
  },
  {
    "path": "helix-core/src/increment/mod.rs",
    "chars": 268,
    "preview": "mod date_time;\nmod integer;\n\npub fn integer(selected_text: &str, amount: i64) -> Option<String> {\n    integer::increment"
  },
  {
    "path": "helix-core/src/indent.rs",
    "chars": 49705,
    "preview": "use std::{borrow::Cow, collections::HashMap};\n\nuse helix_stdx::rope::RopeSliceExt;\nuse tree_house::TREE_SITTER_MATCH_LIM"
  },
  {
    "path": "helix-core/src/lib.rs",
    "chars": 1784,
    "preview": "pub use encoding_rs as encoding;\n\npub mod auto_pairs;\npub mod case_conversion;\npub mod chars;\npub mod command_line;\npub "
  },
  {
    "path": "helix-core/src/line_ending.rs",
    "chars": 11431,
    "preview": "use crate::{Rope, RopeSlice};\n\n#[cfg(target_os = \"windows\")]\npub const NATIVE_LINE_ENDING: LineEnding = LineEnding::Crlf"
  },
  {
    "path": "helix-core/src/macros.rs",
    "chars": 523,
    "preview": "#[macro_export]\nmacro_rules! hashmap {\n    (@single $($x:tt)*) => (());\n    (@count $($rest:expr),*) => (<[()]>::len(&[$"
  },
  {
    "path": "helix-core/src/match_brackets.rs",
    "chars": 11313,
    "preview": "use std::iter;\n\nuse crate::tree_sitter::Node;\nuse ropey::RopeSlice;\n\nuse crate::movement::Direction::{self, Backward, Fo"
  },
  {
    "path": "helix-core/src/movement.rs",
    "chars": 84892,
    "preview": "use std::{borrow::Cow, cmp::Reverse, iter};\n\nuse ropey::iter::Chars;\n\nuse crate::{\n    char_idx_at_visual_offset,\n    ch"
  },
  {
    "path": "helix-core/src/object.rs",
    "chars": 3825,
    "preview": "use crate::{movement::Direction, syntax::TreeCursor, Range, RopeSlice, Selection, Syntax};\n\npub fn expand_selection(synt"
  },
  {
    "path": "helix-core/src/position.rs",
    "chars": 34782,
    "preview": "use std::{\n    borrow::Cow,\n    cmp::Ordering,\n    ops::{Add, AddAssign, Sub, SubAssign},\n};\n\nuse helix_stdx::rope::Rope"
  },
  {
    "path": "helix-core/src/rope_reader.rs",
    "chars": 889,
    "preview": "use std::io;\n\nuse ropey::iter::Chunks;\nuse ropey::RopeSlice;\n\npub struct RopeReader<'a> {\n    current_chunk: &'a [u8],\n "
  },
  {
    "path": "helix-core/src/search.rs",
    "chars": 2671,
    "preview": "use crate::movement::Direction;\nuse crate::RopeSlice;\n\n// TODO: switch to std::str::Pattern when it is stable.\npub trait"
  },
  {
    "path": "helix-core/src/selection.rs",
    "chars": 46890,
    "preview": "//! Selections are the primary editing construct. Even cursors are\n//! defined as a selection range.\n//!\n//! All positio"
  },
  {
    "path": "helix-core/src/snippets/active.rs",
    "chars": 10307,
    "preview": "use std::ops::{Index, IndexMut};\n\nuse foldhash::HashSet;\nuse helix_stdx::range::{is_exact_subset, is_subset};\nuse helix_"
  },
  {
    "path": "helix-core/src/snippets/elaborate.rs",
    "chars": 12884,
    "preview": "use std::mem::swap;\nuse std::ops::Index;\nuse std::sync::Arc;\n\nuse anyhow::{anyhow, Result};\nuse helix_stdx::rope::RopeSl"
  },
  {
    "path": "helix-core/src/snippets/parser.rs",
    "chars": 28558,
    "preview": "/*!\nA parser for LSP/VSCode style snippet syntax\nSee <https://microsoft.github.io/language-server-protocol/specification"
  },
  {
    "path": "helix-core/src/snippets/render.rs",
    "chars": 11364,
    "preview": "use std::borrow::Cow;\nuse std::ops::{Index, IndexMut};\nuse std::sync::Arc;\n\nuse helix_stdx::Range;\nuse ropey::{Rope, Rop"
  },
  {
    "path": "helix-core/src/snippets.rs",
    "chars": 371,
    "preview": "mod active;\nmod elaborate;\nmod parser;\nmod render;\n\n#[derive(PartialEq, Eq, Hash, Debug, PartialOrd, Ord, Clone, Copy)]\n"
  },
  {
    "path": "helix-core/src/surround.rs",
    "chars": 15192,
    "preview": "use std::fmt::Display;\n\nuse crate::{\n    graphemes::next_grapheme_boundary,\n    match_brackets::{\n        self, find_mat"
  },
  {
    "path": "helix-core/src/syntax/config.rs",
    "chars": 21747,
    "preview": "use crate::{auto_pairs::AutoPairs, diagnostic::Severity, Language};\n\nuse helix_stdx::rope;\nuse serde::{ser::SerializeSeq"
  },
  {
    "path": "helix-core/src/syntax.rs",
    "chars": 46107,
    "preview": "pub mod config;\n\nuse std::{\n    borrow::Cow,\n    collections::HashMap,\n    fmt, iter,\n    ops::{self, RangeBounds},\n    "
  },
  {
    "path": "helix-core/src/test.rs",
    "chars": 11740,
    "preview": "//! Test helpers.\nuse crate::{Range, Selection};\nuse ropey::Rope;\nuse smallvec::SmallVec;\nuse std::cmp::Reverse;\nuse uni"
  },
  {
    "path": "helix-core/src/text_annotations.rs",
    "chars": 15796,
    "preview": "use std::cell::Cell;\nuse std::cmp::Ordering;\nuse std::fmt::Debug;\nuse std::ops::Range;\nuse std::ptr::NonNull;\n\nuse crate"
  },
  {
    "path": "helix-core/src/textobject.rs",
    "chars": 20356,
    "preview": "use std::fmt::Display;\n\nuse ropey::RopeSlice;\n\nuse crate::chars::{categorize_char, char_is_whitespace, CharCategory};\nus"
  },
  {
    "path": "helix-core/src/transaction.rs",
    "chars": 36105,
    "preview": "use ropey::RopeSlice;\nuse smallvec::SmallVec;\n\nuse crate::{chars::char_is_word, Range, Rope, Selection, Tendril};\nuse st"
  },
  {
    "path": "helix-core/src/uri.rs",
    "chars": 3118,
    "preview": "use std::{\n    fmt,\n    path::{Path, PathBuf},\n    sync::Arc,\n};\n\n/// A generic pointer to a file location.\n///\n/// Curr"
  },
  {
    "path": "helix-core/src/wrap.rs",
    "chars": 465,
    "preview": "use smartstring::{LazyCompact, SmartString};\nuse textwrap::{Options, WordSplitter::NoHyphenation};\n\n/// Given a slice of"
  },
  {
    "path": "helix-core/tests/data/indent/cpp.cpp",
    "chars": 1043,
    "preview": "std::vector<std::string>\nfn_with_many_parameters(int parm1, long parm2, float parm3, double parm4,\n                     "
  },
  {
    "path": "helix-core/tests/data/indent/languages.toml",
    "chars": 837,
    "preview": "# This languages.toml should contain definitions for all languages for which we have indent tests\n[[language]]\nname = \"r"
  },
  {
    "path": "helix-core/tests/data/indent/rust.rs",
    "chars": 2470,
    "preview": "use std::{\n    io::{self, stdout, Stdout, Write},\n    path::PathBuf,\n    sync::Arc,\n    time::Duration,\n};\nmod test {\n  "
  },
  {
    "path": "helix-core/tests/indent.rs",
    "chars": 8481,
    "preview": "use helix_core::{\n    indent::{indent_level_for_line, treesitter_indent_for_pos, IndentStyle},\n    syntax::{config::Conf"
  },
  {
    "path": "helix-dap/Cargo.toml",
    "chars": 998,
    "preview": "[package]\nname = \"helix-dap\"\ndescription = \"DAP client implementation for Helix project\"\nversion.workspace = true\nauthor"
  },
  {
    "path": "helix-dap/src/client.rs",
    "chars": 17549,
    "preview": "use crate::{\n    registry::DebugAdapterId,\n    requests::{DisconnectArguments, TerminateArguments},\n    transport::{Payl"
  },
  {
    "path": "helix-dap/src/lib.rs",
    "chars": 4079,
    "preview": "mod client;\npub mod registry;\nmod transport;\n\npub use client::Client;\npub use helix_dap_types::*;\npub use transport::{Pa"
  },
  {
    "path": "helix-dap/src/registry.rs",
    "chars": 3470,
    "preview": "use crate::{Client, Payload, Result, StackFrame};\nuse futures_executor::block_on;\nuse futures_util::stream::SelectAll;\nu"
  },
  {
    "path": "helix-dap/src/transport.rs",
    "chars": 10340,
    "preview": "use crate::{registry::DebugAdapterId, Error, Result};\nuse anyhow::Context;\nuse log::{error, info, warn};\nuse serde::{Des"
  },
  {
    "path": "helix-dap-types/Cargo.toml",
    "chars": 424,
    "preview": "[package]\nname = \"helix-dap-types\"\ndescription = \"Types for interaction with a debug adapaters, using Debug Adapter Prot"
  },
  {
    "path": "helix-dap-types/src/lib.rs",
    "chars": 35619,
    "preview": "use serde::{Deserialize, Deserializer, Serialize};\nuse serde_json::Value;\nuse std::collections::HashMap;\nuse std::path::"
  },
  {
    "path": "helix-event/Cargo.toml",
    "chars": 931,
    "preview": "[package]\nname = \"helix-event\"\nversion.workspace = true\nauthors.workspace = true\nedition.workspace = true\nlicense.worksp"
  },
  {
    "path": "helix-event/src/cancel.rs",
    "chars": 8775,
    "preview": "use std::borrow::Borrow;\nuse std::future::Future;\nuse std::sync::atomic::AtomicU64;\nuse std::sync::atomic::Ordering::Rel"
  },
  {
    "path": "helix-event/src/debounce.rs",
    "chars": 2985,
    "preview": "//! Utilities for declaring an async (usually debounced) hook\n\nuse std::time::Duration;\n\nuse futures_executor::block_on;"
  },
  {
    "path": "helix-event/src/hook.rs",
    "chars": 3288,
    "preview": "//! rust dynamic dispatch is extremely limited so we have to build our\n//! own vtable implementation. Otherwise implemen"
  },
  {
    "path": "helix-event/src/lib.rs",
    "chars": 9145,
    "preview": "//! `helix-event` contains systems that allow (often async) communication between\n//! different editor components withou"
  },
  {
    "path": "helix-event/src/redraw.rs",
    "chars": 2058,
    "preview": "//! Signals that control when/if the editor redraws\n\nuse std::future::Future;\n\nuse parking_lot::{RwLock, RwLockReadGuard"
  },
  {
    "path": "helix-event/src/registry.rs",
    "chars": 4645,
    "preview": "//! A global registry where events are registered and can be\n//! subscribed to by registering hooks. The registry identi"
  },
  {
    "path": "helix-event/src/runtime.rs",
    "chars": 3030,
    "preview": "//! The event system makes use of global to decouple different systems.\n//! However, this can cause problems for the int"
  },
  {
    "path": "helix-event/src/status.rs",
    "chars": 1678,
    "preview": "//! A queue of async messages/errors that will be shown in the editor\n\nuse std::borrow::Cow;\nuse std::time::Duration;\n\nu"
  },
  {
    "path": "helix-event/src/test.rs",
    "chars": 2224,
    "preview": "use std::sync::atomic::{AtomicUsize, Ordering};\nuse std::sync::Arc;\nuse std::time::Duration;\n\nuse parking_lot::Mutex;\n\nu"
  },
  {
    "path": "helix-loader/Cargo.toml",
    "chars": 744,
    "preview": "[package]\nname = \"helix-loader\"\ndescription = \"Build bootstrapping for Helix crates\"\nversion.workspace = true\nauthors.wo"
  },
  {
    "path": "helix-loader/build.rs",
    "chars": 2708,
    "preview": "use std::borrow::Cow;\nuse std::path::Path;\nuse std::process::Command;\n\nconst MAJOR: &str = env!(\"CARGO_PKG_VERSION_MAJOR"
  },
  {
    "path": "helix-loader/src/config.rs",
    "chars": 915,
    "preview": "use std::str::from_utf8;\n\n/// Default built-in languages.toml.\npub fn default_lang_config() -> toml::Value {\n    let def"
  },
  {
    "path": "helix-loader/src/grammar.rs",
    "chars": 20133,
    "preview": "use anyhow::{anyhow, bail, Context, Result};\nuse serde::{Deserialize, Serialize};\nuse std::fs;\nuse std::time::SystemTime"
  },
  {
    "path": "helix-loader/src/lib.rs",
    "chars": 12071,
    "preview": "pub mod config;\npub mod grammar;\n\nuse helix_stdx::{env::current_working_dir, path};\n\nuse etcetera::base_strategy::{choos"
  },
  {
    "path": "helix-loader/src/main.rs",
    "chars": 248,
    "preview": "use anyhow::Result;\nuse helix_loader::grammar::fetch_grammars;\n\n// This binary is used in the Release CI as an optimizat"
  },
  {
    "path": "helix-lsp/Cargo.toml",
    "chars": 1074,
    "preview": "[package]\nname = \"helix-lsp\"\ndescription = \"LSP client implementation for Helix project\"\nversion.workspace = true\nauthor"
  },
  {
    "path": "helix-lsp/src/client.rs",
    "chars": 64658,
    "preview": "use crate::{\n    file_operations::FileOperationsInterest,\n    find_lsp_workspace, jsonrpc,\n    transport::{Payload, Tran"
  },
  {
    "path": "helix-lsp/src/file_event.rs",
    "chars": 6759,
    "preview": "use std::{collections::HashMap, path::PathBuf, sync::Weak};\n\nuse globset::{GlobBuilder, GlobSetBuilder};\nuse tokio::sync"
  },
  {
    "path": "helix-lsp/src/file_operations.rs",
    "chars": 3473,
    "preview": "use std::path::Path;\n\nuse globset::{GlobBuilder, GlobSet};\n\nuse crate::lsp;\n\n#[derive(Default, Debug)]\npub(crate) struct"
  },
  {
    "path": "helix-lsp/src/jsonrpc.rs",
    "chars": 12459,
    "preview": "//! An implementation of the JSONRPC 2.0 spec types\n\n// Upstream implementation: https://github.com/paritytech/jsonrpc/t"
  },
  {
    "path": "helix-lsp/src/lib.rs",
    "chars": 39602,
    "preview": "mod client;\npub mod file_event;\nmod file_operations;\npub mod jsonrpc;\nmod transport;\n\nuse arc_swap::ArcSwap;\npub use cli"
  },
  {
    "path": "helix-lsp/src/transport.rs",
    "chars": 15170,
    "preview": "use crate::{\n    jsonrpc,\n    lsp::{self, notification::Notification as _},\n    Error, LanguageServerId, Result,\n};\nuse "
  },
  {
    "path": "helix-lsp-types/Cargo.toml",
    "chars": 865,
    "preview": "[package]\nname = \"helix-lsp-types\"\nversion = \"0.95.1\"\nauthors = [\n  # Original authors\n  \"Markus Westerlind <marwes91@gm"
  },
  {
    "path": "helix-lsp-types/LICENSE",
    "chars": 1085,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2016 Markus Westerlind\n\nPermission is hereby granted, free of charge, to any person"
  },
  {
    "path": "helix-lsp-types/README.md",
    "chars": 533,
    "preview": "# Helix's `lsp-types`\n\nThis is a fork of the [`lsp-types`](https://crates.io/crates/lsp-types) crate ([`gluon-lang/lsp-t"
  },
  {
    "path": "helix-lsp-types/src/call_hierarchy.rs",
    "chars": 4263,
    "preview": "use serde::{Deserialize, Serialize};\nuse serde_json::Value;\n\nuse crate::{\n    DynamicRegistrationClientCapabilities, Par"
  },
  {
    "path": "helix-lsp-types/src/code_action.rs",
    "chars": 13585,
    "preview": "use crate::{\n    Command, Diagnostic, PartialResultParams, Range, TextDocumentIdentifier,\n    WorkDoneProgressOptions, W"
  },
  {
    "path": "helix-lsp-types/src/code_lens.rs",
    "chars": 2508,
    "preview": "use serde::{Deserialize, Serialize};\nuse serde_json::Value;\n\nuse crate::{\n    Command, DynamicRegistrationClientCapabili"
  },
  {
    "path": "helix-lsp-types/src/color.rs",
    "chars": 4163,
    "preview": "use crate::{\n    DocumentSelector, DynamicRegistrationClientCapabilities, PartialResultParams, Range,\n    TextDocumentId"
  },
  {
    "path": "helix-lsp-types/src/completion.rs",
    "chars": 24233,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{\n    Command, Documentation, MarkupKind, PartialResultParams, TagSuppo"
  },
  {
    "path": "helix-lsp-types/src/document_diagnostic.rs",
    "chars": 10552,
    "preview": "use std::{collections::HashMap, sync::Arc};\n\nuse serde::{Deserialize, Serialize};\n\nuse crate::{\n    Diagnostic, PartialR"
  },
  {
    "path": "helix-lsp-types/src/document_highlight.rs",
    "chars": 1737,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{\n    DynamicRegistrationClientCapabilities, PartialResultParams, Range"
  },
  {
    "path": "helix-lsp-types/src/document_link.rs",
    "chars": 2461,
    "preview": "use crate::{\n    PartialResultParams, Range, TextDocumentIdentifier, Url, WorkDoneProgressOptions,\n    WorkDoneProgressP"
  },
  {
    "path": "helix-lsp-types/src/document_symbols.rs",
    "chars": 4834,
    "preview": "use crate::{\n    Location, PartialResultParams, Range, SymbolKind, SymbolKindCapability, TextDocumentIdentifier,\n    Wor"
  },
  {
    "path": "helix-lsp-types/src/error_codes.rs",
    "chars": 2256,
    "preview": "//! In this module we only define constants for lsp specific error codes.\n//! There are other error codes that are defin"
  },
  {
    "path": "helix-lsp-types/src/file_operations.rs",
    "chars": 7715,
    "preview": "use serde::{Deserialize, Serialize};\n\n#[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)]\n#[serde(re"
  },
  {
    "path": "helix-lsp-types/src/folding_range.rs",
    "chars": 5584,
    "preview": "use crate::{\n    PartialResultParams, StaticTextDocumentColorProviderOptions, TextDocumentIdentifier,\n    WorkDoneProgre"
  },
  {
    "path": "helix-lsp-types/src/formatting.rs",
    "chars": 4934,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{\n    DocumentSelector, DynamicRegistrationClientCapabilities, Range, T"
  },
  {
    "path": "helix-lsp-types/src/hover.rs",
    "chars": 2686,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{\n    MarkedString, MarkupContent, MarkupKind, Range, TextDocumentPosit"
  },
  {
    "path": "helix-lsp-types/src/inlay_hint.rs",
    "chars": 9396,
    "preview": "use crate::{\n    Command, LSPAny, Location, MarkupContent, Position, Range, StaticRegistrationOptions,\n    TextDocumentI"
  },
  {
    "path": "helix-lsp-types/src/inline_completion.rs",
    "chars": 6197,
    "preview": "use crate::{\n    Command, InsertTextFormat, Range, StaticRegistrationOptions, TextDocumentPositionParams,\n    TextDocume"
  },
  {
    "path": "helix-lsp-types/src/inline_value.rs",
    "chars": 7298,
    "preview": "use crate::{\n    DynamicRegistrationClientCapabilities, Range, StaticRegistrationOptions,\n    TextDocumentIdentifier, Te"
  },
  {
    "path": "helix-lsp-types/src/lib.rs",
    "chars": 99170,
    "preview": "/*!\n\nLanguage Server Protocol types for Rust.\n\nBased on: <https://microsoft.github.io/language-server-protocol/specifica"
  },
  {
    "path": "helix-lsp-types/src/linked_editing.rs",
    "chars": 2182,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{\n    DynamicRegistrationClientCapabilities, Range, StaticRegistrationO"
  },
  {
    "path": "helix-lsp-types/src/lsif.rs",
    "chars": 9995,
    "preview": "//! Types of Language Server Index Format (LSIF). LSIF is a standard format\n//! for language servers or other programmin"
  },
  {
    "path": "helix-lsp-types/src/moniker.rs",
    "chars": 3062,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{\n    DynamicRegistrationClientCapabilities, PartialResultParams, TextD"
  },
  {
    "path": "helix-lsp-types/src/notification.rs",
    "chars": 12437,
    "preview": "use super::*;\n\nuse serde::{de::DeserializeOwned, Serialize};\n\npub trait Notification {\n    type Params: DeserializeOwned"
  },
  {
    "path": "helix-lsp-types/src/progress.rs",
    "chars": 5211,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::NumberOrString;\n\npub type ProgressToken = NumberOrString;\n\n/// The prog"
  },
  {
    "path": "helix-lsp-types/src/references.rs",
    "chars": 959,
    "preview": "use crate::{\n    DynamicRegistrationClientCapabilities, PartialResultParams, TextDocumentPositionParams,\n    WorkDonePro"
  },
  {
    "path": "helix-lsp-types/src/rename.rs",
    "chars": 3007,
    "preview": "use crate::{Range, TextDocumentPositionParams, WorkDoneProgressOptions, WorkDoneProgressParams};\nuse serde::{Deserialize"
  },
  {
    "path": "helix-lsp-types/src/request.rs",
    "chars": 42233,
    "preview": "use super::*;\n\nuse serde::{de::DeserializeOwned, Serialize};\n\npub trait Request {\n    type Params: DeserializeOwned + Se"
  },
  {
    "path": "helix-lsp-types/src/selection_range.rs",
    "chars": 2823,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{\n    PartialResultParams, Position, Range, StaticTextDocumentRegistrat"
  },
  {
    "path": "helix-lsp-types/src/semantic_tokens.rs",
    "chars": 25230,
    "preview": "use std::borrow::Cow;\n\nuse serde::ser::SerializeSeq;\nuse serde::{Deserialize, Serialize};\n\nuse crate::{\n    PartialResul"
  },
  {
    "path": "helix-lsp-types/src/signature_help.rs",
    "chars": 8173,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{\n    Documentation, MarkupKind, TextDocumentPositionParams, TextDocume"
  },
  {
    "path": "helix-lsp-types/src/trace.rs",
    "chars": 2229,
    "preview": "use serde::{Deserialize, Serialize};\n\n#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]\npub struct SetTrace"
  },
  {
    "path": "helix-lsp-types/src/type_hierarchy.rs",
    "chars": 3162,
    "preview": "use crate::{\n    DynamicRegistrationClientCapabilities, LSPAny, PartialResultParams, Range,\n    StaticRegistrationOption"
  },
  {
    "path": "helix-lsp-types/src/window.rs",
    "chars": 5549,
    "preview": "use std::collections::HashMap;\n\nuse serde::{Deserialize, Serialize};\n\nuse serde_json::Value;\n\nuse crate::{Range, Url};\n\n"
  },
  {
    "path": "helix-lsp-types/src/workspace_diagnostic.rs",
    "chars": 4967,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{\n    FullDocumentDiagnosticReport, PartialResultParams, UnchangedDocum"
  },
  {
    "path": "helix-lsp-types/src/workspace_folders.rs",
    "chars": 1751,
    "preview": "use serde::{Deserialize, Serialize};\n\nuse crate::{OneOf, Url};\n\n#[derive(Debug, Eq, PartialEq, Clone, Default, Deseriali"
  },
  {
    "path": "helix-lsp-types/src/workspace_symbols.rs",
    "chars": 3691,
    "preview": "use crate::{\n    LSPAny, Location, OneOf, PartialResultParams, SymbolInformation, SymbolKind,\n    SymbolKindCapability, "
  },
  {
    "path": "helix-parsec/Cargo.toml",
    "chars": 341,
    "preview": "[package]\nname = \"helix-parsec\"\ndescription = \"Parser combinators for Helix\"\ninclude = [\"src/**/*\", \"README.md\"]\nversion"
  },
  {
    "path": "helix-parsec/src/lib.rs",
    "chars": 17641,
    "preview": "//! Parser-combinator functions\n//!\n//! This module provides parsers and parser combinators which can be used\n//! togeth"
  },
  {
    "path": "helix-stdx/Cargo.toml",
    "chars": 896,
    "preview": "[package]\nname = \"helix-stdx\"\ndescription = \"Standard library extensions\"\ninclude = [\"src/**/*\", \"README.md\"]\nversion.wo"
  },
  {
    "path": "helix-stdx/src/env.rs",
    "chars": 7675,
    "preview": "//! Functions for working with the host environment.\nuse std::{\n    borrow::Cow,\n    ffi::{OsStr, OsString},\n    path::{"
  },
  {
    "path": "helix-stdx/src/faccess.rs",
    "chars": 15554,
    "preview": "//! Functions for managine file metadata.\n//! From <https://github.com/Freaky/faccess>\n\nuse std::io;\nuse std::path::Path"
  },
  {
    "path": "helix-stdx/src/lib.rs",
    "chars": 197,
    "preview": "//! Extensions to the standard library. A collection of helper functions\n//! used throughout helix.\n\npub mod env;\npub mo"
  },
  {
    "path": "helix-stdx/src/path.rs",
    "chars": 15751,
    "preview": "//! Functions for working with [Path].\n\npub use etcetera::home_dir;\nuse once_cell::sync::Lazy;\nuse regex_cursor::{engine"
  },
  {
    "path": "helix-stdx/src/range.rs",
    "chars": 3525,
    "preview": "//! Provides [Range] type expanding on [RangeBounds].\n\nuse std::ops::{self, RangeBounds};\n\n/// A range of `char`s within"
  },
  {
    "path": "helix-stdx/src/rope.rs",
    "chars": 31598,
    "preview": "//! Functions and types for working with [RopeSlice]\nuse std::fmt;\nuse std::ops::{Bound, RangeBounds};\n\npub use regex_cu"
  },
  {
    "path": "helix-stdx/tests/path.rs",
    "chars": 3336,
    "preview": "#![cfg(windows)]\n\nuse std::{env::set_current_dir, error::Error, path::Component};\n\nuse helix_stdx::path;\nuse tempfile::B"
  },
  {
    "path": "helix-term/.gitignore",
    "chars": 8,
    "preview": "/target\n"
  },
  {
    "path": "helix-term/Cargo.toml",
    "chars": 3747,
    "preview": "[package]\nname = \"helix-term\"\ndescription = \"A post-modern text editor.\"\ninclude = [\"src/**/*\", \"README.md\"]\ndefault-run"
  },
  {
    "path": "helix-term/build.rs",
    "chars": 6004,
    "preview": "use helix_loader::grammar::{build_grammars, fetch_grammars};\n\nfn main() {\n    if std::env::var(\"HELIX_DISABLE_AUTO_GRAMM"
  },
  {
    "path": "helix-term/src/application.rs",
    "chars": 55888,
    "preview": "use arc_swap::{access::Map, ArcSwap};\nuse futures_util::Stream;\nuse helix_core::{diagnostic::Severity, pos_at_coords, sy"
  },
  {
    "path": "helix-term/src/args.rs",
    "chars": 6453,
    "preview": "use anyhow::Result;\nuse helix_core::Position;\nuse helix_view::tree::Layout;\nuse indexmap::IndexMap;\nuse std::path::{Path"
  },
  {
    "path": "helix-term/src/commands/dap.rs",
    "chars": 26099,
    "preview": "use super::{Context, Editor};\nuse crate::{\n    compositor::{self, Compositor},\n    job::{Callback, Jobs},\n    ui::{self,"
  },
  {
    "path": "helix-term/src/commands/lsp.rs",
    "chars": 54793,
    "preview": "use futures_util::{stream::FuturesOrdered, FutureExt};\nuse helix_lsp::{\n    block_on,\n    lsp::{\n        self, CodeActio"
  },
  {
    "path": "helix-term/src/commands/syntax.rs",
    "chars": 16159,
    "preview": "use std::{\n    collections::HashSet,\n    iter,\n    path::{Path, PathBuf},\n    sync::Arc,\n};\n\nuse dashmap::DashMap;\nuse f"
  },
  {
    "path": "helix-term/src/commands/typed.rs",
    "chars": 134633,
    "preview": "use std::fmt::Write;\nuse std::io::BufReader;\nuse std::ops::{self, Deref};\n\nuse crate::job::Job;\n\nuse super::*;\n\nuse heli"
  },
  {
    "path": "helix-term/src/commands.rs",
    "chars": 238375,
    "preview": "pub(crate) mod dap;\npub(crate) mod lsp;\npub(crate) mod syntax;\npub(crate) mod typed;\n\npub use dap::*;\nuse futures_util::"
  },
  {
    "path": "helix-term/src/compositor.rs",
    "chars": 9161,
    "preview": "// Each component declares its own size constraints and gets fitted based on its parent.\n// Q: how does this work with p"
  },
  {
    "path": "helix-term/src/config.rs",
    "chars": 5905,
    "preview": "use crate::keymap;\nuse crate::keymap::{merge_keys, KeyTrie};\nuse helix_loader::merge_toml_values;\nuse helix_view::{docum"
  },
  {
    "path": "helix-term/src/events.rs",
    "chars": 1167,
    "preview": "use helix_event::{events, register_event};\nuse helix_view::document::Mode;\nuse helix_view::events::{\n    ConfigDidChange"
  },
  {
    "path": "helix-term/src/handlers/auto_save.rs",
    "chars": 3424,
    "preview": "use std::{\n    sync::{\n        atomic::{self, AtomicBool},\n        Arc,\n    },\n    time::Duration,\n};\n\nuse anyhow::Ok;\nu"
  },
  {
    "path": "helix-term/src/handlers/completion/item.rs",
    "chars": 3735,
    "preview": "use std::mem;\n\nuse helix_core::completion::CompletionProvider;\nuse helix_lsp::{lsp, LanguageServerId};\nuse helix_view::h"
  },
  {
    "path": "helix-term/src/handlers/completion/path.rs",
    "chars": 6906,
    "preview": "use std::{\n    borrow::Cow,\n    fs,\n    path::{Path, PathBuf},\n    str::FromStr as _,\n    sync::Arc,\n};\n\nuse helix_core:"
  },
  {
    "path": "helix-term/src/handlers/completion/request.rs",
    "chars": 13572,
    "preview": "use std::collections::{HashMap, HashSet};\nuse std::sync::Arc;\nuse std::time::Duration;\n\nuse arc_swap::ArcSwap;\nuse futur"
  },
  {
    "path": "helix-term/src/handlers/completion/resolve.rs",
    "chars": 6001,
    "preview": "use std::sync::Arc;\n\nuse helix_lsp::lsp;\nuse tokio::sync::mpsc::Sender;\nuse tokio::time::{Duration, Instant};\n\nuse helix"
  },
  {
    "path": "helix-term/src/handlers/completion/word.rs",
    "chars": 3984,
    "preview": "use std::{borrow::Cow, sync::Arc};\n\nuse helix_core::{\n    self as core, chars::char_is_word, completion::CompletionProvi"
  },
  {
    "path": "helix-term/src/handlers/completion.rs",
    "chars": 9585,
    "preview": "use std::collections::HashMap;\n\nuse helix_core::chars::char_is_word;\nuse helix_core::completion::CompletionProvider;\nuse"
  },
  {
    "path": "helix-term/src/handlers/diagnostics.rs",
    "chars": 10428,
    "preview": "use futures_util::stream::FuturesUnordered;\nuse std::collections::HashSet;\nuse std::mem;\nuse std::time::Duration;\nuse to"
  },
  {
    "path": "helix-term/src/handlers/document_colors.rs",
    "chars": 6876,
    "preview": "use std::{collections::HashSet, time::Duration};\n\nuse futures_util::{stream::FuturesOrdered, StreamExt};\nuse helix_core:"
  },
  {
    "path": "helix-term/src/handlers/document_highlight.rs",
    "chars": 5895,
    "preview": "use helix_core::syntax::config::LanguageServerFeature;\nuse helix_event::{cancelable_future, register_hook};\nuse helix_ls"
  },
  {
    "path": "helix-term/src/handlers/document_links.rs",
    "chars": 5655,
    "preview": "use std::{collections::HashSet, time::Duration};\n\nuse futures_util::{stream::FuturesOrdered, StreamExt};\nuse helix_core:"
  },
  {
    "path": "helix-term/src/handlers/prompt.rs",
    "chars": 488,
    "preview": "use helix_event::register_hook;\nuse helix_view::events::DocumentFocusLost;\nuse helix_view::handlers::Handlers;\n\nuse crat"
  },
  {
    "path": "helix-term/src/handlers/signature_help.rs",
    "chars": 12435,
    "preview": "use std::sync::Arc;\nuse std::time::Duration;\n\nuse helix_core::syntax::config::LanguageServerFeature;\nuse helix_event::{c"
  },
  {
    "path": "helix-term/src/handlers/snippet.rs",
    "chars": 967,
    "preview": "use helix_event::register_hook;\nuse helix_view::events::{DocumentDidChange, DocumentFocusLost, SelectionDidChange};\nuse "
  },
  {
    "path": "helix-term/src/handlers.rs",
    "chars": 2053,
    "preview": "use std::sync::Arc;\n\nuse arc_swap::ArcSwap;\nuse diagnostics::PullAllDocumentsDiagnosticHandler;\nuse helix_event::AsyncHo"
  },
  {
    "path": "helix-term/src/health.rs",
    "chars": 14141,
    "preview": "use crate::config::{Config, ConfigLoadError};\nuse helix_core::config::{default_lang_config, user_lang_config};\nuse helix"
  },
  {
    "path": "helix-term/src/job.rs",
    "chars": 5194,
    "preview": "use helix_event::status::StatusMessage;\nuse helix_event::{runtime_local, send_blocking};\nuse helix_view::Editor;\nuse onc"
  },
  {
    "path": "helix-term/src/keymap/default.rs",
    "chars": 13429,
    "preview": "use std::collections::HashMap;\n\nuse super::macros::keymap;\nuse super::{KeyTrie, Mode};\nuse helix_core::hashmap;\n\npub fn "
  },
  {
    "path": "helix-term/src/keymap/macros.rs",
    "chars": 3777,
    "preview": "#[macro_export]\nmacro_rules! key {\n    ($key:ident) => {\n        ::helix_view::input::KeyEvent {\n            code: ::hel"
  },
  {
    "path": "helix-term/src/keymap.rs",
    "chars": 19307,
    "preview": "pub mod default;\npub mod macros;\n\npub use crate::commands::MappableCommand;\nuse arc_swap::{\n    access::{DynAccess, DynG"
  },
  {
    "path": "helix-term/src/lib.rs",
    "chars": 2292,
    "preview": "#[macro_use]\nextern crate helix_view;\n\npub mod application;\npub mod args;\npub mod commands;\npub mod compositor;\npub mod "
  },
  {
    "path": "helix-term/src/main.rs",
    "chars": 6078,
    "preview": "use anyhow::{Context, Error, Result};\nuse helix_loader::VERSION_AND_GIT_HASH;\nuse helix_term::application::Application;\n"
  },
  {
    "path": "helix-term/src/ui/completion.rs",
    "chars": 27629,
    "preview": "use crate::handlers::completion::LspCompletionItem;\nuse crate::ui::{menu, Markdown, Menu, Popup, PromptEvent};\nuse crate"
  },
  {
    "path": "helix-term/src/ui/document.rs",
    "chars": 18920,
    "preview": "use std::cmp::min;\n\nuse helix_core::doc_formatter::{DocumentFormatter, FormattedGrapheme, GraphemeSource, TextFormat};\nu"
  },
  {
    "path": "helix-term/src/ui/editor.rs",
    "chars": 66397,
    "preview": "use crate::{\n    commands::{self, OnKeyCallback, OnKeyCallbackKind},\n    compositor::{Component, Context, Event, EventRe"
  },
  {
    "path": "helix-term/src/ui/info.rs",
    "chars": 1464,
    "preview": "use crate::compositor::{Component, Context};\nuse helix_view::graphics::{Margin, Rect};\nuse helix_view::info::Info;\nuse t"
  },
  {
    "path": "helix-term/src/ui/lsp/hover.rs",
    "chars": 5911,
    "preview": "use std::sync::Arc;\n\nuse arc_swap::ArcSwap;\nuse helix_core::syntax;\nuse helix_lsp::lsp;\nuse helix_view::graphics::{Margi"
  }
]

// ... and 1442 more files (download for full content)

About this extraction

This page contains the full source code of the helix-editor/helix GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1642 files (6.4 MB), approximately 1.8M tokens, and a symbol index with 5467 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!