This patch fixes an inprecise `@string.documentation` query introduced
in https://github.com/nvim-treesitter/nvim-treesitter/pull/7391.
Specifically, the pattern `(string_literal) . (identifier)` matches also
for example `"hello"` in
```julia
foo("hello", world)
@info "hello" world
```
To fix this, this patch limits the pattern to top-level statements.
This patch adds `$` to the `@punctuation.special` capture group within
`(string_interpolation)` (e.g. `"hello $name"`) and
`(interpolation_expression)` (e.g. `:(hello $name)`) nodes.
This patch captures `::` as `@operator` within
`(unary_typed_expression)` and `(typed_expression)`. These should be the
only two cases that the parser can emit when encountering `::` in the
source, but as a fallback it is still captured as `@punctuation` in all
other cases.
The reasons for capturing `::` as an operator are i) the close relation
with the other type-operators `<:` and `>:` and ii) the fact that it is
treated as an operator by the Julia parser, just like `<:` and `>:`.
This patch fixes two issues related to `@type` capturing (split out from
https://github.com/nvim-treesitter/nvim-treesitter/pull/7392):
- Capture the RHS of `<:` and `>:` as `@type` in `(unary_expression)`s
similarly to what is already done for `(binary_expression)`s with
these operators.
- Capture children of `(curly_expression)`s inside of
`(where_expression)`s as `@type` similarly how they are handled in
`(parametrized_type_expression)`.
This patch enables `@string.documentation` capturing, and markdown
injection, for strings attached to `(call_expression)` and
`(identifier)` nodes. For example
```julia
"docs"
foo(::Int, ::Float64)
"docs"
bar
```
Add support for capturing function call after a broadcasted pipe.
Currently works for unbroadcasted pipe.
There might be a better more complicated way to do this, since this will capture the broadcasting dot as part of the `@_pipe` capture.
* feat(julia): added missing String and AbstractString builtin types
* feat(juia): added all public built-in types in Core and Base
* feat(julia): removed private types from built-in type list
- Update patterns for type definitions:
The grammar was updated to parse `abstract type` and `primitive type`
as a single token.
- Update @symbol capture to highlight quoted operators as symbols.
- Add pattern to highlight adjoint operator.
- Update patterns and captures for:
- "keyword" operators (in, isa, where)
- type operators (<:, >:)
- Parametrized types.
After https://github.com/nvim-treesitter/nvim-treesitter/issues/470,
we decided to use `@conditional` for ternary operator instead of
operator despite `@conditional` is documented for keywords only.
A sub-scoping can make it easier for people to highlight this operator
group differently.
Also unify the usage of `@conditional...` across languages.
This patch removes the highlight query for constant identifiers based on
capitalization. This led to inconsistent highlighting since e.g. `AA`
would be a regular identifier, but `AAA` a constant. It is indeed true
that some constants are uppercase only identifiers, but there are also
constants which doesn't follow this pattern. Since there are no rules
about this it seems better to not try to guess.
Add queries for:
- Character literals
- Escape sequences
- NaNs, Infs and missing
Remove highlight to identifiers in coefficient expressions.
Update other literals to match grammar.