diff --git a/docs/_templates/genindex.html b/docs/_templates/genindex.html index 4faf370cc..a5f2262ff 100644 --- a/docs/_templates/genindex.html +++ b/docs/_templates/genindex.html @@ -17,10 +17,11 @@ key = key.substr(12); // discord.ext. } - if(el.textContent.endsWith('method)') || el.textContent.indexOf('()') !== -1) { + if(el.textContent.indexOf('()') !== -1) { key = key + '()' } el.textContent = key; } + document.querySelectorAll("td").forEach(el => el.style.width = 'auto'); {% endblock %} diff --git a/docs/conf.py b/docs/conf.py index caf490226..92f11c224 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -31,6 +31,7 @@ sys.path.append(os.path.abspath('extensions')) # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ + 'builder', 'sphinx.ext.autodoc', 'sphinx.ext.extlinks', 'sphinx.ext.intersphinx', diff --git a/docs/extensions/builder.py b/docs/extensions/builder.py new file mode 100644 index 000000000..ec428d8fd --- /dev/null +++ b/docs/extensions/builder.py @@ -0,0 +1,46 @@ +from sphinx.builders.html import StandaloneHTMLBuilder +from sphinx.environment.adapters.indexentries import IndexEntries + +class DPYStandaloneHTMLBuilder(StandaloneHTMLBuilder): + # This is mostly copy pasted from Sphinx. + def write_genindex(self) -> None: + # the total count of lines for each index letter, used to distribute + # the entries into two columns + genindex = IndexEntries(self.env).create_index(self, group_entries=False) + indexcounts = [] + for _k, entries in genindex: + indexcounts.append(sum(1 + len(subitems) + for _, (_, subitems, _) in entries)) + + genindexcontext = { + 'genindexentries': genindex, + 'genindexcounts': indexcounts, + 'split_index': self.config.html_split_index, + } + + if self.config.html_split_index: + self.handle_page('genindex', genindexcontext, + 'genindex-split.html') + self.handle_page('genindex-all', genindexcontext, + 'genindex.html') + for (key, entries), count in zip(genindex, indexcounts): + ctx = {'key': key, 'entries': entries, 'count': count, + 'genindexentries': genindex} + self.handle_page('genindex-' + key, ctx, + 'genindex-single.html') + else: + self.handle_page('genindex', genindexcontext, 'genindex.html') + +def get_builder(app): + """This is necessary because RTD injects their own for some reason.""" + try: + original = app.registry.builders['readthedocs'] + except KeyError: + return DPYStandaloneHTMLBuilder + else: + injected_mro = tuple(base if base is not StandaloneHTMLBuilder else DPYStandaloneHTMLBuilder + for base in original.mro()[1:]) + return type(original.__name__, injected_mro, {'name': 'readthedocs'}) + +def setup(app): + app.add_builder(get_builder(app), override=True)