Commit graph

3247 commits

Author SHA1 Message Date
Arpad Borsos
d93d77b713
rustdoc: Simplify some document functions
* Remove `prefix` param of `document_short/full`, `render_markdown`, as its always an empty string.
* Remove `Option` wrapping of `document_short` `parent`, as its always `Some`.
2021-04-19 23:42:09 +02:00
bors
62652865b6 Auto merge of #84283 - jsha:de-emphasize-attributes, r=GuillaumeGomez
rustdoc: Reduce visual weight of attributes.

Followup from #83337. As part of that PR, we stopped hiding attributes behind a toggle, because most things have just zero or one attributes. However, this made clear that the current rendering of attributes emphasizes them a lot, which distracts from function signatures. This PR changes their color of attributes to be the same as the toggles, and reduces their font weight.

This also removes `#[lang]` from the list of ALLOWED_ATTRIBUTES. This attribute is an implementation detail rather than part of the public-facing documentation.

![image](https://user-images.githubusercontent.com/220205/115131061-cc407d80-9fa9-11eb-9a77-ad3f3217f391.png)

Demo at https://hoffman-andrews.com/rust/de-emph-attr/std/string/struct.String.html#method.trim
2021-04-19 07:32:55 +00:00
bors
8108e17faa Auto merge of #84288 - notriddle:short-links, r=jyn514
rustdoc: get rid of CURRENT_DEPTH

Fixes #82742
2021-04-19 01:59:20 +00:00
Michael Howell
18fbd3692f rustdoc: get rid of CURRENT_DEPTH 2021-04-17 23:08:28 -07:00
hi-rustin
37b289720d Fix the wrong return value type description of validateResult 2021-04-18 10:43:14 +08:00
Jacob Hoffman-Andrews
e23b035bbe Reduce visual weight of attributes. 2021-04-17 18:08:50 -07:00
Dylan DPC
b5ce9c44a3
Rollup merge of #84150 - jsha:defer-search-js, r=GuillaumeGomez
rustdoc: move some search code into search.js

This reduces main.s from 3094 lines to 1587. Also it saves some bytes
of download in the case where search isn't used.

There were a fair number of variables that needed to be accessible in
both main.js and search.js, but I didn't want to put too many symbols in
the global namespace, so I consolidated much of the search-related
state and functions into a new object `window.searchState`.

Demo at https://hoffman-andrews.com/rust/move-search/std/?search=foo
2021-04-17 22:31:32 +02:00
Michael Howell
755b4fb02b rustdoc: move the cx argument to the end of the list
This should help make things consistent.
2021-04-17 09:55:28 -07:00
Michael Howell
bb0204861b rustdoc: change 'cx to 'tcx, to match the struct itself 2021-04-17 09:55:28 -07:00
Michael Howell
6516f9408e rustdoc: use more precise relative URLS
Instead of using a depth counter and adding "../" to get to the top,
this commit makes rustdoc actually compare the path of what it's
linking from to the path that it's linking to. This makes the resulting
HTML shorter.

Here's a comparison of one of the largest (non-source) files in the
Rust standard library docs (about 4% improvement before gzipping).

    $ wc -c struct.Wrapping.old.html struct.Wrapping.new.html
    2387389 struct.Wrapping.old.html
    2298538 struct.Wrapping.new.html

Most if it can be efficiently gzipped away.

    $ wc -c struct.Wrapping.old.html.gz struct.Wrapping.new.html.gz
    70679 struct.Wrapping.old.html.gz
    70050 struct.Wrapping.new.html.gz

But it also makes a difference in the final DOM size, reducing it from 91MiB to 82MiB.
2021-04-17 09:21:52 -07:00
bors
03301ef1d8 Auto merge of #84246 - notriddle:rustdoc-path-printing-cleanup, r=jyn514
rustdoc: get rid of unused path printing code

The code for printing a raw path is only used in utils.rs, which only prints the alternative (non-HTML) format. Path has
a function that does the same thing without HTML support, so use that instead.
2021-04-17 09:58:27 +00:00
bors
84e93979e1 Auto merge of #84074 - notriddle:rustdoc-macro-visibility, r=jyn514
rustdoc: clean up and test macro visibility print

This fixes the overly-complex invariant mentioned in <https://github.com/rust-lang/rust/pull/83237#issuecomment-815346570>, where the macro source can't have any links in it only because the cache hasn't been populated yet.
2021-04-16 23:41:43 +00:00
Michael Howell
6109cee35c rustdoc: get rid of unused path printing code
The code for printing a raw path is only used in utils.rs,
which only prints the alternative (non-HTML) format. Path has
a function that does the same thing without HTML support,
so use that instead.
2021-04-16 08:46:47 -07:00
Dylan DPC
a5c68d7908
Rollup merge of #83337 - Manishearth:item-hide, r=GuillaumeGomez
rustdoc: Hide item contents, not items

This tweaks rustdoc to hide item contents instead of items, and only when there are too many of them.

This means that users will _always_ see the type parameters, and will _often_ see fields/etc as long as they are small. Traits have some heuristics for hiding only the methods or only the methods and the consts, since the associated types are super important.

I'm happy to play around with the heuristics here; we could potentially make it so that structs/enums/etc are always hidden but traits will try really hard to show type aliases.

This needs a test, but you can see it rendered at https://manishearth.net/sand/doc_render/bar/

<details>

<summary> Code example </summary>

```rust
pub struct PubStruct {
    pub a: usize,
    pub b: usize,
}

pub struct BigPubStruct {
    pub a: usize,
    pub b: usize,
    pub c: usize,
    pub d: usize,
    pub e: usize,
    pub f: usize,
}

pub union BigUnion {
    pub a: usize,
    pub b: usize,
    pub c: usize,
    pub d: usize,
    pub e: usize,
    pub f: usize,
}

pub union Union {
    pub a: usize,
    pub b: usize,
    pub c: usize,
}

pub struct PrivStruct {
    a: usize,
    b: usize,
}

pub enum Enum {
    A, B, C,
    D {
        a: u8,
        b: u8
    }
}

pub enum LargeEnum {
    A, B, C, D, E, F, G, H, I, J
}

pub trait Trait {
    type A;
    #[must_use]
    fn foo();
    fn bar();
}

pub trait GinormousTrait {
    type A;
    type B;
    type C;
    type D;
    type E;
    type F;
    const N: usize = 1;
    #[must_use]
    fn foo();
    fn bar();
}

pub trait HugeTrait {
    type A;
    const M: usize = 1;
    const N: usize = 1;
    const O: usize = 1;
    const P: usize = 1;
    const Q: usize = 1;
    #[must_use]
    fn foo();
    fn bar();
}

pub trait BigTrait {
    type A;
    #[must_use]
    fn foo();
    fn bar();
    fn baz();
    fn quux();
    fn frob();
    fn greeble();
}

#[macro_export]
macro_rules! foo {
    (a) => {a};
}
```

</details>

Fixes https://github.com/rust-lang/rust/issues/82114
2021-04-16 14:08:30 +02:00
Jacob Hoffman-Andrews
6f1f3eb516 Update comment on search.js static file. 2021-04-14 12:17:24 -07:00
Jacob Hoffman-Andrews
a245642cab
Change root_path to static_root_path
Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
2021-04-14 11:56:53 -07:00
Jacob Hoffman-Andrews
52789498e9 Split search.js from search-index.js. 2021-04-13 14:59:54 -07:00
François Mockers
b9f9a2a68f tidy format rust 2021-04-13 22:14:34 +02:00
François Mockers
df100f7c53 format css 2021-04-13 22:13:42 +02:00
François Mockers
838c2ef111 fix source link when in a trait implementation 2021-04-13 22:13:41 +02:00
François Mockers
45964368f4 add anchors links on hover to items from trait impl 2021-04-13 22:10:19 +02:00
François Mockers
e1b6bb214f fix links from trait impl methods to trait declaration 2021-04-13 22:09:08 +02:00
Jacob Hoffman-Andrews
11f854db4f Further consolidate search-related vars and funcs 2021-04-13 00:35:36 -07:00
Jacob Hoffman-Andrews
95d652ebce Consolidate search-related vars and functions.
This allows sharing across main.js and search.js without exporting too
many symbols into the global namespace.
2021-04-13 00:07:01 -07:00
Jacob Hoffman-Andrews
276ee6f542 Move search JS into search-index.js
Export a few variables and functions into the global scope because they
are needed both by main.js and search-index.js.
2021-04-12 22:52:16 -07:00
Manish Goregaokar
5c2820b913 +ignore-tidy-filelength 2021-04-12 13:35:48 -07:00
Manish Goregaokar
942ed31c56 Move color to themes 2021-04-12 12:42:13 -07:00
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
Michael Howell
2dfd0bfe10 rustdoc: clean up and test macro visibility print
This fixes the overly-complex invariant mentioned in
<https://github.com/rust-lang/rust/pull/83237#issuecomment-815346570>,
where the macro source can't have any links in it only because the
cache hasn't been populated yet.
2021-04-10 14:22:06 -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