diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2019-05-12 14:52:03 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2019-05-12 16:07:04 +0900 |
commit | ab668396fc449ecba7788338ea4357fc99dde158 (patch) | |
tree | 5821b5053614a0da46a922234adfc63e8edc44f1 /sphinx/transforms/references.py | |
parent | 0d1a66996bf930df37404f9f7cb097407c7673eb (diff) | |
download | sphinx-git-ab668396fc449ecba7788338ea4357fc99dde158.tar.gz |
Fix #6351: "Hyperlink target is not referenced" message is shown even if referenced
Diffstat (limited to 'sphinx/transforms/references.py')
-rw-r--r-- | sphinx/transforms/references.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/sphinx/transforms/references.py b/sphinx/transforms/references.py index de512f437..9cdc28c78 100644 --- a/sphinx/transforms/references.py +++ b/sphinx/transforms/references.py @@ -9,7 +9,7 @@ """ from docutils import nodes -from docutils.transforms.references import Substitutions +from docutils.transforms.references import DanglingReferences, Substitutions from sphinx.transforms import SphinxTransform @@ -31,6 +31,22 @@ class SubstitutionDefinitionsRemover(SphinxTransform): node.parent.remove(node) +class SphinxDanglingReferences(DanglingReferences): + """DanglingReferences transform which does not output info messages.""" + + def apply(self, **kwargs): + # type: (Any) -> None + try: + reporter = self.document.reporter + report_level = reporter.report_level + + # suppress INFO level messages for a while + reporter.report_level = max(reporter.WARNING_LEVEL, reporter.report_level) + super().apply() + finally: + reporter.report_level = report_level + + class SphinxDomains(SphinxTransform): """Collect objects to Sphinx domains for cross references.""" default_priority = 850 @@ -44,6 +60,7 @@ class SphinxDomains(SphinxTransform): def setup(app): # type: (Sphinx) -> Dict[str, Any] app.add_transform(SubstitutionDefinitionsRemover) + app.add_transform(SphinxDanglingReferences) app.add_transform(SphinxDomains) return { |