Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sphinx-doc/sphinx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2021-01-27 18:56:46 +0300
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2021-01-27 18:56:46 +0300
commitc9480f99433a660942cbd8a739d989cb69fedc36 (patch)
treea5861ecf723184f5a7e6e89ba14433867f2d5e4f /sphinx/domains
parent2ee0338388a54e976c3776c116cdc1080fb62c53 (diff)
parent62dad2f13331d15d94b36b8f125f08fd4304b68b (diff)
Merge branch '3.x'
Diffstat (limited to 'sphinx/domains')
-rw-r--r--sphinx/domains/std.py39
1 files changed, 26 insertions, 13 deletions
diff --git a/sphinx/domains/std.py b/sphinx/domains/std.py
index c4577ba63..8b10c8547 100644
--- a/sphinx/domains/std.py
+++ b/sphinx/domains/std.py
@@ -308,7 +308,7 @@ def make_glossary_term(env: "BuildEnvironment", textnodes: Iterable[Node], index
document.note_explicit_target(term)
std = cast(StandardDomain, env.get_domain('std'))
- std.note_object('term', termtext, node_id, location=term)
+ std._note_term(termtext, node_id, location=term)
# add an index entry too
indexnode = addnodes.index()
@@ -680,6 +680,20 @@ class StandardDomain(Domain):
self.objects[objtype, name] = (docname, labelid)
@property
+ def _terms(self) -> Dict[str, Tuple[str, str]]:
+ """.. note:: Will be removed soon. internal use only."""
+ return self.data.setdefault('terms', {}) # (name) -> docname, labelid
+
+ def _note_term(self, term: str, labelid: str, location: Any = None) -> None:
+ """Note a term for cross reference.
+
+ .. note:: Will be removed soon. internal use only.
+ """
+ self.note_object('term', term, labelid, location)
+
+ self._terms[term.lower()] = (self.env.docname, labelid)
+
+ @property
def progoptions(self) -> Dict[Tuple[str, str], Tuple[str, str]]:
return self.data.setdefault('progoptions', {}) # (program, name) -> docname, labelid
@@ -699,6 +713,9 @@ class StandardDomain(Domain):
for key, (fn, _l) in list(self.objects.items()):
if fn == docname:
del self.objects[key]
+ for key, (fn, _l) in list(self._terms.items()):
+ if fn == docname:
+ del self._terms[key]
for key, (fn, _l, _l) in list(self.labels.items()):
if fn == docname:
del self.labels[key]
@@ -714,6 +731,9 @@ class StandardDomain(Domain):
for key, data in otherdata['objects'].items():
if data[0] in docnames:
self.objects[key] = data
+ for key, data in otherdata['terms'].items():
+ if data[0] in docnames:
+ self._terms[key] = data
for key, data in otherdata['labels'].items():
if data[0] in docnames:
self.labels[key] = data
@@ -947,19 +967,12 @@ class StandardDomain(Domain):
if result:
return result
else:
- for objtype, term in self.objects:
- if objtype == 'term' and term.lower() == target.lower():
- docname, labelid = self.objects[objtype, term]
- logger.warning(__('term %s not found in case sensitive match.'
- 'made a reference to %s instead.'),
- target, term, location=node, type='ref', subtype='term')
- break
+ # fallback to case insentive match
+ if target.lower() in self._terms:
+ docname, labelid = self._terms[target.lower()]
+ return make_refnode(builder, fromdocname, docname, labelid, contnode)
else:
- docname, labelid = '', ''
- if not docname:
return None
- return make_refnode(builder, fromdocname, docname,
- labelid, contnode)
def _resolve_obj_xref(self, env: "BuildEnvironment", fromdocname: str,
builder: "Builder", typ: str, target: str,
@@ -1115,7 +1128,7 @@ def setup(app: "Sphinx") -> Dict[str, Any]:
return {
'version': 'builtin',
- 'env_version': 1,
+ 'env_version': 2,
'parallel_read_safe': True,
'parallel_write_safe': True,
}