diff options
Diffstat (limited to 'scripts/gen_vimdoc.py')
-rwxr-xr-x | scripts/gen_vimdoc.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/scripts/gen_vimdoc.py b/scripts/gen_vimdoc.py index a62d18f02e..cdcab817ad 100755 --- a/scripts/gen_vimdoc.py +++ b/scripts/gen_vimdoc.py @@ -139,7 +139,7 @@ def is_blank(text): return '' == clean_lines(text) -def get_text(parent): +def get_text(parent, preformatted=False): """Combine all text in a node.""" if parent.nodeType == parent.TEXT_NODE: return parent.data @@ -147,9 +147,9 @@ def get_text(parent): out = '' for node in parent.childNodes: if node.nodeType == node.TEXT_NODE: - out += clean_text(node.data) + out += node.data if preformatted else clean_text(node.data) elif node.nodeType == node.ELEMENT_NODE: - out += ' ' + get_text(node) + out += ' ' + get_text(node, preformatted) return out @@ -219,6 +219,14 @@ def doc_wrap(text, prefix='', width=70, func=False, indent=None): return result +def has_nonexcluded_params(nodes): + """Returns true if any of the given <parameterlist> elements has at least + one non-excluded item.""" + for n in nodes: + if render_params(n) != '': + return True + + def render_params(parent, width=62): """Renders Doxygen <parameterlist> tag as Vim help text.""" name_length = 0 @@ -263,6 +271,10 @@ def render_node(n, text, prefix='', indent='', width=62): text += doc_wrap(n.data, indent=indent, width=width) elif n.nodeName == 'computeroutput': text += ' `{}` '.format(get_text(n)) + elif n.nodeName == 'preformatted': + o = get_text(n, preformatted=True) + ensure_nl = '' if o[-1] == '\n' else '\n' + text += ' >{}{}\n<'.format(ensure_nl, o) elif is_inline(n): for c in n.childNodes: text += render_node(c, text) @@ -356,7 +368,7 @@ def render_para(parent, indent='', width=62): chunks = [text] # Generate text from the gathered items. - if len(groups['params']) > 0: + if len(groups['params']) > 0 and has_nonexcluded_params(groups['params']): chunks.append('\nParameters: ~') for child in groups['params']: chunks.append(render_params(child, width=width)) |