Commit graph

3219 commits

Author SHA1 Message Date
Manish Goregaokar
05d1e723dc & -> && 2021-04-12 12:40:20 -07:00
Manish Goregaokar
97cd30d337 Wrap toggle_open() 2021-04-12 12:27:37 -07:00
Manish Goregaokar
01afa07fef should_hide_fields > 12 2021-04-12 11:41:01 -07:00
Manish Goregaokar
8e9882dbc4 Add css classes 2021-04-12 08:48:04 -07:00
Jacob Hoffman-Andrews
def144c2e7 Improve CSS for "hide contents, not items"
Introduce a first use of the `<details>` and `<summary>` tags as
replacements for the JS-built toggles. I think this has the potential to
replace all the JS toggles and generally clean up the JS, CSS, and HTML.

Split rendering of attributes into two cases: in the case where they are
rendered as descendents of a `<pre>` tag, where they use indent spaces and
newlines for formatting, matching their surrounding markup. In the case
where they are rendered as descendants of a `<code>` tag, they are
rendered as `<div>`. This let me clean up some fragile CSS that was
adjusting the margin-left of attributes depending on context.

Remove toggles for attributes. With the ALLOWED_ATTRIBUTES filter, it's
rare for an item to have more than one attribute, so hiding attributes
behind a toggle doesn't save any screen space in the common case.

Fix a couple of invocations of `matches!` that didn't compile on my
machine.

Fix a boolean for the JS `createToggle` call that was causing
"Expand description" to show up spuriously on already-expanded
descriptions.

Add JS for auto-hide settings and hide all / show all.

Remove a z-index property and some font color tweaks made unnecessary
by the <details> toggles.

Add CSS for the <details> toggles.
2021-04-12 08:48:01 -07:00
Manish Goregaokar
846a4e9b5c Update src/librustdoc/html/render/print_item.rs
Co-authored-by: Joshua Nelson <joshua@yottadb.com>
2021-04-12 08:45:45 -07:00
Manish Goregaokar
e2f59f41f9 Update src/librustdoc/html/render/print_item.rs
Co-authored-by: Joshua Nelson <joshua@yottadb.com>
2021-04-12 08:45:45 -07:00
Manish Goregaokar
256e594b0a rustdoc: Add setting for hiding large items 2021-04-12 08:45:45 -07:00
Manish Goregaokar
173cbecc66 rustdoc: smartly hide associated items of traits if there are too many of them 2021-04-12 08:45:45 -07:00
Manish Goregaokar
f146b9701d rustdoc: hide fields of structs/unions > 5 2021-04-12 08:45:45 -07:00
Manish Goregaokar
71c52acf32 rustdoc: hide variants of enums > 5 2021-04-12 08:45:45 -07:00
Manish Goregaokar
c96f86de30 rustdoc: Stop hiding entire item declarations 2021-04-12 08:45:45 -07:00
Guillaume Gomez
e2708b4f24 Add test for idents merge 2021-04-08 15:32:22 +02:00
Guillaume Gomez
2ee97bd434 Merge idents if they are part of a path 2021-04-08 15:32:22 +02:00
Dylan DPC
c92ac875bf
Rollup merge of #82963 - camelid:move-sharedcontext, r=GuillaumeGomez
Move `SharedContext` to `context.rs`

It is tightly connected to `Context` and is primarily used as a field in
`Context`. Thus, it should be next to `Context`.
2021-04-06 17:42:28 +02:00
Camelid
525646a380 Move SharedContext to context.rs
It is tightly connected to `Context` and is primarily used as a field in
`Context`. Thus, it should be next to `Context`.
2021-04-05 19:27:48 -07:00
Yuki Okushi
12d007da0f
Rollup merge of #83835 - notriddle:sort-index, r=ollie27
rustdoc: sort search index items for compression

This should not affect the appearance of the docs pages themselves.

