Commit graph

901 commits

Author SHA1 Message Date
Yuki Okushi
96753eb0e0
Rollup merge of #103650 - notriddle:notriddle/line-anchors, r=GuillaumeGomez
rustdoc: change `.src-line-numbers > span` to `.src-line-numbers > a`

Example: https://notriddle.com/notriddle-rustdoc-demos/line-anchors/test_dingus/fn.test.html

This allows people to treat them like real links, such as right-click to copy URL, and makes the line numbers in a scraped example work at all, when before this commit was added, they had the clickable pointer cursor but did not actually do anything when clicked.
2022-11-13 16:41:44 +09:00
Michael Howell
cb3a04b6ef rustdoc: avoid excessive HTML generated in example sources 2022-11-12 09:23:09 -07:00
Michael Howell
05824cd7b7 rustdoc: fix HTML validation failure by escaping data-ty 2022-11-11 10:01:54 -07:00
Michael Howell
53e8b490d8 rustdoc: sort output to make it deterministic 2022-11-09 13:55:52 -07:00
Michael Howell
303653ef65 rustdoc: use javascript to layout notable traits popups
Fixes #102576
2022-11-07 22:45:24 -07:00
Michael Howell
8e0cac18cd rustdoc: refactor notable_traits_decl to just act on the type directly 2022-11-07 11:13:01 -07:00
Matthias Krüger
3eac639e1e
Rollup merge of #101702 - jsha:static-files2, r=notriddle,GuillaumeGomez
rustdoc: add hash to filename of toolchain files

All static files used by rustdoc are now stored in static.files/ and their filenames include a hash of their contents. Their filenames no longer include the contents of the --resource-suffix flag. This clarifies caching semantics. Anything in static.files can use Cache-Control: immutable because any updates will show up as a new URL.

Invocation-specific files like crates-NN.js, search-index-NN.js, and sidebar-items-NN.js still get the resource suffix.

This has a useful side effect: once toolchain files aren't affected by resource suffix, it will become possible for docs.rs to include crate version in the resource suffix. That should fix a caching issue with `/latest/` URLs: https://github.com/rust-lang/docs.rs/issues/1593. My goal is that it should be safe to serve all rustdoc JS, CSS, and fonts with infinite caching headers, even when new versions of a crate are uploaded in the same place as old versions.

The --disable-minification flag is removed because it would vary the output of static files based on invocation flags. Instead, for rustdoc development purposes it's preferable to symlink static files to a non-minified copy for quick iteration.

Example listing:

```
$ cd build/x86_64-unknown-linux-gnu/doc/ && find . | egrep 'js$|css$' | egrep -v 'sidebar-items|implementors' | sort
./crates1.65.0.js
./rust.css
./search-index1.65.0.js
./source-files1.65.0.js
./static.files/ayu-2bfd0af01c176fd5.css
./static.files/dark-95d11b5416841799.css
./static.files/light-c83a97e93a11f15a.css
./static.files/main-efc63f77fb116394.js
./static.files/normalize-76eba96aa4d2e634.css
./static.files/noscript-5bf457055038775c.css
./static.files/rustdoc-7a422337900fa894.css
./static.files/scrape-examples-3dd10048bcead3a4.js
./static.files/search-47f3c289722672cf.js
./static.files/settings-17b08337296ac774.js
./static.files/settings-3f95eacb845293c0.css
./static.files/source-script-215e9db86679192e.js
./static.files/storage-26d846fcae82ff09.js
```

Fixes #98413
2022-11-05 18:06:05 +01:00
Guillaume Gomez
df326946ed Remove rustdoc clean::Visibility type 2022-11-03 18:15:24 +01:00
Michael Howell
07bb2f701e rustdoc: change .src-line-numbers > span to .src-line-numbers > a
This allows people to treat them like real links, such as right-click to
copy URL, and makes the line numbers in a scraped example work at all,
when before this commit was added, they had the clickable pointer cursor
but did not actually do anything when clicked.
2022-10-31 13:59:52 -07:00
Guillaume Gomez
5515e2c2a1 Make rustdoc Item::visibility computed on-demand 2022-10-30 16:50:53 +01:00
Jacob Hoffman-Andrews
0b0bf10533 Generate static file hashes once 2022-10-29 12:48:08 -07:00
Jacob Hoffman-Andrews
bf25334066 Make --static-root-path point to static.files 2022-10-29 12:47:51 -07:00
Jacob Hoffman-Andrews
f9e1f6ffdf rustdoc: add hash to filename of toolchain files
All static files used by rustdoc are now stored in static.files/ and
include a hash of their contents. They no longer include the contents of
the --resource-suffix flag. This clarifies caching semantics. Anything
in static.files can use Cache-Control: immutable because any updates
will show up as a new URL.

