def index_view(self, view): databases = view.settings().get('pytags_databases') if not databases: return if view.window(): project_folders = view.window().folders() else: # This sometimes happens, no idea when/why. project_folders = [] async_worker.schedule(self.async_index_view, view.file_name(), databases, project_folders)
def search(self, symbol): def async_search(databases): symdb.set_databases(databases) results = symdb.query_occurrences(symbol) ui_worker.schedule(handle_results, results) def handle_results(results): if len(results) > 1: self.ask_user_result(results) elif results: # len(results) == 1 self.goto(results[0]) else: message_dialog('Symbol "{0}" not found'.format(symbol)) async_worker.schedule(async_search, self.view.settings().get('pytags_databases'))
def run(self, edit, action='update'): if action == 'cancel': self.__class__.index_in_progress = False return if action == 'update': rebuild = False elif action == 'rebuild': rebuild = True else: raise ValueError('action must be one of {"cancel", "update", ' '"rebuild"}') self.__class__.index_in_progress = True async_worker.schedule(self.async_process_files, self.view.settings().get('pytags_databases', []), self.view.window().folders(), rebuild)