From f8add5742d7cb69bedbfd461d3da1d04f61c3a61 Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 8 Jun 2016 08:18:37 -0500 Subject: [PATCH] Make refdoc attribute optional for pending_xref nodes --- sphinx/environment.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/sphinx/environment.py b/sphinx/environment.py index 78b4822ec..fc78816c6 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -1528,9 +1528,9 @@ class BuildEnvironment: typ, target, node, contnode) # really hardwired reference types elif typ == 'any': - newnode = self._resolve_any_reference(builder, node, contnode) + newnode = self._resolve_any_reference(builder, refdoc, node, contnode) elif typ == 'doc': - newnode = self._resolve_doc_reference(builder, node, contnode) + newnode = self._resolve_doc_reference(builder, refdoc, node, contnode) elif typ == 'citation': newnode = self._resolve_citation(builder, refdoc, node, contnode) # no new node found? try the missing-reference event @@ -1578,10 +1578,10 @@ class BuildEnvironment: msg = '%r reference target not found: %%(target)s' % typ self.warn_node(msg % {'target': target}, node, type='ref', subtype=typ) - def _resolve_doc_reference(self, builder, node, contnode): + def _resolve_doc_reference(self, builder, refdoc, node, contnode): # directly reference to document by source name; # can be absolute or relative - docname = docname_join(node['refdoc'], node['reftarget']) + docname = docname_join(refdoc, node['reftarget']) if docname in self.all_docs: if node['refexplicit']: # reference with explicit title @@ -1591,7 +1591,7 @@ class BuildEnvironment: innernode = nodes.inline(caption, caption) innernode['classes'].append('doc') newnode = nodes.reference('', '', internal=True) - newnode['refuri'] = builder.get_relative_uri(node['refdoc'], docname) + newnode['refuri'] = builder.get_relative_uri(refdoc, docname) newnode.append(innernode) return newnode @@ -1614,13 +1614,12 @@ class BuildEnvironment: # transforms.CitationReference.apply. del node['ids'][:] - def _resolve_any_reference(self, builder, node, contnode): + def _resolve_any_reference(self, builder, refdoc, node, contnode): """Resolve reference generated by the "any" role.""" - refdoc = node['refdoc'] target = node['reftarget'] results = [] # first, try resolving as :doc: - doc_ref = self._resolve_doc_reference(builder, node, contnode) + doc_ref = self._resolve_doc_reference(builder, refdoc, node, contnode) if doc_ref: results.append(('doc', doc_ref)) # next, do the standard domain (makes this a priority)