@@ -1222,7 +1222,7 @@ function getSearchElement() {
12221222 }
12231223 dst = dst [ 0 ] ;
12241224 if ( window . location . pathname === dst . pathname ) {
1225- addClass ( document . getElementById ( "search" ) , "hidden" ) ;
1225+ addClass ( getSearchElement ( ) , "hidden" ) ;
12261226 removeClass ( main , "hidden" ) ;
12271227 document . location . href = dst . href ;
12281228 }
@@ -2458,7 +2458,7 @@ function getSearchElement() {
24582458 function putBackSearch ( search_input ) {
24592459 if ( search_input . value !== "" ) {
24602460 addClass ( main , "hidden" ) ;
2461- removeClass ( document . getElementById ( "search" ) , "hidden" ) ;
2461+ removeClass ( getSearchElement ( ) , "hidden" ) ;
24622462 if ( browserSupportsHistoryApi ( ) ) {
24632463 history . replaceState ( search_input . value ,
24642464 "" ,
@@ -2557,6 +2557,53 @@ function getSearchElement() {
25572557 }
25582558
25592559 window . addSearchOptions = addSearchOptions ;
2560+
2561+ function buildHelperPopup ( ) {
2562+ var popup = document . createElement ( "aside" ) ;
2563+ addClass ( popup , "hidden" ) ;
2564+ popup . id = "help" ;
2565+
2566+ var container = document . createElement ( "div" ) ;
2567+ var shortcuts = [
2568+ [ "?" , "Show this help dialog" ] ,
2569+ [ "S" , "Focus the search field" ] ,
2570+ [ "↑" , "Move up in search results" ] ,
2571+ [ "↓" , "Move down in search results" ] ,
2572+ [ "↹" , "Switch tab" ] ,
2573+ [ "⏎" , "Go to active search result" ] ,
2574+ [ "+" , "Expand all sections" ] ,
2575+ [ "-" , "Collapse all sections" ] ,
2576+ ] . map ( x => "<dt><kbd>" + x [ 0 ] + "</kbd></dt><dd>" + x [ 1 ] + "</dd>" ) . join ( "" ) ;
2577+ var div_shortcuts = document . createElement ( "div" ) ;
2578+ addClass ( div_shortcuts , "shortcuts" ) ;
2579+ div_shortcuts . innerHTML = "<h2>Keyboard Shortcuts</h2><dl>" + shortcuts + "</dl></div>" ;
2580+
2581+ var infos = [
2582+ "Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to \
2583+ restrict the search to a given type." ,
2584+ "Accepted types are: <code>fn</code>, <code>mod</code>, <code>struct</code>, \
2585+ <code>enum</code>, <code>trait</code>, <code>type</code>, <code>macro</code>, \
2586+ and <code>const</code>." ,
2587+ "Search functions by type signature (e.g., <code>vec -> usize</code> or \
2588+ <code>* -> vec</code>)" ,
2589+ "Search multiple things at once by splitting your query with comma (e.g., \
2590+ <code>str,u8</code> or <code>String,struct:Vec,test</code>)" ,
2591+ "You can look for items with an exact name by putting double quotes around \
2592+ your request: <code>\"string\"</code>" ,
2593+ "Look for items inside another one by searching for a path: <code>vec::Vec</code>" ,
2594+ ] . map ( x => "<p>" + x + "</p>" ) . join ( "" ) ;
2595+ var div_infos = document . createElement ( "div" ) ;
2596+ addClass ( div_infos , "infos" ) ;
2597+ div_infos . innerHTML = "<h2>Search Tricks</h2>" + infos ;
2598+
2599+ container . appendChild ( div_shortcuts ) ;
2600+ container . appendChild ( div_infos ) ;
2601+
2602+ popup . appendChild ( container ) ;
2603+ insertAfter ( popup , getSearchElement ( ) ) ;
2604+ }
2605+
2606+ buildHelperPopup ( ) ;
25602607} ( ) ) ;
25612608
25622609// Sets the focus on the search bar at the top of the page
0 commit comments