Invocation-specific files like crates-NN.js, search-index-NN.js,
and sidebar-items-NN.js still get the resource suffix.

The --disable-minification flag is removed because it would vary the
output of static files based on invocation flags. Instead, for
rustdoc development purposes it's preferable to symlink static files
to a non-minified copy for quick iteration.
2022-10-29 12:47:48 -07:00
Guillaume Gomez
4fac361ea3 Fix z-indexes of code example feature and cleanup its CSS 2022-10-29 12:23:10 +02:00
Yuki Okushi
ec7ffdfbaf
Rollup merge of #103432 - jsha:box-is-not-notable, r=GuillaumeGomez
rustdoc: don't mark Box<T> as Iterator, Read, etc

Because Box<T> has pass-through implementations, rustdoc was giving it the "Notable Traits" treatment for Iterator, Read, Write, and Future, even when the type of T was unspecified.

Pin had the same problem, but just for Future.

Fixes #100320
2022-10-27 08:30:54 +09:00
Jacob Hoffman-Andrews
63d1a721f1 rustdoc: don't mark Box<T> as Iterator, Read, etc
Because Box<T> has pass-through implementations, rustdoc was giving it the
"Notable Traits" treatment for Iterator, Read, Write, and Future, even when the
type of T was unspecified.

Pin had the same problem, but just for Future.
2022-10-23 22:14:10 -07:00
Matthias Krüger
433f736b86
Rollup merge of #103211 - notriddle:notriddle/dot-location, r=GuillaumeGomez
rustdoc: remove class name `location` from sidebar sibling nav

Preview: https://notriddle.com/notriddle-rustdoc-demos/sidebar-location/std/vec/struct.Vec.html

This change tweaks the CSS to apply most of its styles to `.sidebar h2`, cleaning up a few redundant rules from `.mobile-topbar .location` and restoring useful navigation aids in mobile mode.

## Before