This makes the pre-compressed search index smaller, thanks to the
empty-string path duplication format, and also the gzipped version,
by giving the algorithm more structure to work with.

    rust$ wc -c search-index-old.js search-index-new.js
    2628334 search-index-old.js
    2586181 search-index-new.js
    5214515 total
    rust$ gzip search-index-*
    rust$ wc -c search-index-old.js.gz search-index-new.js.gz
    239486 search-index-old.js.gz
    237386 search-index-new.js.gz
    476872 total
2021-04-06 06:24:13 +09:00
Dylan DPC
d60cf78fbe
Rollup merge of #83826 - slightlyoutofphase:rustdoc-sidebar-order-shuffle, r=jyn514
List trait impls before deref methods in doc's sidebar

This PR is acting directly on a suggestion made by ```````@jyn514``````` in #83133. I've tested the changes locally, and can confirm that it does in fact properly achieve what he thought it would. This PR also in turn closes #83133.
2021-04-05 13:03:41 +02:00
Trevor Spiteri
29fed9aa4e Update Source Serif to release 4.004
Now the family name is Source Serif 4 (upstream issue 77) instead of
Source Serif Pro.
2021-04-05 10:48:08 +02:00
Dylan DPC
03bd4d29e9
Rollup merge of #83717 - notriddle:main-js-slice-loop, r=GuillaumeGomez
rustdoc: Separate filter-empty-string out into its own function
2021-04-05 00:24:29 +02:00
Michael Howell
2370e3b439 Get rid of unneeded aliases field 2021-04-04 14:09:16 -07:00
Dylan DPC
e62fce32e5
Rollup merge of #83809 - GuillaumeGomez:remove-initial-ids, r=camelid
Remove unneeded INITIAL_IDS const

Some IDs inside this map didn't exist anymore, some others were duplicates of what we have inside `IdMap`. So instead of keeping the two around and since `INITIAL_IDS` was only used by `IdMap`, no need to keep both of them.
2021-04-04 19:20:04 +02:00
Dylan DPC
25026c9fd0
Rollup merge of #83793 - notriddle:single-span-macro-highlight, r=GuillaumeGomez
rustdoc: highlight macros more efficiently

Instead of producing `<span class=macro>assert_eq</span><span class=macro>!</span>`,
just produce `<span class=macro>assert_eq!</span>`.
2021-04-04 19:20:03 +02:00
Michael Howell
5f92951d4f rustdoc: sort search index items for compression
This should not affect the appearance of the docs pages themselves.

This makes the pre-compressed search index smaller, thanks to the
empty-string path duplication format, and also the gzipped version,
by giving the algorithm more structure to work with.

    rust$ wc -c search-index-old.js search-index-new.js
    2628334 search-index-old.js
    2586181 search-index-new.js
    5214515 total
    rust$ gzip search-index-*
    rust$ wc -c search-index-old.js.gz search-index-new.js.gz
    239486 search-index-old.js.gz
    237386 search-index-new.js.gz
    476872 total
2021-04-03 22:27:38 -07:00
Guillaume Gomez
13e482bf83 Remove unneeded INITIAL_IDS const 2021-04-03 23:27:21 +02:00
SlightlyOutOfPhase
72502e889c
Remove trailing whitespace 2021-04-03 17:00:07 -04:00
SlightlyOutOfPhase
8a058926ec
List trait impls before methods from deref in the sidebar of Rustdoc's output 2021-04-03 16:32:59 -04:00
Yuki Okushi
0daec04d65
Rollup merge of #83756 - camelid:internal-rename-doc-spotlight, r=GuillaumeGomez
rustdoc: Rename internal uses of `spotlight`

