Closed xFrednet closed 4 months ago
I would be totally fine with having this feature and definitely see a use-case.
I'm happy to review any PR adding this. the interesting files are:
I'll look into this :D
@rustbot claim
there is a current big PR (#2292) that will change template rendering, not sure if you want to wait with your changes until it lands, or base your work ontop of it.
In that case, I'll wait a bit. Thank you for the early notice :D
I've made some decent progress. My next step is now to highlight the line numbers. I found the implementation of rustdoc which seems to work well. Can I copy and adapt it, as long as I add a comment mentioning where it comes from? I'm asking regarding the license etc.
IANAL, but IMO you can just copy & adapt the code, even without attribution.
@GuillaumeGomez what do you think?
( also about the piece of code )
Yes it's completely fine. Just need to be careful that the line height of the line number is aligned to the code line.
While generating some links, I noticed that source files under
https://docs.rs/crate/{crate}/{version}/source/src/{file}
don't support line labels. This is opposed to the sources underhttps://docs.rs/{crate}/{version}/src/{krate}/{file}.html#{line}
that do.Usually, I'd just use the second link with line label support for everything. However, rustdoc can sometimes remap paths, for example if a path is set in
Cargo.toml
. This means that the second link doesn't always work. At the end of the issue, I'll give a detailed example of this.For my use case, the best solution would be to add line numbers and line labels to the sources under
crate/{crate}/{version}/source/
.I'd be happy to give the implementation a shot, if this is something that would be accepted and I get some hints where to start :dagger:
Specific example:
We run Clippy in our CI and collect lint emissions. These diagnostics have paths as seen by rustc. It would, for example, look like this:
./src/lib.rs:15
. I now want to take these file names and link to docs.rs to help us investigate the lint emissions. For most crates, the link is simply constructed like this:https://docs.rs/{krate}/{version}/src/{krate}/{file}.html#{line}
And this works for most crates, expect crates that remap their path in
Cargo.toml
, like this (Taken from rust-lang/cargo):The lint emission then has the path
./src/cargo/lib.rs
but the documentation generated by rustdoc removes thecargo
from the path. So using the previous link template generates:This doesn't work due to the
cargo/cargo
. The correct link with the remapped path is:This remapping only happens for rustdoc and not the source files under
crate/
so if those would support line labels, it would be a simple way to always use the same link template.