![location-before](https://user-images.githubusercontent.com/1593513/196521014-d8730830-c3a2-4ed7-9266-05454cd31e05.png)

## After

![location-after](https://user-images.githubusercontent.com/1593513/196521020-75ec1fa5-b3dc-4c5d-97b6-afccb5fbe00a.png)
2022-10-19 21:38:39 +02:00
Nicholas Nethercote
ca2561a07b Avoid cloning RenderOptions.
By moving `RenderOptions` out of `Option`, because the two structs' uses
are almost entirely separate.

The only complication is that `unstable_features` is needed in both
structs, but it's a tiny `Copy` type so its duplication seems fine.
2022-10-19 08:09:40 +11:00
Michael Howell
a01b88575e rustdoc: remove class name location from sidebar sibling nav
This change tweaks the CSS to apply most of its styles to `.sidebar h2`,
cleaning up a few redundant rules from `.mobile-topbar .location` and
restoring useful navigation aids in mobile mode.
2022-10-18 12:01:53 -07:00
Matthias Krüger
e1d72a485a
Rollup merge of #103091 - notriddle:notriddle/sidebar-title, r=GuillaumeGomez
rustdoc: remove unused HTML class `sidebar-title`

Since 6a5f8b1aef, this class is no longer styled.
2022-10-17 17:15:51 +02:00
Michael Howell
ae4ad9adb6 rustdoc: make the help button a link to a page
This allows you to open the help section in a new browser tab, which is a
pretty reasonable thing to want for a documentation page.
2022-10-15 11:38:42 -07:00
Michael Howell
e9b2922804 rustdoc: remove unused HTML class sidebar-title
Since 6a5f8b1aef, this class is no
longer styled.
2022-10-15 11:24:49 -07:00
Michael Howell
44f466cb08
Remove outdated comment 2022-10-10 17:53:27 -07:00
Michael Howell
b63b02f872 rustdoc: remove unneeded <div> wrapper from sidebar DOM
When this was added, the sidebar had a bit more complex style. It can be
removed, now.
2022-10-10 11:40:15 -07:00
Michael Howell
569384b99a rustdoc: remove weird <a href="#"> wrapper around unsafe triangle
This DOM cleanup changes the color of the triangle, from blue to black, but
since it's still a different color from the link it's next to, it should
still be noticeable.
2022-10-08 10:50:03 -07:00
Michael Howell
0997b28a89 rustdoc: remove unused HTML class="item-list"
Since 50f662e99e, there is no CSS or JS
targeting this class.
2022-10-06 10:55:33 -07:00
Michael Howell
3cb03cb342 rustdoc: remove unused CSS class in-band
Since a7c25b2957 removed `in-band` from code
headers, the only remaining uses of the `in-band` class are:

02cd79afb8/src/librustdoc/html/render/write_shared.rs (L520-L521)

02cd79afb8/src/librustdoc/html/templates/print_item.html (L2-L3)

02cd79afb8/src/librustdoc/html/render/context.rs (L637-L638)

02cd79afb8/src/librustdoc/html/render/mod.rs (L368-L369)

02cd79afb8/src/librustdoc/html/render/mod.rs (L401-L402)

02cd79afb8/src/librustdoc/html/static/js/main.js (L525)

Since all of these uses are nested below `h1.fqn`, we can get rid of it,
and the support code that was used for when `in-band` was part of item
rendering.
2022-10-05 16:56:07 -07:00
Michael Howell
f145f283f7 rustdoc: add missing margin to no-docblock trait items
Fixes another regression caused by 8846c0853d,
this time fixing the appearance of methods that have no docblock (we didn't
notice this one because libstd docs *always* have docblocks).

See how it looks at https://doc.rust-lang.org/nightly/nightly-rustc/rustdoc/clean/types/trait.AttributesExt.html
2022-09-30 10:45:19 -07:00
Michael Howell
8a73397a62
Rollup merge of #102447 - notriddle:notriddle/method-toggle, r=jsha
rustdoc: add method spacing to trait methods

More cleanup for 8846c0853d, this time in trait layouts when things are collapsed.

This PR makes two changes to the appearance of trait pages:

* It adds the `method-toggle` class to method toggles on traits, making the DOM more consistent with type pages (which already have this class).

  ## Before

  ![image](https://user-images.githubusercontent.com/1593513/192914353-ed17e1eb-df1d-480b-9998-3b5e8283b0ee.png)

  ## After

  ![image](https://user-images.githubusercontent.com/1593513/192914570-bdd0f2e1-5254-4e2e-9576-a797b82b3b3b.png)

* It adds a bottom margin to docblocks nested directly in the implementors list, giving it a similar appearance to if it was nested within a toggle.

  ## Before

  ![image](https://user-images.githubusercontent.com/1593513/192914503-1c3f39d5-690f-44ec-8f11-385302477d04.png)

  ## After

  ![image](https://user-images.githubusercontent.com/1593513/192914702-cbce4b3b-5cc6-49dc-b7f8-73be9e76791c.png)
2022-09-29 10:15:19 -07:00
Michael Howell
0b9b4b7068 rustdoc: add method spacing to trait methods
More cleanup for 8846c0853d, this time in trait
layouts when things are collapsed.
2022-09-28 21:11:40 -07:00
Michael Howell
a63a03dc54 rustdoc: remove clean::TraitWithExtraInfo
Instead, it gathers the extra info later, when it's actually requested.
2022-09-27 12:27:04 -07:00
Michael Howell
a7c25b2957 rustdoc: clean up .out-of-band/.in-band CSS
* Remove the `float: right` fallback from the main header, which hasn't
  been needed since IE11 support was dropped.

* Remove `in-band` from low-level headers, which hasn't been needed since
  `.rightside` switched to `float: right` in
  593d6d1cb1

* Remove unreachable `.in-band > code, .in-band > .code-header` CSS, since
  the `in-band` class was attached to the `code-header` itself, not nested
  directly below it.

* Use `rem` instead of `em` for code header margins.

* This results in a slight change in spacing around impls and item-info,
  but since it makes it more consistent with the way methods are presented,
  it's probably fine.
2022-09-25 13:48:17 -07:00
Matthias Krüger
6d6d89b08b
Rollup merge of #102158 - notriddle:notriddle/stab-p, r=GuillaumeGomez
rustdoc: clean up CSS/DOM for deprecation warnings

Preview: https://notriddle.com/notriddle-rustdoc-test/stab-p/std/macro.try.html
2022-09-23 15:40:23 +02:00
Michael Howell
dedf6fcde4 rustdoc: clean up CSS/DOM for deprecation warnings 2022-09-22 14:54:38 -07:00
Guillaume Gomez
d3f97a331c Improve some AllTypes fields name 2022-09-22 13:08:59 +02:00
Yuki Okushi
9cbae7dfe5
Rollup merge of #102054 - GuillaumeGomez:sidebar-all-page, r=notriddle
Unify "all items" page's sidebar with other pages

Currently, the "all types" page's sidebar doesn't list the different categories of type available. This PR fixes it.

Before:

![Screenshot from 2022-09-20 17-11-15](https://user-images.githubusercontent.com/3050060/191296348-95d8771d-a887-432e-96bd-d5284d87d743.png)

After:

![Screenshot from 2022-09-20 17-11-09](https://user-images.githubusercontent.com/3050060/191296344-8e7318a3-eb51-4037-ae94-7ae2115363ce.png)

r? `@notriddle`
2022-09-22 09:03:54 +09:00
Guillaume Gomez
27a420f251 Unify generation of section on "All items" page with all other pages 2022-09-20 23:23:03 +02:00
Guillaume Gomez
5343dc7c99 Generate sidebar elements for the "All items" page 2022-09-20 17:10:21 +02:00
Michael Howell
9457380ac9 rustdoc: remove docblock class from item-decl
This class was originally added in 73b97c7e7c
to support hiding and showing the item, because `main.js` went through all
`docblock` elements in the DOM and added toggles to them.

73b97c7e7c/src/librustdoc/html/static/main.js (L1856-L1867)

The `item-decl` is no longer auto-hidden since
c96f86de30 removed it.

`item-decl` used to be called `type-decl`: that name was changed in
8b7a2dd462.

The `docblock` class is no longer used for implementing toggles, since
rustdoc switched to using `<details>` elements.
2022-09-19 10:52:51 -07:00
Michael Howell
b72de9be74 rustdoc: clean up CSS for All Items and All Crates lists
This reduces the amount of CSS, and makes these two pages more consistent
(which, necessarily, means changing them a bit).
2022-09-16 13:59:45 -07:00
Michael Howell
ef24747703 rustdoc: use more precise URLs for jump-to-definition links
As an example, this cuts down
<https://doc.rust-lang.org/nightly/nightly-rustc/src/rustc_middle/ty/mod.rs.html>
by about 11%.

    $ du -h new_mod.rs.html old_mod.rs.html
    296K	new_mod.rs.html
    332K	old_mod.rs.html
2022-09-15 13:03:04 -07:00
bors
2dc703fd6e Auto merge of #101228 - nnethercote:simplify-hir-PathSegment, r=petrochenkov
Simplify `hir::PathSegment`

r? `@petrochenkov`
2022-09-05 13:36:54 +00:00
Dylan DPC
e4534fe6fe
Rollup merge of #101391 - matthiaskrgr:perf0309, r=oli-obk
more clippy::perf fixes
2022-09-05 14:15:52 +05:30
Nicholas Nethercote
bb0ae3c446 Make hir::PathSegment::hir_id non-optional. 2022-09-05 14:20:25 +10:00
Nixon Enraght-Moony
b76a012be1 Rustdoc-Json: Add enum discriminant 2022-09-03 22:15:26 +01:00
Matthias Krüger
6f4726541e more clippy::perf fixes 2022-09-03 22:57:22 +02:00
Matthias Krüger
21c8447d78
Rollup merge of #101245 - GuillaumeGomez:remove-unneeded-where-whitespace, r=notriddle
Remove unneeded where whitespace

It fixes these two bugs:

![Screenshot from 2022-08-31 18-14-40](https://user-images.githubusercontent.com/3050060/187727950-94657419-abfa-454c-9d27-004280fbcb45.png)
![Screenshot from 2022-08-31 18-14-49](https://user-images.githubusercontent.com/3050060/187727956-21d1b39d-62d7-4e7b-8f6f-631ceda67a19.png)

It's a relic from a very old time (this commit: bfd01b7f40).

You can test the result [here](https://rustdoc.crud.net/imperio/remove-unneeded-where-whitespace/lib2/struct.WhereWhitespace.html).

cc `````````@jsha`````````
r? `````````@notriddle`````````
2022-09-01 21:37:11 +02:00
Guillaume Gomez
803e35abf7 Remove unneeded extra whitespace before where clause 2022-08-31 18:13:39 +02:00
Ralf Jung
8ed9ac658a
Rollup merge of #101204 - aDotInTheVoid:async-resugar-in-clean, r=GuillaumeGomez
rustdoc: Resugar async fn return type in `clean`, not `html`

This way it also happens for json output.

Fixes #101199

r? ``@GuillaumeGomez``
2022-08-31 14:29:54 +02:00
Guillaume Gomez
900cda2043 Print only blanket implementations on reference primitive type 2022-08-31 11:22:14 +02:00