]> git.lizzy.rs Git - rust.git/commitdiff
Add option to collapse automatically implementors
authorGuillaume Gomez <guillaume1.gomez@gmail.com>
Thu, 9 Jul 2020 19:42:02 +0000 (21:42 +0200)
committerGuillaume Gomez <guillaume1.gomez@gmail.com>
Thu, 9 Jul 2020 19:42:02 +0000 (21:42 +0200)
src/librustdoc/html/render.rs
src/librustdoc/html/static/main.js

index 04c4685213b2e7df6ad05df902306e7c7156afef..17c1d1c7fd6de40b0d6e597601f9d4177b3f0a01 100644 (file)
@@ -1291,6 +1291,7 @@ fn settings(root_path: &str, suffix: &str) -> String {
         ("auto-hide-method-docs", "Auto-hide item methods' documentation", false).into(),
         ("auto-hide-trait-implementations", "Auto-hide trait implementations documentation", true)
             .into(),
+        ("auto-collapse-implementors", "Auto-collapse implementors", true).into(),
         ("go-to-only-result", "Directly go to item in search if there is only one result", false)
             .into(),
         ("line-numbers", "Show line numbers on code examples", false).into(),
index 62a23298c1b9f215bb09bab134a21c90acb56ea4..9db9d5bb891a01cc8b38f476358283bf5fbdd4c8 100644 (file)
@@ -2241,8 +2241,7 @@ function defocusSearchBar() {
                 relatedDoc = relatedDoc.nextElementSibling;
             }
 
-            if ((!relatedDoc && hasClass(docblock, "docblock") === false) ||
-                (pageId && document.getElementById(pageId))) {
+            if (!relatedDoc && hasClass(docblock, "docblock") === false) {
                 return;
             }
 
@@ -2362,6 +2361,7 @@ function defocusSearchBar() {
     (function() {
         var toggle = createSimpleToggle(false);
         var hideMethodDocs = getCurrentValue("rustdoc-auto-hide-method-docs") === "true";
+        var hideImplementors = getCurrentValue("rustdoc-auto-collapse-implementors") !== "false";
         var pageId = getPageId();
 
         var func = function(e) {
@@ -2391,7 +2391,13 @@ function defocusSearchBar() {
             if (hasClass(e, "impl") &&
                 (next.getElementsByClassName("method").length > 0 ||
                  next.getElementsByClassName("associatedconstant").length > 0)) {
-                insertAfter(toggle.cloneNode(true), e.childNodes[e.childNodes.length - 1]);
+                var newToggle = toggle.cloneNode(true);
+                insertAfter(newToggle, e.childNodes[e.childNodes.length - 1]);
+                // In case the option "auto-collapse implementors" is not set to false, we collapse
+                // all implementors.
+                if (hideImplementors === true && e.parentNode.id === "implementors-list") {
+                    collapseDocs(newToggle, "hide", pageId);
+                }
             }
         };