From 16b99532ca03bfbcce4e39d04d08cbfb9e8f1323 Mon Sep 17 00:00:00 2001 From: Yoshiki Shibukawa Date: Fri, 19 Aug 2016 17:16:12 +0900 Subject: [PATCH] flatten genindex columns' height --- CHANGES | 1 + sphinx/jinja2glue.py | 22 ++++++++++++++++++++++ sphinx/themes/basic/genindex.html | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 7ce0eb45c..0999e9ea0 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,7 @@ Release 1.4.7 (in development) Bugs fixed ---------- +* #2870: flatten genindex columns' heights. Release 1.4.6 (released Aug 20, 2016) ===================================== diff --git a/sphinx/jinja2glue.py b/sphinx/jinja2glue.py index f3ce87a8c..df1aa490c 100644 --- a/sphinx/jinja2glue.py +++ b/sphinx/jinja2glue.py @@ -35,6 +35,27 @@ def _toint(val): return 0 +def _slice_index(values, slices): + seq = list(values) + length = 0 + for value in values: + length += 1 + len(value[1][1]) # count includes subitems + items_per_slice = length // slices + offset = 0 + for slice_number in range(slices): + count = 0 + start = offset + if slices == slice_number + 1: # last column + offset = len(seq) + else: + for value in values[offset:]: + count += 1 + len(value[1][1]) + offset += 1 + if count >= items_per_slice: + break + yield seq[start:offset] + + def accesskey(context, key): """Helper to output each access key only once.""" if '_accesskeys' not in context: @@ -127,6 +148,7 @@ class BuiltinTemplateLoader(TemplateBridge, BaseLoader): extensions=extensions) self.environment.filters['tobool'] = _tobool self.environment.filters['toint'] = _toint + self.environment.filters['slice_index'] = _slice_index self.environment.globals['debug'] = contextfunction(pformat) self.environment.globals['accesskey'] = contextfunction(accesskey) self.environment.globals['idgen'] = idgen diff --git a/sphinx/themes/basic/genindex.html b/sphinx/themes/basic/genindex.html index fac7f1899..c72d980b3 100644 --- a/sphinx/themes/basic/genindex.html +++ b/sphinx/themes/basic/genindex.html @@ -44,7 +44,7 @@ {%- for key, entries in genindexentries %}

{{ key }}

- {%- for column in entries|slice(2) if column %} + {%- for column in entries|slice_index(2) if column %}
{%- for entryname, (links, subitems, _) in column %} {{ indexentries(entryname, links) }}