Commit Graph

6572 Commits (c312f0baff1bee98396d06d73fc241d2034d36e5)

Author SHA1 Message Date
chtenb c312f0baff Add whole word selection commands 2025-05-19 11:27:53 +02: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
dependabot[bot] fb45017a26
build(deps): bump the rust-dependencies group with 3 updates (#13474)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 08:16:18 -05:00
Rotem Horesh cbac427383
feat: add a tree-sitter grammar and highlights for dunst's config (#13458) 2025-05-05 09:08:33 -05:00
CalebLarsen 46cb177792
feat: add basic Slang support (#13449)
Co-authored-by: uncenter <uncenter@uncenter.dev>
2025-05-05 09:03:40 -05:00
Spenser Black 4784650ccf
Add support for Pug language (#13435) 2025-05-05 08:57:00 -05:00
uncenter ece12dd74d
docs(guides/textobject): list `parameter.around` capture (#13470) 2025-05-05 09:20:57 -04:00
Spenser Black 72932a391b
Support `.git-blame-ignore-revs` (#13460) 2025-05-04 08:52:28 -05:00
RoloEdits 4c630c148a
feat(commands): add `selection` variable expansion (#13467) 2025-05-04 08:43:09 -05:00
RoloEdits ac3c6ebaff
feat(commands): add `language` variable expansion (#13466) 2025-05-04 08:35:58 -05:00
Michael Davis 12139a4c30
queries: Fix `comment.unused` highlights in Erlang
* Other languages use `comment.unused` instead of `comment.discard`.
* Fix the precedence of discarded variables - previously the parameter
  highlight was higher precedence so discarded variables in the
  parameter list were highlighted as parameters instead of
  `comment.unused`.
2025-05-02 09:46:46 -04:00
RoloEdits aa3fad84ef
build(grammar): remove explicit opt out of optimizations for MSVC (#13451)
`cc` should pick correct defaults when `debug` or `release`.
2025-05-01 22:54:45 +02:00
Daniel Bowring 69b9db2fbb
Add goto_column and extend_to_column commands (#13440) 2025-05-01 09:12:30 -05:00