No description
Find a file
Nik Revenco 29f442887a feat: Inline Git Blame
fix: use relative path when finding file

style: cargo fmt

_

chore: better error message

refactor: rename to `blame_line`

fix: use line of primary cursor for git blame

feat: basic implementation of blocking Blame handler

feat: implement basic virtual text (end of line blame)

feat: figure out how to draw stuff at the end of lines

feat: implement end of line virtual text for the current line

feat: implement inline git blame

chore: clean up

chore: remove unused import

_

chore: set `blame` to `false` by default

docs: document `[editor.vcs.blame]`

chore: add progress

perf: use background task for worker

_

chore: remove unnecessary panic!s

chore: remove commented code

refactor: remove some layers of abstraction

refactor: remove nesting

feat: [editor.vcs] -> [editor.version-control]

fix: account for inserted and deleted lines

_

refactor: extract into a `blame` module

feat: allow using custom commit format

feat: allow more customizability for inline blame

test: add tests for custom inline commit parsser

refactor: rename `blame` -> `blame_line`

_

_

test: create helper macros for tests

test: make test syntax more expressive. Allow specifying line numbers
that just got added

test: with interspersed lines

feat: add `line_blame` static command

_

test: add an extra test case

test: add ability to have `delete`d lines

test: fix on windows (?)

test: `delete` test case

test: add extra step to test case

test: add documentation for macro

refactor: use `hashmap!` macro

refactor: collapse match arm

fix: remove panic

perf: update inline git blame every 150 milliseconds instead of on each
command

test: add attributes on blocks

style: move function earlier in the file

perf: cache blame results in a hashma

chore: remove log statements

chore: clean up.

ALSO: removes checking for inline blame every N seconds.

_

perf: use mspc instead of busy-wait

docs: add information why we don't optimize the repo

_

test: add back the commented out tests

chore: comment out cfg(not(windows))

test: add extra history to blame test

docs: remove incorrect static command

_

test: disable test on windows

feat: send inline blame event update when reloading or saving the
document

feat: rename `version-control` -> `inline-blame`

feat: update theme key used for inline-blame

chore: remove unused #![allow]

chore:

style: remove accidental formatting

docs: remove incorrect key

perf: Use a single `ThreadSafeRepository` instead of re-constructing it
each time

feat: add `inline_blame` static command bound to `space + B`

style: revert formatting in keymap.md

chore: do not compute blame for document when changing config option

This isn't needed anymore because the inline-blame will be computed
regardless if `inline_blame.enable` is set or not

style: remove newline

refactor: use `fold` instead of loop

chore: clean up

feat: log error forl line blame when it happens

feat: improve message when we don't have the blame

We know that we don't have it because we're still calculating it.

feat: do not render inline blame for empty lines

_

feat: do not show blame output when we are on a hunk that was added

refactor: remove additional wrapper methods

fix

_

feat: more readable time for git blame

chr

feat:

feat: improved error handling

fix: path separator on Windows

test: disable on windows

refactor: move pretty date function formatter into `helix-stdx`

perf: do not use a syscall on each render

chore: add TODO comment to update gix version

chore: use `gix::path` conversion from Path -> BString

_

_

chore: do not update file blame on document save

This is not needed because when we write the file, we don't make a new
commit so the blame will not change.

refactor: use statics to get time elapsed instead of editor state

refactor: do not use custom event, use handler instead

fix: do not spawn a new handler

docs: correct examples for `editor.inline-blame.format`

docs: correct static command name

refactor: add comments, and improve variable names

I didn't really understand this function when I made it. Was just
copy-pasted from end of line diagnostics

I wanted to know what this is actually doing, so I investigated and
while doing this also added comments and improved names of variables
so others can understand too

fix: time in future is accounted for

perf: inline some functions that are called in only 1 place, during a
render loop

perf: add option to disable requesting inline blame in the background

fix: request blame again when document is reloaded

chore: inline blame is disabled with request on demand

feat: when requesting line blame with "blame on demand", show blame in
status

perf: use less allocations

perf: less allocations in `format_relative_time`

_

_

_

_

docs: correct name of command

_

feat: improve error message

_

feat: rename enum variants for inline blame behaviour

