[SYNTAX] Doc comments in impls aren't being highlighted
Describe what doesn't look right
Doc comments inside impl blocks aren't highlighted. Doc comments at the top level work, and doc comments inside of functions, but they just don't work in impl blocks.
Screenshots

How would you expect the features to be highlighted? It should highlight the same way doc comments do in other contexts.
Sample code Please provide sample code with the language feature so we can use it for testing definitions.
/// Some struct here.
///
/// Side note: Intra-doc links like [`String`] don't highlight.
struct Foo {}
impl Foo {
/// Creates a new `Foo`.
///
/// See how this isn't highlighted.
pub fn new() -> Self {
Foo {}
}
}
Thank you so much for all this detail!
That should be enough for me to fix highlighting in impl blocks, but I noticed your "Side note" in the doc comment. Can you describe how you'd expect intra-doc links to be highlighted?
Intra-doc links are handled in VSCode via rust-analyzer's semantic token modifiers. I don't know the exact details, but this is part of LSP. It's not 100% accurate, right now it handles structs and free functions but not methods (or external links), but I think that's a limitation of rust-analyzer that will be fixed later.
As an example, here's a paragraph from tracing-subscriber:
//! In addition, the [`Filter`] trait defines an interface for filtering what
//! spans and events are recorded by a particular layer. This allows different
//! [`Layer`]s to handle separate subsets of the trace data emitted by a
//! program. See the [documentation on per-layer filtering][plf] for more
//! information on using [`Filter`]s.
Here's how it shows up in Nova:
And here's what I see in VSCode:
And here's VSCode's token info for one of the intra-doc links:
Notice the semantic token info which overrides the textmate scope info. Semantic token types are provided everywhere, e.g. the non-link parts of the comment also use a semantic token modifiers to identify it as a documentation comment (the textmate scope just identifies it as a comment.line.double-slash.rust).
Thank you SO MUCH for your very detailed response, and I apologize that I wasn't able to provide an adequate response in the last few weeks.
As you noted, semantic tokens are a LSP feature, and more specifically a feature of version 3.16 of the LSP. Nova only supports "a subset of version 3.15 of the LSP specification" which is the previous version, and as you probably noticed their implementation is imperfect – improper ranges crash Rust Analyzer, Code Actions don't work, etc. Unfortunately, the Nova language client is a bit of a black box, and I can control very little of the integration.
Where I do have some control is the equivalent of the "TextMate scopes" which I define for Rust syntax. There are a few instances where I defined a scope that is not entirely semantic – e.g., doc comments essentially have a string.docstring scope, and macros have a markup scope – so that I could be sure they would have discrete highlighting. Most Nova themes define colors for a list of generic scopes, and there's not currently a way customize themes for language-specific features.