python / python-docs-theme

Sphinx theme for Python documentation
Other
75 stars 58 forks source link

Enable search shortcuts #135

Closed miketheman closed 1 year ago

miketheman commented 1 year ago

Enable already-existing JavaScript flag.

Included since Sphinx 4.5.0 https://www.sphinx-doc.org/en/master/changes.html#release-4-5-0-released-mar-28-2022

The doctools.js file that is served today includes the functionality - look for DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS

I think that the only piece needed is setting the config option enable_search_shortcuts = True in https://github.com/python/python-docs-theme/blob/4dbc102a556c520b10fc387821967e54dee77654/python_docs_theme/theme.conf

We inherit from default theme, which inherits classic, which inherits basic theme.

Alternative to #131

cpython-cla-bot[bot] commented 1 year ago

All commit authors signed the Contributor License Agreement.
CLA signed

miketheman commented 1 year ago

Sadly, this doesn't work 100% because we create multiple searchbox elements per page with our own layout.

https://github.com/python/python-docs-theme/blob/4dbc102a556c520b10fc387821967e54dee77654/python_docs_theme/layout.html#L51 https://github.com/python/python-docs-theme/blob/4dbc102a556c520b10fc387821967e54dee77654/python_docs_theme/layout.html#L110 (there's one more, I haven't hunted it down yet)

I'm guessing this would be a little more involved in restructuring the layout template to reduce the duplication, and thus enable taking advantage of their already-supplied functionality. If there's appetite for that, I'll pursue it.

hugovk commented 1 year ago

Alternative to #131

Nice, I didn't know this was a Sphinx option, I'd prefer to use this than the custom JavaScript in #131. (Although there's not much JS in there.)

https://www.sphinx-doc.org/en/master/usage/theming.html says:

enable_search_shortcuts (true or false): Allow jumping to the search box with / and allow removal of search highlighting with Esc.

Defaults to True.

Does it really default to True?

We don't have / jumping, but we do have Esc clearing. Where is the Esc coming from?

miketheman commented 1 year ago

Turns out, it does default to True, so this PR is also unnecessary! That's why the Esc key works already.

Pressing the slash key today does in fact work, however it places the focus on the hidden mobile nav search box since it appears first in the HTML.

🤔

I wonder if we still need an explicit mobile nav, or if the signature could be changed so it still works correctly but does not appear first in the selector.

miketheman commented 1 year ago

Even simpler! https://github.com/python/python-docs-theme/pull/141