summary refs log tree commit diff
path: root/src/librustdoc/html/static/js/search.js
AgeCommit message (Collapse)AuthorLines
2023-01-14rustdoc: simplify JS search routine by not messing with lev distanceMichael Howell-50/+64
Since the sorting function accounts for an `index` field, there's not much reason to also be applying changes to the levenshtein distance. Instead, we can just not treat `lev` as a filter if there's already a non-sentinel value for `index`. This change gives slightly more weight to the index and path part, as search criteria, than it used to. This changes some of the test cases, but not in any obviously-"worse" way, and, in particular, substring matches are a bigger deal than levenshtein distances (we're assuming that a typo is less likely than someone just not typing the entire name). Based on https://github.com/rust-lang/rust/pull/103710#issuecomment-1296894296
2022-12-22rustdoc: use a more evocative name for CSS/JS `#titles`Michael Howell-8/+8
This renames the ID, which is only used in search results, to `#search-tabs`. Also changes the `.count` to a span, so it doesn't need its display mode to be overridden.
2022-11-28Add sentence when rustdoc search is runningGuillaume Gomez-4/+6
2022-11-14rustdoc: fix corner case in search keyboard commandsMichael Howell-0/+1
2022-11-04rustdoc: get rid of CSS/DOM `div.desc span`, which isn't really neededMichael Howell-3/+1
2022-11-04rustdoc: simplify search results CSS and DOMMichael Howell-4/+2
There is a layout change caused by this commit, but it's subtle. You won't notice it unless you're looking for it.
2022-08-10Improve crate selection on rustdoc search results pageFrank Steffahn-22/+9
Resolves all of issue #93240 Reproduces a similar change as #99086, but with improvements In particular, this PR inlcludes: * redesigning the crate-search selector so the background color matches its surroundings * decrease the font of the dropdown menu to a reaonable size * add a hover effect * make the color of the arrow theme-dependent, using a surrounding div, with :after pseudo-element that can then be transformed using CSS filters to approximate the desired color * fix the text "in" to match the title font * remove the "for xyz" in the "Results for xyz in [All crates]" title when searching for search term "xyz"; you can already see what you're searching for as it's typed in the search bar! * in line with #99086, handle super-long crate names appropriately without a long <select> element escaping the screen area; the improvement is that we also keep the title within a single line now; uses some flex layout shenanigans... * the margins / paddings are adjusted so the selected label of the <select> fits within the rest of that title nicely; also some inconsistency in the way that Firefox renders a <select> with "appearance: none" (roughly 4px more padding left and right of the text than e.g. Chrome) is worked around, and it now produces a result that looks (essentially) identical to Chrome * the color of the help menu and settings menu border in light theme is made to match with the color of the corresponding buttons, like they do (match) in the ayu theme * the casing of "All crates" changes to "all crates" * the new tests from #99086 are temporarily disabled, until they can be adapted later
2022-06-27Add comments, fixes for `0` sentinelMichael Howell-4/+3
2022-06-27Put back, fix ()-output optimizationMichael Howell-1/+1
2022-06-27Add documentationMichael Howell-1/+34
2022-06-24rustdoc: reference function signature types from the `p` arrayMichael Howell-35/+96
This reduces the size of the function signature index, because it's common to have many functions that operate on the same types. $ wc -c search-index-old.js search-index-new.js 5224374 search-index-old.js 3932314 search-index-new.js By my math, this reduces the uncompressed size of the search index by 32%. On compressed signatures, the wins are less drastic, a mere 8%: $ wc -c search-index-old.js.gz search-index-new.js.gz 404532 search-index-old.js.gz 371635 search-index-new.js.gz
2022-06-20Improve loading of crates.js and sidebar-items.jsJacob Hoffman-Andrews-2/+3
Now that the "All Crates" dropdown is only rendered on the search results page, there is no need to load crates.js on most pages. Load it only on crate pages. Also, add the `defer` attribute so it does not block page rendering. For sidebar-items.js, move the script tag to `<head>`. Since it already has the defer attribute it won't block loading. The defer attribute does preserve ordering between scripts, so instead of the callback on load, it can set a global variable on load, which is slightly simpler. Also, since it is required to finish rendering the page, beginning its load earlier is better. Remove generation and handling of sidebar-vars. Everything there can be computed with information available in JS via other means. Remove the "other" wrapper in the sidebar. It was unnecessary. Remove excess script fields
2022-06-18Remove weird JS conditionGuillaume Gomez-4/+1
2022-05-27Add "eqeqeq" eslint ruleGuillaume Gomez-4/+4
2022-05-18Rollup merge of #97113 - GuillaumeGomez:search-ui-fixes, r=notriddleYuki Okushi-1/+1
Search GUI fixes The first fix is about the duplicated "in": ![Screenshot from 2022-05-17 13-25-53](https://user-images.githubusercontent.com/3050060/168814186-a4e9064f-4325-469c-8bf6-46ea2737a24f.png) The second fix is about the `<select>` broken style: ![Screenshot from 2022-05-17 13-37-03](https://user-images.githubusercontent.com/3050060/168814182-b1c5ae66-d8cf-4fd5-a227-5aa8cd8453ab.png) ![Screenshot from 2022-05-17 13-36-55](https://user-images.githubusercontent.com/3050060/168814184-be9e56f8-fad4-477c-899e-9abff4d4910c.png) You can test it [here](https://rustdoc.crud.net/imperio/search-ui-fixes/doc/foo/index.html?search=test). r? `@notriddle`
2022-05-17rustdoc: make search.js a moduleJacob Hoffman-Andrews-46/+66
Previously, search.js relied on the DOM and the `window` object. It can now be loaded in the absence of the DOM, for instance by Node. The same is true of search-index.js. This allows removing a lot of code from src/tools/rustdoc-js/tester.js that tried to parse search.js and extract specific functions that were needed for testing.
2022-05-17Fix duplicated "in" in the search result textGuillaume Gomez-1/+1
2022-05-15Add new eslint rule about brace styleGuillaume Gomez-28/+45
2022-05-12rustdoc: fix GUI crash when searching for magic JS property valuesMichael Howell-2/+2
2022-05-11Rollup merge of #96879 - notriddle:notriddle/search-ranking, r=GuillaumeGomezYuki Okushi-1/+1
rustdoc: search result ranking fix # Before ![image](https://user-images.githubusercontent.com/1593513/167477286-91049761-67f9-4a73-8fb7-09dbb19ca76c.png) # After ![image](https://user-images.githubusercontent.com/1593513/167477345-6733bc0f-4bb2-4625-9f7f-094031e36414.png)
2022-05-09rustdoc: search result ranking fixMichael Howell-1/+1
2022-05-08Remove unused param from search.js::checkPathMichael Howell-2/+2
2022-05-07Enforce quote rule for JS source codeGuillaume Gomez-13/+14
2022-05-07Change eslint rules from configuration comments to configuration filesFolyd-4/+0
2022-05-06Rollup merge of #96748 - GuillaumeGomez:reexports-in-search, r=notriddleGuillaume Gomez-0/+3
Fixes reexports in search Fixes #96681. At some point we stopped reexporting items in search so this PR fixes it. It also adds a regression test. r? ```@notriddle```
2022-05-06Rollup merge of #96590 - notriddle:notriddle/tab-bar-fn-search, ↵Guillaume Gomez-25/+44
r=GuillaumeGomez,jsha rustdoc: when running a function-signature search, tweak the tab bar # Before ![In Names (7) / In Parameters (0) / In Return types (0)](https://user-images.githubusercontent.com/1593513/166122875-ffdeafe6-8d4d-4e61-84a6-f5986b50ac35.png) # After ![In Function Signature (7)](https://user-images.githubusercontent.com/1593513/166122883-9a3d7515-3235-4ee3-8c4b-5401d109e099.png)
2022-05-06Fix reexports missing from the search indexGuillaume Gomez-0/+3
2022-05-05rustdoc: fix JS error when rendering parse errorMichael Howell-0/+4
2022-05-05rustdoc: fix keyboard shortcuts and console log on search pageMichael Howell-12/+24
2022-05-05rustdoc: change the "In Function Signatures" to context-sensitiveMichael Howell-1/+5
* If it's just `-> a`, use "In Function Return Types" * If it's just `a b`, use "In Function Parameters" * Otherwise, still use "In Function Signatures"
2022-05-05rustdoc: when running a function-signature search, tweak the tab barMichael Howell-13/+12
2022-05-05Use "strict" mode in JS scriptsGuillaume Gomez-1/+3
2022-05-04Move callback to the () => {} syntax.Folyd-23/+23
Fix lint Fix main.js Restore anonymous functions Fix Fix more
2022-04-30Move settings into full JSGuillaume Gomez-8/+8
2022-04-29Rollup merge of #96390 - GuillaumeGomez:es6-part2, r=notriddleDylan DPC-5/+4
Switch JS code to ES6 - part 2 Part of #93058. It's based on https://github.com/rust-lang/rust/pull/96361 so it needs to wait for it to be merged first. r? `@notriddle`
2022-04-26Small JS code improvementsGuillaume Gomez-5/+4
2022-04-26Update rustdoc search parser to handle `!` correctlyGuillaume Gomez-2/+13
2022-04-24Update search.js to ES6Guillaume Gomez-218/+207
2022-04-20Extend `handleSingleArg` documentationGuillaume Gomez-0/+4
2022-04-18Correctly handle single `:`Guillaume Gomez-10/+6
2022-04-18Add an extra check over filter typeGuillaume Gomez-3/+30
2022-04-18Fix some corner casesGuillaume Gomez-5/+3
2022-04-18Parse idents the same way in both quote string elements and "normal" elementsGuillaume Gomez-32/+44
2022-04-18Remove unnecessary `elem.name.length === 0` since the rustdoc search eBNF ↵Guillaume Gomez-1/+1
does not allow elements without a name
2022-04-18Update the eBNF to allow generics bracket to not be closed if it's EOFGuillaume Gomez-1/+1
2022-04-18Handle separators in their own functions and fix missing handling of tabsGuillaume Gomez-3/+18
2022-04-18Improve the BNF description a bit and fix some issuesGuillaume Gomez-18/+44
2022-04-18Forbid rustdoc search query to end with ->Guillaume Gomez-0/+3
2022-04-18Add isIdentCharacter function to ensure that unexpected characters are ↵Guillaume Gomez-10/+29
handled correctly
2022-04-18Replace unneeded use of regex with a simple ifGuillaume Gomez-1/+4