From bf71b0b2fad1a802d0cb4a23aa9dfa568fbd9393 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Mon, 26 Jul 2010 19:32:44 +0200 Subject: [PATCH] Fix some naming issues in intersphinx when given an explicit prefix. --- sphinx/ext/intersphinx.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index 4fb3805f9..32226c2ac 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -191,10 +191,12 @@ def missing_reference(app, env, node, contnode): return objtypes = ['%s:%s' % (domain, objtype) for objtype in objtypes] to_try = [(env.intersphinx_inventory, target)] + in_set = None if ':' in target: # first part may be the foreign doc set name setname, newtarget = target.split(':', 1) if setname in env.intersphinx_named_inventory: + in_set = setname to_try.append((env.intersphinx_named_inventory[setname], newtarget)) for inventory, target in to_try: for objtype in objtypes: @@ -204,10 +206,13 @@ def missing_reference(app, env, node, contnode): newnode = nodes.reference('', '', internal=False, refuri=uri, reftitle='(in %s v%s)' % (proj, version)) if dispname == '-': - newnode.append(contnode) - else: - newnode.append(contnode.__class__(dispname, dispname)) + dispname = target + newnode.append(contnode.__class__(dispname, dispname)) return newnode + # at least get rid of the ':' in the target + if in_set is not None: + if len(contnode) and isinstance(contnode[0], nodes.Text): + contnode[0] = nodes.Text(newtarget, contnode[0].rawsource) def setup(app):