diff --git a/sphinx/directives.py b/sphinx/directives.py index 16680c6bd..3d17d0a10 100644 --- a/sphinx/directives.py +++ b/sphinx/directives.py @@ -38,12 +38,16 @@ def index_directive(name, arguments, options, content, lineno, indexnode = addnodes.index() indexnode['entries'] = arguments for entry in arguments: - try: - type, string = entry.split(':', 1) - env.note_index_entry(type.strip(), string.strip(), - targetid, string.strip()) - except ValueError: - continue + entry = entry.strip() + for type in entrytypes: + if entry.startswith(type+':'): + value = entry[len(type)+1:].strip() + env.note_index_entry(type, value, targetid, value) + break + # shorthand notation for single entries + else: + for value in entry.split(','): + env.note_index_entry('single', value.strip(), targetid, value.strip()) return [indexnode, targetnode] index_directive.arguments = (1, 0, 1)