diff --git a/CHANGES b/CHANGES index 846bee53a..87e63d561 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,7 @@ Features added -------------- * #6707: C++, support bit-fields. +* #267: html: Eliminate prompt characters of doctest block from copyable text Bugs fixed ---------- diff --git a/sphinx/themes/basic/static/basic.css_t b/sphinx/themes/basic/static/basic.css_t index 1c278e88b..354267567 100644 --- a/sphinx/themes/basic/static/basic.css_t +++ b/sphinx/themes/basic/static/basic.css_t @@ -672,6 +672,10 @@ div.code-block-caption + div > div.highlight > pre { margin-top: 0; } +div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; +} + div.code-block-caption span.caption-number { padding: 0.1em 0.3em; font-style: italic; diff --git a/sphinx/transforms/__init__.py b/sphinx/transforms/__init__.py index a4e6e52bf..bd3b4eeab 100644 --- a/sphinx/transforms/__init__.py +++ b/sphinx/transforms/__init__.py @@ -283,6 +283,16 @@ class UnreferencedFootnotesDetector(SphinxTransform): location=node) +class DoctestTransform(SphinxTransform): + """Set "doctest" style to each doctest_block node""" + default_priority = 500 + + def apply(self, **kwargs): + # type: (Any) -> None + for node in self.document.traverse(nodes.doctest_block): + node['classes'].append('doctest') + + class FigureAligner(SphinxTransform): """ Align figures to center by default. @@ -425,6 +435,7 @@ def setup(app): app.add_transform(MoveModuleTargets) app.add_transform(HandleCodeBlocks) app.add_transform(SortIds) + app.add_transform(DoctestTransform) app.add_transform(FigureAligner) app.add_transform(AutoNumbering) app.add_transform(AutoIndexUpgrader)