Commit graph

611 commits

Author SHA1 Message Date
Michael Howell
ac0bb74adb rustdoc: merge scrape-help CSS 2022-12-30 10:43:06 -07:00
bors
808be91da0 Auto merge of #106262 - GuillaumeGomez:migrate-more-scraped-examples-css, r=notriddle
Migrate more scraped examples CSS rules to CSS variables

It's based on https://github.com/rust-lang/rust/pull/106218 so it will need to wait for it to be merged first.

r? `@notriddle`
2022-12-30 03:58:49 +00:00
bors
ad8ae0504c Auto merge of #106266 - matthiaskrgr:rollup-cxrdbzy, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #104531 (Provide a better error and a suggestion for `Fn` traits with lifetime params)
 - #105899 (`./x doc library --open` opens `std`)
 - #106190 (Account for multiple multiline spans with empty padding)
 - #106202 (Trim more paths in obligation types)
 - #106234 (rustdoc: simplify settings, help, and copy button CSS by not reusing)
 - #106236 (docs/test: add docs and a UI test for `E0514` and `E0519`)
 - #106259 (Update Clippy)
 - #106260 (Fix index out of bounds issues in rustdoc)
 - #106263 (Formatter should not try to format non-Rust files)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-12-29 19:40:06 +00:00
Matthias Krüger
2c4560cb12
Rollup merge of #106218 - GuillaumeGomez:migrate-css-var-scraped-examples, r=notriddle
Migrate css var scraped examples

r? ``@notriddle``
2022-12-29 13:16:03 +01:00
Matthias Krüger
bdf37b7bbb
Rollup merge of #106217 - notriddle:notriddle/tooltip-center, r=GuillaumeGomez
rustdoc: remove unnecessary `.tooltip::after { text-align: center }`

This doesn't have an effect, since these tooltip are only one line anyway.
2022-12-29 13:16:03 +01:00
Guillaume Gomez
5494da23af Migrate more scraped examples CSS rules to CSS variables 2022-12-29 12:10:24 +01:00
Michael Howell
fefe309f8c rustdoc: simplify settings, help, and copy button CSS by not reusing
Since there remains only one common CSS rule shared between them, there's
no point to it: the block and selector costs more than the single `width`
rule saves.
2022-12-28 16:04:57 -07:00
Michael Howell
9221e43313 rustdoc: remove unnecessary .tooltip::after { text-align: center }
This doesn't have an effect, since these tooltip are only one line anyway.
2022-12-28 10:48:15 -07:00
Guillaume Gomez
c3eb202a61 Migrate scraped examples higlight CSS to variables 2022-12-28 17:14:17 +01:00
Michael Howell
5c0b60f967 rustdoc: combine common sidebar background color CSS rules 2022-12-27 14:15:49 -07:00
Michael Howell
4ee16b8aea rustdoc: clean up src sidebar toggle position CSS
This PR makes the `464px` version of `#src-sidebar-toggle` the same as the
`700px` version, with the button lower on the page so that it doesn't cover
up the search form, and removes the left margin to make space for it.
2022-12-25 22:39:31 -07:00
bors
46160e6fa9 Auto merge of #106110 - GuillaumeGomez:toggle-line-background, r=notriddle
Migrate toggle-line-inner background to CSS variable

r? `@notriddle`
2022-12-24 20:23:45 +00:00
Guillaume Gomez
518ca9c16f Migrate toggle-line-inner background to CSS variable 2022-12-24 08:28:59 +01:00
Michael Howell
f451717157 rustdoc: make line number CSS for doc comment and scraped the same
Discussed in
https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/Line.20number.20styling
2022-12-23 22:55:04 -07:00
Matthias Krüger
2ace0c6402
Rollup merge of #106093 - notriddle:notriddle/docblock-short-overflow, r=GuillaumeGomez
rustdoc: remove no-op CSS from `.docblock-short`

The rules `overflow:hidden` and `text-overflow:ellipses` only have an effect if overflow occurs, which cannot happen because it will just line wrap instead.

These rules definitely became obsolete by https://github.com/rust-lang/rust/pull/77699, when the stylesheet was decidedly changed to have line wrapping in short docblocks, but given the bug it was fixing, this probably got broken earlier.
2022-12-24 00:31:43 +01:00
Michael Howell
1c05d4b02a rustdoc: remove no-op CSS from .docblock-short
The rules `overflow:hidden` and `text-overflow:ellipses` only have an
effect if overflow occurs, which cannot happen because it will just line
wrap instead.

