diff --git a/docs/admin/engines/configured_engines.rst b/docs/admin/engines/configured_engines.rst index dabd35011..0060d1b74 100644 --- a/docs/admin/engines/configured_engines.rst +++ b/docs/admin/engines/configured_engines.rst @@ -43,7 +43,11 @@ Explanation of the :ref:`general engine configuration` shown in the table * - `{{name}} <{{mod.about and mod.about.website}}>`_ - ``!{{mod.shortcut}}`` - - :origin:`{{mod.__name__}} ` + - {%- if 'searx.engines.' + mod.__name__ in documented_modules %} + :py:mod:`~searx.engines.{{mod.__name__}}` + {%- else %} + :origin:`{{mod.__name__}} ` + {%- endif %} - {{(mod.disabled and "y") or ""}} {%- if mod.about and mod.about.language %} ({{mod.about.language | upper}}) diff --git a/docs/conf.py b/docs/conf.py index a319762e2..560e3daf8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -58,6 +58,25 @@ jinja_filters = { ) } +# Let the Jinja template in configured_engines.rst access documented_modules +# to automatically link documentation for modules if it exists. +def setup(app): + ENGINES_DOCNAME = 'admin/engines/configured_engines' + + def before_read_docs(app, env, docnames): + assert ENGINES_DOCNAME in docnames + docnames.remove(ENGINES_DOCNAME) + docnames.append(ENGINES_DOCNAME) + # configured_engines must come last so that sphinx already has + # discovered the python module documentations + + def source_read(app, docname, source): + if docname == ENGINES_DOCNAME: + jinja_contexts['searx']['documented_modules'] = app.env.domains['py'].modules + + app.connect('env-before-read-docs', before_read_docs) + app.connect('source-read', source_read) + # usage:: lorem :patch:`f373169` ipsum extlinks = {}