Rebased from Helix upstream - #162
Open
Kruziikrel13 wants to merge 1052 commits into
Open
Kruziikrel13 wants to merge 1052 commits into
Kruziikrel13 wants to merge 1052 commits into
Conversation
**Skip diagnostic-highlight construction when there are no diagnostics.** **O(1) theme highlight lookup.** `Theme::find_highlight_exact` linearly scanned the theme's ~200-entry `scopes` vec, called many times per frame on a fixed set of strings. Build a `scope_index` once at theme load for O(1) look ups.
* languages: point tree-sitter-nix to numtide's more active fork * languages: update nix queries to match upstream
Bumps [gix](https://github.com/GitoxideLabs/gitoxide) from 0.83.0 to 0.84.0. - [Release notes](https://github.com/GitoxideLabs/gitoxide/releases) - [Changelog](https://github.com/GitoxideLabs/gitoxide/blob/main/CHANGELOG.md) - [Commits](GitoxideLabs/gitoxide@gix-v0.83.0...gix-v0.84.0) --- updated-dependencies: - dependency-name: gix dependency-version: 0.84.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
… 6 updates (#15843) Bumps the rust-dependencies group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [bitflags](https://github.com/bitflags/bitflags) | `2.11.1` | `2.12.1` | | [unicode-segmentation](https://github.com/unicode-rs/unicode-segmentation) | `1.13.2` | `1.13.3` | | [termina](https://github.com/helix-editor/termina) | `0.3.2` | `0.3.3` | | [log](https://github.com/rust-lang/log) | `0.4.30` | `0.4.32` | | [chrono](https://github.com/chronotope/chrono) | `0.4.44` | `0.4.45` | | [cc](https://github.com/rust-lang/cc-rs) | `1.2.62` | `1.2.63` | Updates `bitflags` from 2.11.1 to 2.12.1 - [Release notes](https://github.com/bitflags/bitflags/releases) - [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md) - [Commits](bitflags/bitflags@2.11.1...2.12.1) Updates `unicode-segmentation` from 1.13.2 to 1.13.3 - [Commits](https://github.com/unicode-rs/unicode-segmentation/commits) Updates `termina` from 0.3.2 to 0.3.3 - [Changelog](https://github.com/helix-editor/termina/blob/master/CHANGELOG.md) - [Commits](helix-editor/termina@v0.3.2...v0.3.3) Updates `log` from 0.4.30 to 0.4.32 - [Release notes](https://github.com/rust-lang/log/releases) - [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md) - [Commits](rust-lang/log@0.4.30...0.4.32) Updates `chrono` from 0.4.44 to 0.4.45 - [Release notes](https://github.com/chronotope/chrono/releases) - [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md) - [Commits](chronotope/chrono@v0.4.44...v0.4.45) Updates `cc` from 1.2.62 to 1.2.63 - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](rust-lang/cc-rs@cc-v1.2.62...cc-v1.2.63) --- updated-dependencies: - dependency-name: bitflags dependency-version: 2.12.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: rust-dependencies - dependency-name: unicode-segmentation dependency-version: 1.13.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: termina dependency-version: 0.3.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: log dependency-version: 0.4.32 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: chrono dependency-version: 0.4.45 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies - dependency-name: cc dependency-version: 1.2.63 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: rust-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
tree-house lets the inner @variable win otherwise, so a non-builtin call (`render widget`) highlighted as a variable instead of a call
This will be used by the cargo indent-check xtask to validate queries, similar to the existing indent tests in helix-core.
…mode behave exactly like Vim (usagi-flow#69) * Simplify evil_move_word_impl, fixing bugs The function `evil_move_word_impl` can be simplified, thereby fixing the following two bugs in the process: 1. In select mode, the key sequence `wb` would result in a selection, instead of being a no-op as in Vim. 2. The functions `evil_next_word_end` and `evil_next_long_word_end` (mapped to 'e' and 'E') in normal mode would make the cursor land on the space after the word, instead of the last character of the word. The only problem with this commit is that now the functions `evil_next_word_start` and `evil_next_long_word_start` (mapped to `w` and `W`) don't behave correctly anymore, making the cursor land on the space before the next word. We'll fix it in the next commit. * Fix `w` and `W` 1. Space before word: when the cursor is on the space before a word, and you hit `w`, Vim will move the cursor to this word, but evil-helix would skip the word and move to the _next_ word. 2. Punctuation: when the cursor is on the letter 'f' in "foo.bar qux", and you hit `w` twice, Vim will move the cursor to the letter 'b', but evil-helix would skip to the letter 'q'. This bug has the same underlying cause as the previous one, and the fix for both is to move the cursor one character to the left before doing the word move. 3. Regression: the previous commit, simplifying `evil_move_word_impl`, introduced a bug where `w` would make the cursor land on the space before the next word, instead of _on_ the next word. Fix it by moving the cursor one character to the right again after the word move. 4. Newlines: when the cursor is on the 'f' in "foo\nbar", and you hit `w`, Vim will move the cursor to the letter 'b' (so to the next line), but evil-helix would move the cursor onto the newline character. See the changes in `reached_target` for the fix. Fixes usagi-flow#44
The configuration option `default-yank-register` was added to Helix in helix-editor/helix#11430. Evil helix issue: usagi-flow#53.
* add `same_line` movement commands (#768) Commands added: * `move_same_line_char_left` * `move_same_line_char_right` * `extend_same_line_char_left` * `extend_same_line_char_right` * `append_mode_same_line` These new commands move cursors, while making them stay in the same line. So if a cursor would wrap around into another line, instead it won't move and stay at its current position. * add `anchored` movement commands Commands added: * `move_anchored_line_up` * `move_anchored_line_down` * `move_anchored_visual_line_up` * `move_anchored_visual_line_down` * `extend_anchored_line_up` * `extend_anchored_line_down` * `extend_anchored_visual_line_up` * `extend_anchored_visual_line_down` These new commands move cursors vertically. A cursor will move depending on its position: * If it is on a newline character of a non-empty line, the cursor will stay on newlines (i.e. on a line's last character). * If it is on a non-newline character of a non-empty line, the cursor will try to avoid newline characters. It will move normally, but if it would end up on a newline, instead it will be moved one position left of it (i.e. the line's second to last character). * If it is on the newline character of an empty line (that contains nothing except the newline character), the cursor will continue to move like before: If it stayed on newline before, it will continue to do so. Otherwise it will try to avoid them (except on empty lines). * feat(evil): make the new (vim-like) movement default * feat(evil): ensure selections are collapsed when appending --------- Co-authored-by: Pantos <pantos+github@akk.org>
* Squashed commit of the following: commit b5bf68129b56dc0178a61b7e22151decf82a25da Merge: d1517c6a 207829e Author: SoraTenshi <dream@neoncity.dev> Date: Thu May 25 19:53:22 2023 +0200 Merge branch 'master' into colored-indent-guides commit d1517c6a4b9b09609df03d984f4e890ec1998c26 Author: SoraTenshi <dream@neoncity.dev> Date: Sun Feb 12 22:18:41 2023 +0100 Update to new TextRenderer Docs fmt commit 7f47756b6d3d9119e1e426d7df48221d9019265c Author: Michael Davis <mcarsondavis@gmail.com> Date: Mon Jul 11 19:10:57 2022 -0500 Parse rainbow style array in themes This change adds a field to the schema of themes which takes a list of styles. rainbow = ["red", "orange", "yellow", { modifiers = ["reversed"] }] [palette] red = "#ff0000" orange = "#ffa500" yellow = "#fff000" Normal style rules apply for each element in `rainbows`: you can use definitions from the palette and the full fg/bg/modifiers notation. Themes written with `rainbow` keys are not backwards compatible. Parsing errors will be generated for older versions of Helix attempting to use themes with `rainbow` keys. A default rainbow is provided with base16 colors. This change is made with rainbow pair characters (parens, brackets, etc.) in mind but it could also be used for other rainbow cosmetic elements like rainbow indent-guides. * fix: avoid panic, properly set rainbow_length when loading theme * feat: define a rainbow palette for the catppuccin themes
* Add scaffolding for visual line mode Doesn't do anything yet. * Implement visual line mode
* feat(evil): map } and { to ]p and [p without selection
* feat(evil): add } and { vim movements
* feat(evil): add Vim-style * and # key search * fix(evil): match */# search by word boundaries Co-authored-by: Thomas Miedema <157521+thomie@users.noreply.github.com> * feat(evil): stop */# search if selection is empty If cursor is over an empty string, */# will do nothing except displaying a message, "No string under cursor". * fix(evil): */# is case insensitive if smart-case is true If search.smart-case is true then search is case insensitive (like Vim) otherwise it's case senstive * feat(evil): */# searches the nearest non-blank word If cursor on blank, */# searches for the next closest word in the line. * feat(evil): */# searches the nearest 'keyword' Here, a 'keyword' is a helix word that starts with a char, ch, that satisfies: ch.is_alphanumeric() || ch == '_' charachter feat: */# searches the nearest 'keyword' * fix(evil): */# ignore helix very last line * refactor(evil): remove redundant movement logic in */# Clarified that Helix 'word' is used as the equivalent of Vim's default 'keyword'. Also removed the unused Movement parameter. * fix(evil): */# searches only primary cursor/selection Multi cursor can cause different unwanted behavior, including panicking on Helix very last line (~). * perf(evil): */# test a single char under cursor * feat(evil): */# exit select mode like Vim * feat(evil): make */# search always case-insensitive Achieved by prepending The regex command (?i) to search * refactor(evil): format code * refactor(evil): comments --------- Co-authored-by: Thomas Miedema <157521+thomie@users.noreply.github.com> Co-authored-by: 兎の流れ <2804556+usagi-flow@users.noreply.github.com>
…(`amd64-linux-musl`) (usagi-flow#113) * feat(ci): add a release build target for `x86_64-unknown-linux-musl` (`amd64-linux-musl`) * refactor(ci): cleanup
If the cursor was not at the end of the selection range, but the range end was a newline, `append_mode_same_line` would cause the cursor to jump to a wrong position. See helix-editor/helix#10576 (comment) for details.
* refactor(evil): move the default evil keymap into a separate module * chore(evil): take over new upstream key bindings
…agi-flow#130)" (usagi-flow#132) This reverts commit 3e23281.
* fix command `append_mode_same_line` If the cursor was not at the end of the selection range, but the range end was a newline, `append_mode_same_line` would cause the cursor to jump to a wrong position. See helix-editor/helix#10576 (comment) for details. * generate docs for new movement commands
* feat(evil): introduce text objects * feat(evil): "surrounding char" text objects * feat(evil): paragraphs, quotes, backticks, tags * refactor(evil): cleanup, disable unused textobjects
…he very last line (usagi-flow#154)
Kruziikrel13
force-pushed
the
rebase/2026.07.19
branch
from
July 27, 2026 22:41
a38f5c6 to
3b81c70
Compare
Author
|
I've been using a fork that integrates this PR and some other changes without issues for the past few months. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebased on Helix from f6f3eb1
Initially just created for personal use. But if I find any regressions during my usage I'll update it here.
Can confirm it builds and runs without any error messages popping up.