These rules definitely became obsolete by
https://github.com/rust-lang/rust/pull/77699, when the stylesheet was
decidedly changed to have line wrapping in short docblocks, but given the
bug it was fixing, this probably got broken earlier.
2022-12-23 12:02:23 -07:00
Michael Howell
d60309b311 rustdoc: use a more evocative name for CSS/JS #titles
This renames the ID, which is only used in search results, to
`#search-tabs`. Also changes the `.count` to a span, so it doesn't need its
display mode to be overridden.
2022-12-22 18:01:46 -07:00
Matthias Krüger
9cd140e7a1
Rollup merge of #106035 - GuillaumeGomez:migrate-css-var-search-tab-title-color, r=notriddle
Migrate search tab title color to CSS variable

r? ```@notriddle```
2022-12-22 19:36:14 +01:00
Guillaume Gomez
33ff610d13 Migrate search tab title color to CSS variable 2022-12-22 11:38:39 +01:00
Michael Howell
2b661c33de rustdoc: simplify CSS and DOM for more-scraped-examples
This gets rid of the more-scraped-examples-inner wrapper, instead nesting the
children directly and using absolute positioning for the toggle line.
2022-12-21 18:03:31 -07:00
Matthias Krüger
b9edcfa055
Rollup merge of #105972 - notriddle:notriddle/anchor, r=GuillaumeGomez
rustdoc: simplify section anchor CSS

Since f50bf8636e changed anchors to be always positioned absolute, specifying it on hover as well is redundant.
2022-12-20 23:35:16 +01:00
Michael Howell
b29a9e3b3f rustdoc: simplify section anchor CSS
Since f50bf8636e changed anchors to be
always positioned absolute, specifying it on hover as well is redundant.
2022-12-20 12:44:22 -07:00
Michael Howell
168e3da812 rustdoc: prevent CSS layout of line numbers shrinking into nothing 2022-12-20 10:32:35 -07:00
Matthias Krüger
1abbc3f01b
Rollup merge of #105914 - GuillaumeGomez:simplify-css-examples-code-blocks, r=notriddle
rustdoc: Simplify CSS for scraped code examples code blocks

It's another approach than https://github.com/rust-lang/rust/pull/105894 for https://github.com/rust-lang/rust/pull/105823.

I simply removed the extra style added for the scraped code blocks which appears to be unneeded.

r? `@notriddle`
2022-12-20 08:51:16 +01:00
Matthias Krüger
951949c05e
Rollup merge of #105912 - notriddle:notriddle/pre-line-height, r=GuillaumeGomez
rustdoc: force pre tags to have the default line height

Fixes #105906
2022-12-20 08:51:15 +01:00
Guillaume Gomez
ecc8d007e4 Simplify CSS for code examples code blocks 2022-12-19 19:53:31 +01:00
Michael Howell
581cbe4135 rustdoc: remove width-limiter from source pages, stop overriding CSS 2022-12-19 11:40:22 -07:00
Michael Howell
f24c04c3f8 rustdoc: force pre tags to have the default line height
Fixes #105906
2022-12-19 10:23:46 -07:00
Matthias Krüger
2835b668d9
Rollup merge of #105789 - notriddle:notriddle/examples-margin, r=GuillaumeGomez
rustdoc: clean up margin CSS for scraped examples

* This stops applying a margin to the additional example links. Because these links are `display: inline`, it doesn't actually do anything.
* This switches from using a margin-bottom with a special exception for the examples themselves, plus an additional margin on the hide button, to instead using just margin-top on the examples, with an exception for the first one.

No user-visible changes should result from this.
2022-12-17 23:44:27 +01:00
Michael Howell
f309934b5e rustdoc: clean up margin CSS for scraped examples
* This stops applying a margin to the additional example links.
  Because these links are `display: inline`, it doesn't actually do anything.
* This switches from using a margin-bottom with a special exception for
  the examples themselves, plus an additional margin on the hide button,
  to instead using just margin-top on the examples, with an exception for
  the first one.

No user-visible changes should result from this.
2022-12-16 10:16:13 -07:00
Matthias Krüger
d30057b797
Rollup merge of #105764 - notriddle:notriddle/src-sidebar-toggle, r=GuillaumeGomez
rustdoc: name the source page sidebar-toggle `#src-sidebar-toggle`

The old name doesn't get across where it's really supposed to be used.
2022-12-16 14:02:20 +01:00
Matthias Krüger
0820bb2826
Rollup merge of #105756 - notriddle:notriddle/example-wrap-tooltip, r=GuillaumeGomez
rustdoc: simplify CSS for codeblock tooltips

Instead of making its parts `display: none` and then changing it on hover, just make the pseudo-element itself on hover.
2022-12-16 14:02:19 +01:00
Michael Howell
a84483eb59 rustdoc: name the source page sidebar-toggle #src-sidebar-toggle
The old name doesn't get across where it's really supposed to be used.
2022-12-15 16:29:52 -07:00
Michael Howell
f28a8ca1dc rustdoc: simplify CSS for codeblock tooltips
Instead of making its parts `display: none` and then changing it on hover,
just make the pseudo-element itself on hover.
2022-12-15 12:05:27 -07:00
Guillaume Gomez
8ae479a02b Migrate Jump to def links background to CSS variable 2022-12-15 19:49:48 +01:00
Matthias Krüger
99a1bfc221
Rollup merge of #105724 - notriddle:notriddle/scrape-example-src-line-numbers, r=GuillaumeGomez
rustdoc: remove no-op CSS `.scrape-example .src-line-numbers { margin: 0 }`