docs: improve description of behaviour field
2025-03-24 00:32:29 +00:00
.cargo Add hook/event system 2024-01-23 11:20:19 +09:00
.github build(deps): bump cachix/install-nix-action from 30 to 31 () 2025-03-11 08:49:18 -05:00
book feat: Inline Git Blame 2025-03-24 00:32:29 +00:00
contrib Fix Bash completion space regression () 2025-02-10 10:42:45 -06:00
docs Document installation of rust-analyzer via rustup () 2025-02-01 19:43:20 -06:00
helix-core Color swatches ( 🟩 green 🟥 #ffaaaa ) () 2025-03-23 16:07:02 -05:00
helix-dap DAP: Drain pending requests on recv failure 2025-02-04 09:09:54 -05:00
helix-event minor: Use a workspace dependency for parking_lot 2025-03-13 12:34:40 -04:00
helix-loader build(grammar): remove -fPIC flag from windows build () 2025-03-23 09:32:56 -05:00
helix-lsp Color swatches ( 🟩 green 🟥 #ffaaaa ) () 2025-03-23 16:07:02 -05:00
helix-lsp-types Add pull diagnostics identifier to LSP diagnostic provider 2025-03-22 09:25:29 -04:00
helix-parsec fix(clippy): clippy 1.83 lints () 2024-12-02 08:23:32 -06:00
helix-stdx feat: Inline Git Blame 2025-03-24 00:32:29 +00:00
helix-term feat: Inline Git Blame 2025-03-24 00:32:29 +00:00
helix-tui build(deps): bump the rust-dependencies group with 5 updates () 2025-03-11 08:29:38 -05:00
helix-vcs feat: Inline Git Blame 2025-03-24 00:32:29 +00:00
helix-view feat: Inline Git Blame 2025-03-24 00:32:29 +00:00
runtime Make goto_word highlights visible (same fix as ) () 2025-03-23 10:27:58 -05:00
xtask xtask: Inline query and theme checks into main module 2025-02-24 10:51:28 -05:00
.envrc direnv: Watch changes to default.nix 2025-03-04 11:31:54 -05:00
.gitattributes Add .gitattributes () 2022-08-03 08:21:51 -05:00
.gitignore fix: added .DS_Store to gitignore 2024-11-20 16:18:42 -06:00
base16_theme.toml base16_default: add styles to newer unthemed features () 2024-06-23 10:07:13 +09:00
Cargo.lock feat: Inline Git Blame 2025-03-24 00:32:29 +00:00
Cargo.toml build(deps): bump the rust-dependencies group with 5 updates () 2025-03-18 12:52:22 +09:00
CHANGELOG.md Fix typos () 2025-02-02 18:58:29 -06:00
default.nix flake: Avoid setting HELIX_RUNTIME in devShell 2025-03-06 18:40:35 -05:00
flake.lock Clean up Nix Flake & make it easier to customize () 2025-03-04 10:23:28 -06:00
flake.nix flake: Revert devShell linker to lld 2025-03-07 12:06:33 -05:00
grammars.nix Clean up Nix Flake & make it easier to customize () 2025-03-04 10:23:28 -06:00
languages.toml add werk language and highlights () 2025-03-20 08:04:52 -05:00
LICENSE
logo.svg Reduce logo sizes even more () 2024-01-02 23:16:37 +01:00
logo_dark.svg Reduce logo sizes even more () 2024-01-02 23:16:37 +01:00
logo_light.svg Reduce logo sizes even more () 2024-01-02 23:16:37 +01:00
README.md Fix repology badge () 2024-10-16 01:52:50 +09:00
rust-toolchain.toml chore(msrv): bump MSRV from 1.70 to 1.76 2024-11-22 01:17:08 -08:00
rustfmt.toml
screenshot.png
shell.nix
theme.toml Allow theming directory prompt completions () 2024-12-17 21:13:42 -06:00

Helix

Build status GitHub Release Documentation GitHub contributors Matrix Space

Screenshot

A Kakoune / Neovim inspired editor, written in Rust.

The editing model is very heavily based on Kakoune; during development I found myself agreeing with most of Kakoune's design decisions.

For more information, see the website or documentation.

All shortcuts/keymaps can be found in the documentation on the website.

Troubleshooting

Features

  • Vim-like modal editing
  • Multiple selections
  • Built-in language server support
  • Smart, incremental syntax highlighting and code editing via tree-sitter

Although it's primarily a terminal-based editor, I am interested in exploring a custom renderer (similar to Emacs) using wgpu or skulpin.

Note: Only certain languages have indentation definitions at the moment. Check runtime/queries/<lang>/ for indents.scm.

Installation

Installation documentation.

Packaging status

Contributing

Contributing guidelines can be found here.

Getting help

Your question might already be answered on the FAQ.

Discuss the project on the community Matrix Space (make sure to join #helix-editor:matrix.org if you're on a client that doesn't support Matrix Spaces yet).

Credits

Thanks to @jakenvac for designing the logo!