From 9cd3e1a38925ee4db4b787ad81a2e3605aa5b15d Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 28 Oct 2020 01:44:18 +0900 Subject: [PATCH] Fix #8342: Emit a warning if a unknown domain is given for directive or role Currently, Sphinx mention nothing if users use unknown domain in their documents (ex. `.. unknown:directive::`, `:unknown:role` and so on). This starts to warn them to be clear non acceptable mark-ups. refs: #8342 --- CHANGES | 3 +++ sphinx/util/docutils.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/CHANGES b/CHANGES index ee9fb422d..270163833 100644 --- a/CHANGES +++ b/CHANGES @@ -41,6 +41,9 @@ Features added Bugs fixed ---------- +* #8342: Emit a warning if a unknown domain is given for directive or role (ex. + ``:unknown:doc:``) + Testing -------- diff --git a/sphinx/util/docutils.py b/sphinx/util/docutils.py index 161575cbd..8ca38bac2 100644 --- a/sphinx/util/docutils.py +++ b/sphinx/util/docutils.py @@ -28,6 +28,7 @@ from docutils.statemachine import StateMachine, State, StringList from docutils.utils import Reporter, unescape from sphinx.errors import SphinxError +from sphinx.locale import _ from sphinx.util import logging from sphinx.util.typing import RoleFunction @@ -208,6 +209,8 @@ class sphinx_domains: element = getattr(domain, type)(name) if element is not None: return element, [] + else: + logger.warning(_('unknown directive or role name: %s:%s'), domain_name, name) # else look in the default domain else: def_domain = self.env.temp_data.get('default_domain')