Anonymous avatar Anonymous committed d5dd34d

* Allow the ~ prefix on module xrefs.
* The parse function for custom descitems must return the full name for x-refing.

Comments (0)

Files changed (2)

sphinx/directives.py

                 # 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:
     # 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] == '.':
             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:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.