def get_empty_window(): for w in sublime.windows(): project_data = w.project_data() try: folders = project_data.get('folders', []) if len(folders) == 0 or not folders[0].get('path'): # no project data. co-opt this window return w except Exception as e: print('project_data.get():', str_e(e)) try: folders = w.folders() if len(folders) == 0: # no project data. co-opt this window return w except Exception as e: print(str_e(e))
def _on_create_buf(self, data): super(self.__class__, self)._on_create_buf(data) cb = self.create_buf_cbs.get(data['path']) if not cb: return del self.create_buf_cbs[data['path']] try: cb(data['id']) except Exception as e: print(str_e(e))
def _on_delete_buf(self, data): # TODO: somehow tell the user about this view = self.get_view(data['id']) if view: try: view = view.view view.set_scratch(True) G.WORKSPACE_WINDOW.focus_view(view) G.WORKSPACE_WINDOW.run_command("close_file") except Exception as e: msg.debug('Error closing view: ', str_e(e)) super(self.__class__, self)._on_delete_buf(data)
def update(self, buf, message=True): self.buf = buf if message: msg.log("Floobits synced data for consistency: ", buf["path"]) G.VIEW_TO_HASH[self.view.buffer_id()] = buf["md5"] self.view.set_read_only(False) try: self.view.run_command("floo_view_replace_region", {"r": [0, self.view.size()], "data": buf["buf"]}) if message: self.set_status("Floobits synced data for consistency.") utils.set_timeout(self.erase_status, 5000) except Exception as e: msg.error("Exception updating view: ", str_e(e)) if "patch" not in G.PERMS: self.set_status("You don't have write permission. Buffer is read-only.") self.view.set_read_only(True)
def update(self, buf, message=True): self.buf = buf if message: msg.log('Floobits synced data for consistency: ', buf['path']) G.VIEW_TO_HASH[self.view.buffer_id()] = buf['md5'] self.view.set_read_only(False) try: self.view.run_command('floo_view_replace_region', {'r': [0, self.view.size()], 'data': buf['buf']}) if message: self.set_status('Floobits synced data for consistency.') utils.set_timeout(self.erase_status, 5000) except Exception as e: msg.error('Exception updating view: ', str_e(e)) if 'patch' not in G.PERMS: self.set_status('You don\'t have write permission. Buffer is read-only.') self.view.set_read_only(True)
def delete_buf(self, path, unlink=False): if not utils.is_shared(path): msg.error('Skipping deleting ', path, ' because it is not in shared path ', G.PROJECT_PATH, '.') return if os.path.isdir(path): for dirpath, dirnames, filenames in os.walk(path): # TODO: rexamine this assumption # Don't care about hidden stuff dirnames[:] = [d for d in dirnames if d[0] != '.'] for f in filenames: f_path = os.path.join(dirpath, f) if f[0] == '.': msg.log('Not deleting buf for hidden file ', f_path) else: self.delete_buf(f_path, unlink) return buf_to_delete = self.get_buf_by_path(path) if buf_to_delete is None: msg.error(path, ' is not in this workspace') if unlink: try: path = utils.get_full_path(path) msg.log('deleting ', utils.to_rel_path(path)) utils.rm(path) except Exception as e: msg.debug('Error deleting ', path, ': ', str_e(e)) return msg.log('deleting buffer ', utils.to_rel_path(path)) event = { 'name': 'delete_buf', 'id': buf_to_delete['id'], 'unlink': unlink, } def done(d): self._on_delete_buf(event) self.send(event, done)