From b552c8b29d1165324fd8535d195d0442b2ef1bb4 Mon Sep 17 00:00:00 2001 From: wakensky Date: Fri, 15 Apr 2016 15:50:08 +0800 Subject: [PATCH 1/2] Catch exception while traversing definitions fix issue : https://github.com/DonJayamanne/pythonVSCode/issues/58 --- pythonFiles/completion.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/pythonFiles/completion.py b/pythonFiles/completion.py index aaf16896e9d0..ad1b9f23ce93 100644 --- a/pythonFiles/completion.py +++ b/pythonFiles/completion.py @@ -205,18 +205,21 @@ def _top_definition(definition): _definitions = [] for definition in definitions: - if definition.module_path: - if definition.type == 'import': - definition = _top_definition(definition) - - _definition = { - 'text': definition.name, - 'type': self._get_definition_type(definition), - 'fileName': definition.module_path, - 'line': definition.line - 1, - 'column': definition.column - } - _definitions.append(_definition) + try: + if definition.module_path: + if definition.type == 'import': + definition = _top_definition(definition) + + _definition = { + 'text': definition.name, + 'type': self._get_definition_type(definition), + 'fileName': definition.module_path, + 'line': definition.line - 1, + 'column': definition.column + } + _definitions.append(_definition) + except Exception as e: + pass return json.dumps({'id': identifier, 'results': _definitions}) def _serialize_usages(self, usages, identifier=None): From be50b5de20daaa75d07f39921c3bdea9b9bdb2ad Mon Sep 17 00:00:00 2001 From: wakensky Date: Sun, 17 Apr 2016 13:19:16 +0800 Subject: [PATCH 2/2] Enable all_scopes for jedi.api.name while listing all symbols within a python source file fix ISSUE: https://github.com/DonJayamanne/pythonVSCode/issues/75 --- pythonFiles/completion.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pythonFiles/completion.py b/pythonFiles/completion.py index ad1b9f23ce93..866a527c36a4 100644 --- a/pythonFiles/completion.py +++ b/pythonFiles/completion.py @@ -281,7 +281,8 @@ def _process_request(self, request): return self._write_response(self._serialize_definitions( jedi.api.names( source=request['source'], - path=request.get('path', '')), + path=request.get('path', ''), + all_scopes=True), request['id'])) script = jedi.api.Script(