diff --git a/pycomplete.py b/pycomplete.py index 3b42b397..40f51597 100755 --- a/pycomplete.py +++ b/pycomplete.py @@ -227,7 +227,7 @@ print 'global names:' names = cmpl.parser.top.get_names() print [n.names for n in names] -print 'global names:' +print 'func names:' names = cmpl.parser.top.subscopes[0].get_names() print [n.names for n in names] diff --git a/pyfuzzyparser.py b/pyfuzzyparser.py index 76efb46c..aa210c74 100644 --- a/pyfuzzyparser.py +++ b/pyfuzzyparser.py @@ -531,10 +531,17 @@ class PyFuzzyParser(object): name = '' names = [] level = 1 + while True: + self._parse_statement() + + while True: + break token_type, tok, indent = self.next() if tok in (')', ',') and level == 1: - if '=' not in name: + if '=' in name: + pass + else: name = name.replace(' ', '') names.append(name.strip()) name = '' @@ -641,7 +648,7 @@ class PyFuzzyParser(object): assign += tok return "%s" % assign - def _parse_statement(self, pre_used_token=None): + def _parse_statement(self, pre_used_token=None, add_break=None): """ Parses statements like: @@ -665,7 +672,10 @@ class PyFuzzyParser(object): else: token_type, tok, indent = self.next() - is_break_token = lambda tok: tok in ['\n', ':', ';'] + breaks = ['\n', ':', ';'] + if add_break: + breaks += add_break + is_break_token = lambda tok: tok in breaks while not is_break_token(tok): set_string = '' diff --git a/test.py b/test.py index d748ca49..034006ca 100644 --- a/test.py +++ b/test.py @@ -38,7 +38,7 @@ class A(): def test(self): return A() class init: - def __init__(self, a): + def __init__(self, a, b=3, c = A()): self.a = a a = A()