Here, if !search_config.copy_js, then index is not used, so the above expensive computation is wasted.
More importantly, since the search index is not written, the search feature does not work.
That is, search is only enabled if search_config.enable && search_config.copy_js, instead of the intended behavior of just depending on search_config.enable.
Add the CDN links of the search JS to the index.hbs file and enable them when search_config.enable && !search_config.copy_js.
Correct create_files to write the index JSON file when !search_config.copy_js.
However, if !search_config.copy_js disabling the search entirely is the intended behavior (which would be weird), then maybe we should just get rid of it and fully rely on search_config.enable.
Problem
https://github.com/rust-lang/mdBook/blob/3bdcc0a5a6f3c85dd751350774261dbc357b02bd/src/renderer/html_handlebars/search.rs#L42-L54
Here, if
!search_config.copy_js
, thenindex
is not used, so the above expensive computation is wasted.More importantly, since the search index is not written, the search feature does not work. That is, search is only enabled if
search_config.enable && search_config.copy_js
, instead of the intended behavior of just depending onsearch_config.enable
.Steps
N/A
Possible Solution(s)
The name
copy_js
seems to suggest the use of a CDN if set to false, however, looking at https://github.com/rust-lang/mdBook/blob/3bdcc0a5a6f3c85dd751350774261dbc357b02bd/src/theme/index.hbs#L311, the links to a CDN seems to be missing. If so, then the solution would be:index.hbs
file and enable them whensearch_config.enable && !search_config.copy_js
.create_files
to write the index JSON file when!search_config.copy_js
.However, if
!search_config.copy_js
disabling the search entirely is the intended behavior (which would be weird), then maybe we should just get rid of it and fully rely onsearch_config.enable
.Notes
Additionally, the search index is unnecessarily duplicated in both
searchindex.json
andsearchindex.js
, which are sequentially tentatively queried bysearcher.js
.Version