summaryrefslogtreecommitdiff
path: root/sphinx
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2013-09-16 10:34:29 +0200
committerGeorg Brandl <georg@python.org>2013-09-16 10:34:29 +0200
commit58acc275e53aad66555680c4bddc2e8275e16969 (patch)
tree853f11e608e5ae763a7a68f2695e1b5eb1e5434b /sphinx
parent21b6a93b79327bb8b6f9607111ba019a5aa74881 (diff)
downloadsphinx-58acc275e53aad66555680c4bddc2e8275e16969.tar.gz
Fixes #1204: use the correct relative path referring to local intersphinx targets.
Diffstat (limited to 'sphinx')
-rw-r--r--sphinx/ext/intersphinx.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py
index bf528e72..193562b2 100644
--- a/sphinx/ext/intersphinx.py
+++ b/sphinx/ext/intersphinx.py
@@ -33,6 +33,7 @@ from os import path
import re
from docutils import nodes
+from docutils.utils import relative_path
from sphinx.locale import _
from sphinx.builders.html import INVENTORY_FILENAME
@@ -236,6 +237,9 @@ def missing_reference(app, env, node, contnode):
if objtype not in inventory or target not in inventory[objtype]:
continue
proj, version, uri, dispname = inventory[objtype][target]
+ if '://' not in uri and node.get('refdoc'):
+ # get correct path in case of subdirectories
+ uri = path.join(relative_path(node['refdoc'], env.srcdir), uri)
newnode = nodes.reference('', '', internal=False, refuri=uri,
reftitle=_('(in %s v%s)') % (proj, version))
if node.get('refexplicit'):