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
This commit is contained in:
Dylan DPC 2021-04-17 22:31:32 +02:00 committed by GitHub
commit b5ce9c44a3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 1685 additions and 1696 deletions

View file

@ -222,6 +222,7 @@ pub(super) fn write_shared(
&format!(" = {}", serde_json::to_string(&themes).unwrap()),
),
)?;
write_minify("search.js", static_files::SEARCH_JS)?;
write_minify("settings.js", static_files::SETTINGS_JS)?;
if cx.shared.include_sources {
write_minify("source-script.js", static_files::sidebar::SOURCE_SCRIPT)?;
@ -409,7 +410,7 @@ pub(super) fn write_shared(
write_crate("search-index.js", &|| {
let mut v = String::from("var searchIndex = JSON.parse('{\\\n");
v.push_str(&all_indexes.join(",\\\n"));
v.push_str("\\\n}');\ninitSearch(searchIndex);");
v.push_str("\\\n}');\nif (window.initSearch) {window.initSearch(searchIndex)};");
Ok(v.into_bytes())
})?;