Commit Graph

6633 Commits (master)

Author SHA1 Message Date
Binh Tran 8d58f6ce8d
fix(highlights/ungrammar): improve UX (#13607) 2025-05-25 08:47:10 -05:00
Michael Davis 702a961517
Fix `try_restore_indent` on non-LF documents
On Windows for example the behavior of this function typically diverges
from the usual behavior on Unix. Instead of checking that the inserted
string starts with `'\n'` (untrue for for CRLF line endings) we need to
check that the first grapheme cluster in the string is a line ending.
(All line endings are single grapheme clusters.)
2025-05-24 11:42:29 -04:00
Nik Revenco 1023e8f964
feat: highlight rust string interpolation macros that use `format_args!` (#13533)
Co-authored-by: Nik Revenco <154856872+NikitaRevenco@users.noreply.github.com>
2025-05-24 10:02:32 -05:00
Saheed Adeleye 223ceec10a
Add an `--insensitive`/`-i` flag for `:sort` (#13560)
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2025-05-24 09:55:48 -05:00
Christian Fredrik Johnsen cb1ec1b27e fix(tutor): replace unexisting and non existing with nonexistent
Sounds more natural to me.
Just a spelling change.
2025-05-24 10:29:46 -04:00
Christian Fredrik Johnsen 4098151591 fix(tutor): fix typos in section 11.2
Minor grammar fix and add missing word.
2025-05-24 10:29:46 -04:00
Christian Fredrik Johnsen 1edf98262c fix(tutor): recommend `e` instead of `w` for selecting word
I was doing the tutorial to learn Helix, and it's more sensible to use
`e` than `w`.

If you're using `w`, you will need to add an extra space.
Example, assuming cursor is at |:

This sentence has incorrect words |behind it.

If you use `wc`, then you will get:
This sentence has incorrect words |it.

while `ec` will give you
This sentence has incorrect words | it.

Which enables you to drop removing and adding a space for no reason.
2025-05-24 10:29:46 -04:00
Ricardo Fernández Serrata 237d875e7d
docs(building-from-source): suggest optimized install cmd as alternative (#13553) 2025-05-24 09:24:09 -05:00
Kris Warner b70b8df916
Add matching cursor to nord theme (#13574) 2025-05-24 09:22:23 -05:00
Binh Tran ae0dd313bd
fix(highlights/ini): make consistency with toml (#13589) 2025-05-22 08:52:51 -05:00
Jérôme Tamba 76029e5840
health: Use lsp name in output wherever possible (#13573)
Also match the DAP/Formatter output style to the LSP style
2025-05-21 09:38:16 -05:00
dependabot[bot] 3a6c9747b8
build(deps): bump the rust-dependencies group with 3 updates (#13576)
Bumps the rust-dependencies group with 3 updates: [bitflags](https://github.com/bitflags/bitflags), [hashbrown](https://github.com/rust-lang/hashbrown) and [cc](https://github.com/rust-lang/cc-rs).


Updates `bitflags` from 2.9.0 to 2.9.1
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.9.0...2.9.1)

Updates `hashbrown` from 0.15.2 to 0.15.3
- [Release notes](https://github.com/rust-lang/hashbrown/releases)
- [Changelog](https://github.com/rust-lang/hashbrown/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/hashbrown/commits/v0.15.3)

Updates `cc` from 1.2.22 to 1.2.23
- [Release notes](https://github.com/rust-lang/cc-rs/releases)
- [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.22...cc-v1.2.23)

---
updated-dependencies:
- dependency-name: bitflags
  dependency-version: 2.9.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-dependencies
- dependency-name: hashbrown
  dependency-version: 0.15.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-dependencies
- dependency-name: cc
  dependency-version: 1.2.23
  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>
2025-05-20 21:03:55 +09:00
CalebLarsen ebf96bd469
Updated python/locals.scm to label `self` and `cls` as `variable.buitin` (#13552) 2025-05-17 09:43:21 -05:00
Michael Davis 5a1dcc2429
syntax: Reset query cursor byte range for textobjects
`InactiveQueryCursor::new` might reuse a query cursor from a
thread-local cache if one is available, rather than create a new cursor.
Currently tree-house does not reset cached cursors back to defaults
(i.e. byte range and match limit). For now we can patch around this here
but eventually this should be fixed in `tree-house` upstream. Then this
patch can be reverted.

In practice this caused textobjects like `]f` to get "stuck" trying to
move to the next function if it was out of the current view. This is
because the highlight query cursor sets the range of the cursor to the
current viewport. We can reset the byte range to defaults to fix the
textobject behavior.
2025-05-17 10:30:30 -04:00
Michael Davis be1bf2f909
CI: Set a timeout for the test suite workflow
The integration tests have recently become a bit flaky in that
individual tests can seem to hang forever. This needs further
investigation. In the meantime we should limit the total allowed time
for the test workflow to something reasonably low. The default timeout
is a very high 360min.
2025-05-17 09:16:14 -04:00
Michael Davis 05ae617e1c
queries: Reorder Slint and HTML injections in Rust
This fixes injections of Slint and HTML in Rust macros. These patterns
must be moved after the generic `(macro_invocation (token_tree))`
pattern since they are more specific, and later patterns now take
priority.

See <https://redirect.github.com/helix-editor/helix/pull/12972#issuecomment-2888300442>.
2025-05-17 08:48:01 -04:00
CalebLarsen e606652a96
Removed unnecessary apostrophe in keymap.md (#13551) 2025-05-17 07:43:27 -05:00
CalebLarsen df02ef6a99
Update tree-sitter-haskell (#13475) 2025-05-17 07:42:52 -05:00
Michael Davis 3ceae88c3a
Use 'ui.text' as a base style for the syntax highlighter
This fixes a regression from the refactor of the highlighters when
switching to tree-house. The old `StyleIter` used `renderer.text_style`
as the base style rather than `Style::default()` for syntax highlights.
The result was that any text not captured by a syntax highlight query
was styled with no foreground or background, defaulting to the
terminal's foreground/background. This could cause text in markdown
files to look off-colored depending on your terminal configuration.
(Though you wouldn't notice if your 'ui.text' theming matches your
terminal's theming.)
2025-05-16 10:52:47 -04:00
Nguyễn Hồng Quân b4e51ef895
More glob to detect gitattributes file (#13540) 2025-05-16 09:32:29 -05:00
Rock Boynton f157a918a3
Show the primary selection index on statusline (#12326)
Co-authored-by: Rock Boynton <rboynton@anduril.com>
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2025-05-15 07:53:02 -05:00
Michael Davis a7c3a43069
Bump tree-house-bindings to v0.1.1 to fix IllumOS build
See <https://redirect.github.com/helix-editor/tree-house/issues/8>.
2025-05-15 08:33:10 -04:00
Michael Davis 702b1d0a0f
statusline: Avoid unnecessary allocations for `&'static str` spans
Previously the statusline `write` function only accepted a string
and optional Style, so all rendering functions converted text to
strings. Some elements write spans with `&'static str`s, however, making
this unnecessary since `Span<'a>` is a wrapper around `Cow<'a, str>` and
style, and a `Span<'static>` would outlive all required lifetimes.

Moreover many elements could produce `Span<'a>` according to the
lifetime in `RenderContext` in the future, potentially re-borrowing from
the Editor borrow, so this change could save allocations for many
file-type elements (with more future changes). This is not explored in
this patch since the statusline functions currently add bespoke padding
per-element, but with a future refactor to make spacing consistent this
could be possible.

This change refactors the write function to accept a `Span<'a>` and
rewrites some related code to fit the codebase better (preferring `for`
to iterator's `for_each` for example). The new code is more complicated
lifetime-wise but avoids allocations in these cases:

* spacer for mode name when a pane is not focused
* LSP spinner frames
* '●' (workspace) diagnostic indicators
* " W " workspace diagnostic prefix
* file modification indicators
* read-only indicators
* spacer element

... and opens the door to avoid allocation for file name elements in the
future.
2025-05-15 08:33:02 -04:00
Michael Davis b0528bbac4
statusline: Avoid showing only 'W' in workspace-diagnostics element
If you configure a subset of severities to show in the workspace
diagnostics statusline element you can see the 'W' (and surrounding
space) without any diagnostic indicators. This is the case by default
as it's configured to show warnings and errors only - if you have only
hints in your workspace like if you open `application.rs` in Helix for
example then you would see the 'W' and no indicators.

This change checks that any of the configured diagnostics are non-zero
and bails early if there are none.
2025-05-14 17:33:21 -04:00
Michael Davis 09bc67ad6d
syntax: Fix language detection by shebang
The switch to tree-house accidentally dropped some shebang parsing code
from the loader's function to detect by shebang. This change restores
that. The new code is slightly different as it's using a `regex_cursor`
regex on the Rope rather than eagerly converting the text to a
`Cow<str>` and running a regular regex across it.
2025-05-14 16:30:29 -04:00
zoey 6be38642f4
Add nyxvamp themes (#12185) 2025-05-14 08:52:00 -05:00
Michael Davis f46222ced3
Revert "feat: Highlight Rust String interpolation macros"
This reverts commit 9bb80a74e1.
2025-05-13 19:52:48 -04:00
Nikita Revenco 9bb80a74e1
feat: Highlight Rust String interpolation macros
Fixes #5845
2025-05-13 19:31:42 -04:00
Michael Davis be1cf090c3
queries: Inject markdown into Rust doc comments
Co-authored-by: Nik Revenco <154856872+nik-rev@users.noreply.github.com>
2025-05-13 19:01:10 -04:00
Michael Davis a3b64b6da2
queries: Rewrite all locals 2025-05-13 19:01:10 -04:00
Michael Davis aea53523dd
Replace tree-sitter with tree-house 2025-05-13 18:43:43 -04:00
Michael Davis 24e3ccc31b
Add the `syn_loader` to `Document`
This type also exists on `Editor`. This change brings it to the
`Document` as well because the replacement for `Syntax` in the child
commits will eliminate `Syntax`'s copy of `syn_loader`. `Syntax` will
also be responsible for returning the highlighter and query iterators
(which will borrow the loader), so the loader must be separated from
that type.

In the long run, when we make a larger refactor to have
`Document::apply` be a function of the `Editor` instead of the
`Document`, we will be able to drop this field on `Document` - it is
currently only necessary for `Document::apply`. Once we make that
refactor, we will be able to eliminate the surrounding `Arc` in
`Arc<ArcSwap<syntax::Loader>>` and use the `ArcSwap` directly instead.
2025-05-13 18:30:21 -04:00
Michael Davis c94fde8d1c
syntax: Move config types to a separate module 2025-05-13 18:30:21 -04:00
Jengamon 84e95d35ee
Add `sld` to Scheme file type extensions (#13528) 2025-05-13 17:21:51 -05:00
dependabot[bot] 447a6d3299
build(deps): bump the rust-dependencies group with 6 updates (#13518)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 08:26:46 -05:00
RoloEdits 47547e94ad
perf(statusline): reorder match and specify `u32` for `workspace_diagnostics` (#13512) 2025-05-12 08:27:04 -05:00
Aitor 908b9edf28
add support for tree-sitter custom template languages on vue (#13511)
Co-authored-by: TheSylex <TheSylex@users.noreply.github.com>
2025-05-12 08:23:59 -05:00
Bekobi 63a1a94d92
Changed rust-analyzer configuration to use server-side file watching (#13432)
Co-authored-by: Bekobi <coding@bekobi.eu>
2025-05-10 14:48:46 -04:00
omahs bfd2c72715
fix: typos (#13505) 2025-05-10 10:36:17 -05:00
Bryce Berger 4c8600967c
verilog: add highlighting for the "var" keyword (#13493) 2025-05-10 08:08:34 -05:00
Jules Wiriath 313ef30f64
bump: tree-sitter-cpp (#13504) 2025-05-10 08:00:05 -05:00
bloxx12 9bb370c91e
chore: clean up grammars.nix (#13506) 2025-05-10 07:58:48 -05:00
Bloxx12 cb1ecc9128 flake: checks: build the release package 2025-05-09 11:57:48 -04:00
Bloxx12 7a6bc53528 default.nix: remove ellipsis in argument attrset 2025-05-09 11:57:48 -04:00
Bloxx12 60a03a35c6 flake: drop flake-utils dependency 2025-05-09 11:57:48 -04:00
David Else e4ef096945
Update Bash highlights (#13477) 2025-05-08 08:22:14 -05:00
Michael Davis 9e7a6a5dbd
xtask: Allow passing languages and themes to check
This is for convenience when testing a few languages or themes, for
example while updating a language's parser and queries. query-check in
particular can take a while since parser initialization and query
analysis can each take some time and there are now many many languages.
Specifying the exact language makes the feedback loop much faster.
2025-05-08 09:04:22 -04:00
Nik Revenco 1460a086df
feat: add wgsl built-in functions to `@function.builtin` (#13479)
Co-authored-by: Nik Revenco <154856872+NikitaRevenco@users.noreply.github.com>
2025-05-08 07:56:36 -05:00
Sean Russell 51d3b15557
Update tree-sitter-v (#13469)
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
2025-05-07 17:38:07 -05:00
Remo Senekowitsch e53462c78c
verilog: separate highlighting of keyword operators (#13473) 2025-05-06 08:24:14 -05:00