def do_complete(self, data): completion = loads(data) source = completion.pop('source') pos = completion.pop('pos') try: script = Interpreter(source, [ self.current_locals, self.get_globals()], **completion) with timeout_of(.75): completions = script.completions() except Exception: self.db.send('Suggest') self.notify_exc('Completion failed for %s' % data) return try: with timeout_of(.25): funs = script.call_signatures() or [] except Exception: self.db.send('Suggest') self.notify_exc('Completion of function failed for %s' % data) return before = source[:pos] after = source[pos:] like = '' if len(completions): completion = completions[0] base = completion.name[ :len(completion.name) - len(completion.complete)] if len(base): like = before[-len(base):] if len(like): before = before[:-len(like)] try: suggest_obj = { 'data': { 'start': before, 'end': after, 'like': like }, 'params': [{ 'params': [p.description.replace('\n', '') for p in fun.params], 'index': fun.index, 'module': fun.module_name, 'call_name': fun.name} for fun in funs], 'completions': [{ 'base': comp.name[ :len(comp.name) - len(comp.complete)], 'complete': comp.complete, 'description': comp.description } for comp in completions if comp.name.endswith( comp.complete)] } self.db.send('Suggest|%s' % dump(suggest_obj)) except Exception: self.db.send('Suggest') self.notify_exc('Completion generation failed for %s' % data)
def do_complete(self, data): script = Interpreter(data, [self.current_locals, self.get_globals()]) try: with timeout_of(.75): completions = script.completions() except Exception: self.db.send('Suggest') self.notify_exc('Completion failed for %s' % data) return try: with timeout_of(.25): funs = script.call_signatures() or [] except Exception: self.db.send('Suggest') self.notify_exc('Completion of function failed for %s' % data) return try: suggest_obj = { 'params': [{ 'params': [p.get_code().replace('\n', '') for p in fun.params], 'index': fun.index, 'module': fun.module_name, 'call_name': fun.name } for fun in funs], 'completions': [{ 'base': comp.name[:len(comp.name) - len(comp.complete)], 'complete': comp.complete, 'description': comp.description } for comp in completions if comp.name.endswith(comp.complete)] } self.db.send('Suggest|%s' % dump(suggest_obj)) except Exception: self.db.send('Suggest') self.notify_exc('Completion generation failed for %s' % data)
def do_complete(self, data): script = Interpreter(data, [self.current_locals, self.get_globals()]) try: with timeout_of(.75): completions = script.completions() except Exception: self.db.send('Suggest') self.notify_exc('Completion failed for %s' % data) return try: with timeout_of(.25): funs = script.call_signatures() or [] except Exception: self.db.send('Suggest') self.notify_exc('Completion of function failed for %s' % data) return try: suggest_obj = { 'params': [{ 'params': [p.get_code().replace('\n', '') for p in fun.params], 'index': fun.index, 'module': fun.module_name, 'call_name': fun.name} for fun in funs], 'completions': [{ 'base': comp.name[ :len(comp.name) - len(comp.complete)], 'complete': comp.complete, 'description': comp.description } for comp in completions if comp.name.endswith( comp.complete)] } self.db.send('Suggest|%s' % dump(suggest_obj)) except Exception: self.db.send('Suggest') self.notify_exc('Completion generation failed for %s' % data)
def do_complete(self, data): completion = loads(data) source = completion.pop('source') pos = completion.pop('pos') try: script = Interpreter( source, [self.current_locals, self.get_globals()], **completion) with timeout_of(.75): completions = script.completions() except Exception: self.db.send('Suggest') self.notify_exc('Completion failed for %s' % data) return try: with timeout_of(.25): funs = script.call_signatures() or [] except Exception: self.db.send('Suggest') self.notify_exc('Completion of function failed for %s' % data) return before = source[:pos] after = source[pos:] like = '' if len(completions): completion = completions[0] base = completion.name[:len(completion.name) - len(completion.complete)] if len(base): like = before[-len(base):] if len(like): before = before[:-len(like)] try: suggest_obj = { 'data': { 'start': before, 'end': after, 'like': like }, 'params': [{ 'params': [p.description.replace('\n', '') for p in fun.params], 'index': fun.index, 'module': fun.module_name, 'call_name': fun.name } for fun in funs], 'completions': [{ 'base': comp.name[:len(comp.name) - len(comp.complete)], 'complete': comp.complete, 'description': comp.description } for comp in completions if comp.name.endswith(comp.complete)] } self.db.send('Suggest|%s' % dump(suggest_obj)) except Exception: self.db.send('Suggest') self.notify_exc('Completion generation failed for %s' % data)