diff --git a/jedi/api.py b/jedi/api.py index 02440634..5311740a 100644 --- a/jedi/api.py +++ b/jedi/api.py @@ -72,9 +72,14 @@ class Completion(object): @property def doc(self): - """ Returns the docstring `__doc__` for any object """ + """ Return a document string for this completion object. """ try: - return str(self.name.parent().docstr) + parent = self.name.parent() + try: + return '%s\n\n%s' % (parent.get_call_signature(), + parent.docstr) + except AttributeError: + return str(parent.docstr) except AttributeError: return '' diff --git a/jedi/parsing.py b/jedi/parsing.py index 94140fbe..dfb6212e 100644 --- a/jedi/parsing.py +++ b/jedi/parsing.py @@ -385,6 +385,31 @@ class Function(Scope): debug.warning("multiple names in param %s" % n) return n + def get_call_signature(self, width=72): + """ + Generate call signature of this function. + + :param width: Fold lines if a line is longer than this value. + :type width: int + + :rtype: str + """ + l = self.name.names[-1] + '(' + lines = [] + for (i, p) in enumerate(self.params): + code = p.get_code(False) + if i != len(self.params) - 1: + code += ', ' + if len(l + code) > width: + lines.append(l[:-1] if l[-1] == ' ' else l) + l = code + else: + l += code + if l: + lines.append(l) + lines[-1] += ')' + return '\n'.join(lines) + class Flow(Scope): """