This is the default CSS for `<pre>` tags in `.code-wrapper` anyway, so this line does nothing.
2022-12-15 12:46:05 +01:00
Michael Howell
afcc354bc4 rustdoc: remove no-op CSS .scrape-example .src-line-numbers { margin: 0 }
This is the default CSS for `<pre>` tags in `.code-wrapper` anyway, so this
line does nothing.
2022-12-14 16:25:26 -07:00
Michael Howell
9e3d847d7b rustdoc: remove unnecessary CSS kbd { cursor: default }
Added along with theme picker changes in
e78f1392b7, but no reason seems to have been
given at the time for why this particular rule was added.

Removing this rule results in `<kbd>` elements getting an I-bar, while the
rule causes them to use the "default" arrow, but since selecting the text in
these elements works fine, the I-bar is not misleading.
2022-12-14 11:11:25 -07:00
Matthias Krüger
b6d140e250
Rollup merge of #105676 - notriddle:notriddle/impl-docblock, r=GuillaumeGomez
rustdoc: add CSS margin between `impl` docblock and its items

## Before

![image](https://user-images.githubusercontent.com/1593513/207471025-c27c298b-4d48-461b-918b-a965b09db4f1.png)

## After

![image](https://user-images.githubusercontent.com/1593513/207471759-1bbabf71-0932-441c-b044-ad0e392ba552.png)
2022-12-14 10:58:49 +01:00
Matthias Krüger
6cd8d1d4e3
Rollup merge of #105665 - notriddle:notriddle/popover-css-merge, r=GuillaumeGomez
rustdoc: simplify popover CSS

* Merge the color-changing block into the regular rules, which was probably written that way because it used to be in the theme files, but has no reason to be written this way now that it's in rustdoc.css

* Get rid of redundant `display: block`, since `position: absolute` blockifies the layout anyway.
2022-12-14 10:58:48 +01:00
Michael Howell
79bb6ec9ef rustdoc: add CSS margin between impl docblock and its items 2022-12-13 17:03:41 -07:00
Michael Howell
813584950d rustdoc: simplify popover CSS
* Merge the color-changing block into the regular rules, which was
  probably written that way because it used to be in the theme files,
  but has no reason to be written this way now that it's in rustdoc.css

* Get rid of redundant `display: block`, since `position: absolute`
  blockifies the layout anyway.
2022-12-13 11:00:34 -07:00
Michael Howell
e38d1e909a rustdoc: apply pre-wrap CSS to code-wrapped links
This is common syntax used for intra-doc links, so fixing it should help
with doc formatting.
2022-12-13 10:48:40 -07:00
Michael Howell
bfc50d0534 rustdoc: remove no-op CSS .source pre { overflow: auto }
Since source pages use the `example-wrap` wrapper, this rule became
redundant because there is already an `overflow-x: auto` rule.
2022-12-12 10:02:04 -07:00
Matthias Krüger
d0563c64b8
Rollup merge of #105504 - notriddle:notriddle/stab-css, r=GuillaumeGomez
rustdoc: make stability badge CSS more consistent

# Before

![image](https://user-images.githubusercontent.com/1593513/206763667-8e0deb74-be63-4906-8229-9a7eb51725c2.png)

![image](https://user-images.githubusercontent.com/1593513/206764007-6301c0e8-4594-4a41-ba93-105824dffee6.png)

# After

![image](https://user-images.githubusercontent.com/1593513/206763698-e187cee2-3a50-4e48-b7b5-c3cfa41a797d.png)

![image](https://user-images.githubusercontent.com/1593513/206764058-3999ee67-1439-4c98-8216-b90575342aa8.png)

# Description

* They all get rounded corners now. A test case has been added for this, too.

* There are now broadly two kinds of stability badge, where there used to be three: item-info "fat badge", and the "thin badge" in both item tables and in docblocks (which got merged). The fat badges can have icons, while the thin badges can't.

* The old Ayu design doesn't make sense to me. Does anyone know why it was done that way?
2022-12-09 22:31:58 +01:00
Matthias Krüger
d4773866be
Rollup merge of #105480 - notriddle:notriddle/sidebar-toggle-mobile-center, r=GuillaumeGomez
rustdoc: remove no-op mobile CSS `#sidebar-toggle { text-align }`

Since 8b001b4da0 make the sidebar toggle a flex container, and already centers its content in desktop mode, this rule doesn't do anything.
2022-12-09 22:31:57 +01:00
Michael Howell
d60967bef2 rustdoc: make stability badge CSS more consistent
* They all get rounded corners now. A test case has been added for this, too.

* There are now broadly two kinds of stability badge, where there used to be
  three: item-info "fat badge", and the "thin badge" in both item tables and
  in docblocks (which got merged). The fat badges can have icons, while the
  thin badges can't.
2022-12-09 10:54:44 -07:00
Matthias Krüger
441669c382
Rollup merge of #105442 - notriddle:notriddle/docblock-table-css, r=GuillaumeGomez
rustdoc: clean up docblock table CSS

# Preview

http://notriddle.com/notriddle-rustdoc-demos/table-2/test_dingus/fn.test.html

# Before

![image](https://user-images.githubusercontent.com/1593513/206364287-1b80eaaf-2e0e-4138-8b56-4aa8ff39abac.png)

# After

![image](https://user-images.githubusercontent.com/1593513/206364209-d287d165-31be-4de1-9b43-05b35ce2a86b.png)

# Details

* The rule `display: block` had no noticeable effect. Technically, because markdown tables have a tbody and thead, they get wrapped in an [anonymous table box] in the CSS tree, nested within the `<table>` element's block layout box.

  This rule was added in #87230 to make the table side-scrolling, but this same issue was doubly fixed in #88742 by wrapping it in an explicit `<div>` tag. Since accessibility advocates recommend the wrapper div over marking the table as `display: block`, we'll stick with that.

  https://adrianroselli.com/2020/11/under-engineered-responsive-tables.html

* The rule `width: calc(100% - 2px)` had no visible effect, because the anonymous table box was not affected.

* The style is tweaked to basically be the same style GitHub uses. In particular, it adds zebra stripes, and removes dotted borders.

  https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/Markdown.20table.20styling

[anonymous table box]: https://www.w3.org/TR/CSS2/tables.html#anonymous-boxes
2022-12-09 07:25:46 +01:00
Matthias Krüger
5fd540b8fe
Rollup merge of #105387 - willcrichton:scrape-examples-ui-improvements, r=notriddle
Improve Rustdoc scrape-examples UI

This PR combines a few different improvements to the scrape-examples UI. See a live demo here: https://willcrichton.net/misc/scrape-examples/small-first-example/clap/struct.Arg.html

### 1. The first scraped example now takes up significantly less screen height.
Inserting the first scraped example takes up a lot of vertical screen space. I don't want this addition to overwhelm users, so I decided to reduce the height of the initial example in two ways: (A) the default un-expanded height is reduced from 240px (10 LOC) to 120px (5 LOC), and (B) the link to the example is now positioned *over* the example instead of *atop* the example (only on desktop though, not mobile). The changes to `scrape-examples.js` and `rustdoc.css` implement this fix.

Here is what an example docblock now looks like:

![Screen Shot 2022-12-06 at 10 02 21 AM](https://user-images.githubusercontent.com/663326/205987450-3940063c-5973-4a34-8579-baff6a43aa9b.png)

### 2. Expanding all docblocks will not expand "More examples".
The "More examples blocks" are huge, so fully expanding everything on the page would take up too much vertical space. The changes to `main.js` implement this fix. This is tested in `scrape-examples-toggle.goml`.

### 3. Examples from binary crates are sorted higher than examples from library crates.
Code that is written as an example of an API is probably better for learning than code that happens to use an API, but isn't intended for pedagogic purposes. Unfortunately Rustc doesn't know whether a particular crate comes from an example target (only Cargo knows this). But we can at least create a proxy that prefers examples from binary crates over library crates, which we know from `--crate-type`.

This change is implemented by adding a new field `bin_crate` in `Options` (see `config.rs`). An `is_bin` field has been added to the scraped examples metadata (see `scrape_examples.rs`). Then the example sorting metric uses `is_bin` as the first entry of a lexicographic sort on `(is_bin, example_size, display_name)` (see `render/mod.rs`).

Note that in the future we can consider adding another flag like `--scrape-examples-cargo-target` that would pass target information from Cargo into the example metadata. But I'm proposing a less intrusive change for now.

### 4. The scrape-examples help page has been updated to reflect the latest Cargo interface.

See `scrape-examples-help.md`.

r? `@notriddle`

P.S. once this PR and rust-lang/cargo#11450 are merged, then I think the scrape-examples feature is officially ready for deployment on docs.rs!
2022-12-09 07:25:44 +01:00
Michael Howell
90da11d9af rustdoc: remove no-op mobile CSS #sidebar-toggle { text-align }
Since 8b001b4da0 make the sidebar toggle a
flex container, and already centers its content in desktop mode, this
rule doesn't do anything.
2022-12-08 17:38:07 -07:00