From d8c601b4cd6ba21ee005810b81e03bef3bd0fd6a Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Fri, 21 Mar 2008 14:00:34 +0000 Subject: [PATCH] * Allow the ~ prefix on module xrefs. * The parse function for custom descitems must return the full name for x-refing. --- sphinx/directives.py | 10 ++++++---- sphinx/roles.py | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/sphinx/directives.py b/sphinx/directives.py index 824b98c60..322509ff4 100644 --- a/sphinx/directives.py +++ b/sphinx/directives.py @@ -321,18 +321,20 @@ def desc_directive(desctype, arguments, options, content, lineno, # another registered generic x-ref directive rolename, indextext, parse_node = additional_xref_types[desctype] if parse_node: - parse_node(sig, signode) + fullname = parse_node(sig, signode) else: signode.clear() signode += addnodes.desc_name(sig, sig) + fullname = sig if not noindex: - targetname = '%s-%s' % (rolename, sig) + targetname = '%s-%s' % (rolename, fullname) signode['ids'].append(targetname) state.document.note_explicit_target(signode) if indextext: - env.note_index_entry('pair', '%s; %s' % (indextext, sig), + env.note_index_entry('pair', + '%s; %s' % (indextext, fullname), targetname, targetname) - env.note_reftarget(rolename, sig, targetname) + env.note_reftarget(rolename, fullname, targetname) # don't use object indexing below continue except ValueError, err: diff --git a/sphinx/roles.py b/sphinx/roles.py index 9f4a45cd6..7665340d4 100644 --- a/sphinx/roles.py +++ b/sphinx/roles.py @@ -120,8 +120,9 @@ def xfileref_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): # we want a cross-reference, create the reference node pnode = addnodes.pending_xref(rawtext, reftype=typ, refcaption=False, modname=env.currmodule, classname=env.currclass) + innertext = text # special actions for Python object cross-references - if typ in ('data', 'exc', 'func', 'class', 'const', 'attr', 'meth'): + if typ in ('data', 'exc', 'func', 'class', 'const', 'attr', 'meth', 'mod'): # if the first character is a dot, search more specific namespaces first # else search builtins first if text[0:1] == '.': @@ -134,7 +135,6 @@ def xfileref_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): dot = text.rfind('.') if dot != -1: innertext = text[dot+1:] - innertext = text # look if explicit title and target are given brace = text.find('<') if brace != -1: