Skip to content

Commit 4346be5

Browse files
committed
rustdoc-search: show type signatures in results
1 parent b50f1b6 commit 4346be5

File tree

7 files changed

+797
-124
lines changed

7 files changed

+797
-124
lines changed

src/librustdoc/html/render/write_shared.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -370,8 +370,7 @@ else if (window.initSearch) window.initSearch(searchIndex);
370370
std::fs::write(
371371
&path,
372372
&format!(
373-
r##"searchState.loadedParamNames({kratename}, JSON.parse('{data}'))"##,
374-
kratename = serde_json::to_string(&kratename).unwrap(),
373+
r##"searchState.loadedParamNames('{kratename}','{data}')"##,
375374
data = search_index.param_names,
376375
)
377376
.into_bytes()

src/librustdoc/html/static/js/externs.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ function initSearch(searchIndex){}
99
/**
1010
* @typedef {{
1111
* name: string,
12-
* id: integer|null,
12+
* id: number|null,
1313
* fullPath: Array<string>,
1414
* pathWithoutLast: Array<string>,
1515
* pathLast: string,
1616
* generics: Array<QueryElement>,
17-
* bindings: Map<integer, Array<QueryElement>>,
17+
* bindings: Map<number, Array<QueryElement>>,
1818
* }}
1919
*/
2020
let QueryElement;
@@ -90,6 +90,9 @@ let Results;
9090
* parent: (Object|undefined),
9191
* path: string,
9292
* ty: number,
93+
* type: FunctionSearchType?,
94+
* displayType: Promise<Array<Array<string>>>|null,
95+
* displayTypeMappedNames: Promise<Array<[string, Array<string>]>>|null,
9396
* }}
9497
*/
9598
let ResultObject;

src/librustdoc/html/static/js/main.js

+27-2
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,27 @@ function preLoadCss(cssUrl) {
353353
loadedDescShard: function(crate, shard, data) {
354354
this.descShards.get(crate)[shard].resolve(data.split("\n"));
355355
},
356+
paramNameShards: new Map(),
357+
paramNameResolvers: new Map(),
358+
loadParamNames: async function(crate) {
359+
if (this.paramNameShards.has(crate)) {
360+
return this.paramNameShards.get(crate);
361+
} else {
362+
const promise = new Promise((resolve, reject) => {
363+
this.paramNameResolvers.set(crate, resolve);
364+
const url = resourcePath(
365+
`search.desc/${crate}/${crate}-param-names`,
366+
".js",
367+
);
368+
loadScript(url, reject);
369+
});
370+
this.paramNameShards.set(crate, promise);
371+
return promise;
372+
}
373+
},
374+
loadedParamNames: function(crate, data) {
375+
this.paramNameResolvers.get(crate)(JSON.parse(data));
376+
},
356377
};
357378

358379
const toggleAllDocsId = "toggle-all-docs";
@@ -1101,6 +1122,9 @@ function preLoadCss(cssUrl) {
11011122
titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));
11021123
wrapper.appendChild(titleContent);
11031124
}
1125+
if (e.RUSTDOC_TOOLTIP_DOM) {
1126+
wrapper.appendChild(e.RUSTDOC_TOOLTIP_DOM);
1127+
}
11041128
}
11051129
wrapper.className = "tooltip popover";
11061130
const focusCatcher = document.createElement("div");
@@ -1240,7 +1264,7 @@ function preLoadCss(cssUrl) {
12401264
}
12411265
}
12421266

1243-
onEachLazy(document.getElementsByClassName("tooltip"), e => {
1267+
window.rustdocConfigureTooltip = e => {
12441268
e.onclick = () => {
12451269
e.TOOLTIP_FORCE_VISIBLE = e.TOOLTIP_FORCE_VISIBLE ? false : true;
12461270
if (window.CURRENT_TOOLTIP_ELEMENT && !e.TOOLTIP_FORCE_VISIBLE) {
@@ -1308,7 +1332,8 @@ function preLoadCss(cssUrl) {
13081332
addClass(window.CURRENT_TOOLTIP_ELEMENT, "fade-out");
13091333
}
13101334
};
1311-
});
1335+
};
1336+
onEachLazy(document.getElementsByClassName("tooltip"), window.rustdocConfigureTooltip);
13121337

13131338
const sidebar_menu_toggle = document.getElementsByClassName("sidebar-menu-toggle")[0];
13141339
if (sidebar_menu_toggle) {

0 commit comments

Comments
 (0)