I didn't make these renames in #80965 because I didn't want the PR to
conflict with #80914.
2021-04-04 00:19:36 +09:00
Michael Howell
f64038f983 rustdoc: update macro highlight tests 2021-04-02 17:46:12 -07:00
Michael Howell
617e13548f rustdoc: highlight macros more efficiently
Instead of producing `<span class=macro>assert_eq</span><span class=macro>!</span>`,
just produce `<span class=macro>assert_eq!</span>`.
2021-04-02 13:12:00 -07:00
Camelid
1fe0fe47fc rustdoc: Remove unused spotlight CSS
I couldn't find any uses of this CSS. I think it was superseded by the
`.notable-traits` CSS class and other similarly-named CSS classes.
2021-04-02 11:38:06 -07:00
Camelid
5f96c48de2 rustdoc: Rename internal uses of spotlight
I didn't make these renames in #80965 because I didn't want the PR to
conflict with #80914.
2021-04-02 11:38:02 -07:00
Dylan DPC
31f532092c
Rollup merge of #83478 - jyn514:fine-grained-files, r=Mark-Simulacrum
rustdoc: Add unstable option to only emit shared/crate-specific files

The intended use case is for docs.rs, which can now copy exactly the
files it cares about, rather than having to guess based on whether they
have a resource suffix or not. In particular, some files have a resource
suffix but cannot be shared between crates: https://github.com/rust-lang/docs.rs/pull/1312#issuecomment-798783688

The end goal is to fix rust-lang/docs.rs#1327 by reverting rust-lang/docs.rs#1324.

This obsoletes `--print=unversioned-files`, which I plan to remove as
soon as docs.rs stops using it.

I recommend reviewing this one commit at a time.

r? ``@GuillaumeGomez`` cc ``@Nemo157`` ``@pietroalbini``
2021-04-02 19:57:30 +02:00
Yuki Okushi
080aa37629
Rollup merge of #83721 - GuillaumeGomez:copy-use, r=Nemo157
Add a button to copy the "use statement"

Fixes https://github.com/rust-lang/rust/issues/50239

When clicking on the button, it'll add the elements prepended by "use " and will end with a ";". So in the images below, I now have in my clipboard `use std::fs::OpenOptions;`.

A screenshot of the newly added button:

![Screenshot from 2021-03-31 22-12-12](https://user-images.githubusercontent.com/3050060/113205430-90e64500-926e-11eb-8538-529829f611ec.png)

A screenshot after it was clicked:

![Screenshot from 2021-03-31 22-15-31](https://user-images.githubusercontent.com/3050060/113205532-ad827d00-926e-11eb-893d-35f2f8f92696.png)

r? `@Nemo157`
2021-04-02 21:28:21 +09:00
Michael Howell
227f5ed679 rustdoc: Separate filter-empty-string out into its own function 2021-04-01 12:17:43 -07:00
Joshua Nelson
413938d7a9 Fix --external-css to be invocation-specific and note main.js should be invocation specific 2021-03-31 17:24:27 -04:00
Guillaume Gomez
828179d687 Add a button to copy the "use statement" 2021-03-31 22:13:47 +02:00
Michael Howell
6530b3243a rustdoc: use Array.prototype.filter instead of open-coding it 2021-03-31 12:44:03 -07:00
Joshua Nelson
1086d9b7b5 Rename CrateSpecific -> InvocationSpecific 2021-03-31 11:55:34 -04:00
Joshua Nelson
d4f3f91c48 Enforce that Toolchain files are static and Crate files are dynamic
This also changes custom themes from Toolchain to Crate files.
2021-03-31 11:55:30 -04:00
Dylan DPC
9f9577c1aa
Rollup merge of #83645 - pickfire:patch-3, r=GuillaumeGomez
Wrap non-pre code blocks

Fix #83550 regression

```
$ cargo new --lib whitespace && cd whitespace && echo '//! `"   foo   "`' > src/lib.rs && cargo doc --open
```

Before

![](https://user-images.githubusercontent.com/89623/112713498-c0dfc200-8ed5-11eb-8c57-efdf26372e74.png)

After

![](https://user-images.githubusercontent.com/89623/112713538-f08eca00-8ed5-11eb-8a98-675179f60ae2.png)

r? ``@GuillaumeGomez``
cc ``@mgeisler``
2021-03-30 11:34:27 +02:00
Dylan DPC
25ade6910c
Rollup merge of #83543 - camelid:lint-unknown-disambiguator, r=jyn514
Lint on unknown intra-doc link disambiguators
2021-03-30 00:32:22 +02:00
Ivan Tham
7d21972579
Wrap non-pre code blocks
Fix #83550 regression
2021-03-29 21:49:58 +08:00
Camelid
56347a173a Point to disambiguator instead of whole link
And, now that we do that, we can remove the explanatory note since the
error span should make it clear what the disambiguator is.
2021-03-28 17:18:51 -07:00
Dylan DPC
f665e5a491
Rollup merge of #82993 - camelid:source-use-diag, r=jyn514
rustdoc: Use diagnostics for error when including sources

This error probably almost never happens, but we should still use the
diagnostic infrastructure. My guess is that the error was added back
before rustdoc used the rustc diagnostic infrastructure (it was all
`println!` and `eprintln!` back then!) and since it likely rarely occurs
and this code doesn't change that much, no one thought to transition it
to using diagnostics.

Note that the old error was actually a warning (it didn't stop the rest
of doc building). It seems very unlikely that this would fail without
the rest of the doc build failing, so it makes more sense for it to be a
hard error.

The error looks like this:

    error: failed to render source code for `src/test/rustdoc/smart-punct.rs`: "bar": foo
      --> src/test/rustdoc/smart-punct.rs:3:1
       |
    3  | / #![crate_name = "foo"]
    4  | |
    5  | | //! This is the "start" of the 'document'! How'd you know that "it's" ...
    6  | | //!
    ...  |
    22 | | //! I say "don't smart-punct me -- please!"
    23 | | //! ```
       | |_______^

I wasn't sure how to trigger the error, so to create that message I
temporarily made rustdoc always emit it. That's also why it says "bar"
and "foo" instead of a real error message.

Note that the span of the diagnostic starts at line 3 because line 1 of
that file is a (non-doc) comment and line 2 is a blank line.
2021-03-27 20:37:09 +01:00
Dylan DPC
0502815529
Rollup merge of #83055 - aDotInTheVoid:selective-strip-item-doc, r=jyn514
[rustdoc] Don't document stripped items in JSON renderer.

Fixes #80664, see [my comment there](https://github.com/rust-lang/rust/issues/80664#issuecomment-797557948) for why

Note that we already do something similar in `convert_item`:

bb4cdf8ec0/src/librustdoc/json/conversions.rs (L28-L31)

``@rustbot`` modify labels: +T-rustdoc +A-rustdoc-json

r? ``@jyn514``
cc ``@CraftSpider``
2021-03-26 02:34:38 +01:00
Joshua Nelson
f77ebd4ffa Add unstable option to only emit shared/crate-specific files
The intended use case is for docs.rs, which can now copy exactly the
files it cares about, rather than having to guess based on whether they
have a resource suffix or not. In particular, some files have a resource
suffix but cannot be shared between crates: https://github.com/rust-lang/docs.rs/pull/1312#issuecomment-798783688

The end goal is to fix https://github.com/rust-lang/docs.rs/issues/1327
by reverting https://github.com/rust-lang/docs.rs/pull/1324.

This obsoletes `--print=unversioned-files`, which I plan to remove as
soon as docs.rs stops using it.
2021-03-25 20:03:44 -04:00
Joshua Nelson
7c89cc4a6f Add SharedResource abstraction and use it in write_shared
This cleans up the code quite a bit, and also makes the next commit much
easier.
2021-03-25 11:40:32 -04:00
Guillaume Gomez
7b59089316 Split clean::Constant enum into a struct and an enum 2021-03-24 21:52:20 +01:00
Guillaume Gomez
e25e15ce99 Store tcx and cache when they are used multiple times instead of calling functions every time 2021-03-24 21:48:36 +01:00