def _on_buffer_list_change(self, req): added = req.get('added') or {} for path, text in added.items(): buf = self.get_buf_by_path(path) buf_id = buf and int(buf.get('id')) d = buf and self.agent.on_load.get(buf_id) if d: self.emacs_bufs[path][0] = buf['buf'] else: self.emacs_bufs[path][0] = text if not buf: msg.debug('no buf for path %s' % path) if 'create_buf' in G.PERMS and not ignore.is_ignored(path): self.agent._upload(path, text=text) else: del self.emacs_bufs[path] continue view = self.views.get(buf_id) if view is None: self.get_view(buf_id) elif view.is_loading(): view._emacs_buf = self.emacs_bufs[path] else: msg.debug( 'view for buf %s already exists. this is not good. we got out of sync' % buf['path']) if d: del self.agent.on_load[buf_id] for _, f in d.items(): f() deleted = req.get('deleted') or [] for path in deleted: if self.emacs_bufs.get(path) is None: msg.debug( 'emacs deleted %s but we already deleted it from emacs_bufs' % path) del self.emacs_bufs[path] buf = self.get_buf_by_path(path) if buf: del self.views[buf['id']] seen = set() current = req.get('current') or [] for path in current: if self.emacs_bufs.get(path) is None: msg.debug( 'We should have buffer %s in emacs_bufs but we don\'t' % path) else: seen.add(path) for buf_id, view in self.views.items(): if utils.get_full_path(view.buf['path']) not in seen: msg.debug( 'We should not have buffer %s in our views but we do.' % view.buf['path'])
def _on_buffer_list_change(self, req): added = req.get('added') or {} for path, text in added.items(): buf = self.get_buf_by_path(path) buf_id = buf and int(buf.get('id')) d = buf and self.agent.on_load.get(buf_id) if d: self.emacs_bufs[path][0] = buf['buf'] else: self.emacs_bufs[path][0] = text if not buf: msg.debug('no buf for path %s' % path) if 'create_buf' in G.PERMS and not ignore.is_ignored(path): self.agent._upload(path, text=text) else: del self.emacs_bufs[path] continue view = self.views.get(buf_id) if view is None: self.get_view(buf_id) elif view.is_loading(): view._emacs_buf = self.emacs_bufs[path] else: msg.debug('view for buf %s already exists. this is not good. we got out of sync' % buf['path']) if d: del self.agent.on_load[buf_id] for _, f in d.items(): f() deleted = req.get('deleted') or [] for path in deleted: if self.emacs_bufs.get(path) is None: msg.debug('emacs deleted %s but we already deleted it from emacs_bufs' % path) del self.emacs_bufs[path] buf = self.get_buf_by_path(path) if buf: del self.views[buf['id']] seen = set() current = req.get('current') or [] for path in current: if self.emacs_bufs.get(path) is None: msg.debug('We should have buffer %s in emacs_bufs but we don\'t' % path) else: seen.add(path) for buf_id, view in self.views.items(): if utils.get_full_path(view.buf['path']) not in seen: msg.debug('We should not have buffer %s in our views but we do.' % view.buf['path'])
def _on_buffer_list_change(self, req): added = req.get("added") or {} msg.log("buffer_list_change:\n%s" % req) for path, text in added.iteritems(): buf = self.get_buf_by_path(path) self.emacs_bufs[path][0] = text if not buf: msg.debug("no buf for path %s" % path) if "create_buf" in G.PERMS and not ignore.is_ignored(path): self.agent._upload(path, text=text) else: del self.emacs_bufs[path] continue view = self.views.get(buf["id"]) if view is None: self.get_view(buf["id"]) elif view.is_loading(): view._emacs_buf = self.emacs_bufs[path] else: msg.debug("view for buf %s already exists. this is not good. we got out of sync" % buf["path"]) deleted = req.get("deleted") or [] for path in deleted: if self.emacs_bufs.get(path) is None: msg.debug("emacs deleted %s but we already deleted it from emacs_bufs" % path) del self.emacs_bufs[path] buf = self.get_buf_by_path(path) if buf: del self.views[buf["id"]] seen = set() current = req.get("current") or [] for path in current: if self.emacs_bufs.get(path) is None: msg.debug("We should have buffer %s in emacs_bufs but we don't" % path) else: seen.add(path) for buf_id, view in self.views.iteritems(): if utils.get_full_path(view.buf["path"]) not in seen: msg.debug("We should not have buffer %s in our views but we do." % view.buf["path"])
def on_post_save(self, view, agent): view_buf_id = view.buffer_id() def cleanup(): i = self.between_save_events[view_buf_id] i[0] -= 1 if view == G.CHAT_VIEW or view.file_name() == G.CHAT_VIEW_PATH: return i = self.between_save_events[view_buf_id] if agent.ignored_saves[view_buf_id] > 0: agent.ignored_saves[view_buf_id] -= 1 return cleanup() old_name = i[1] i = self.between_save_events[view_buf_id] if i[0] > 1: return cleanup() old_name = i[1] event = None buf = get_buf(view) try: name = utils.to_rel_path(view.file_name()) except ValueError: name = view.file_name() is_shared = utils.is_shared(view.file_name()) if buf is None: if not is_shared: return cleanup() if ignore.is_ignored(view.file_name()): msg.log('%s is ignored. Not creating buffer.' % view.file_name()) return cleanup() msg.log('Creating new buffer ', name, view.file_name()) event = { 'name': 'create_buf', 'buf': get_text(view), 'path': name } elif name != old_name: if is_shared: msg.log('renamed buffer {0} to {1}'.format(old_name, name)) event = { 'name': 'rename_buf', 'id': buf['id'], 'path': name } else: msg.log('deleting buffer from shared: {0}'.format(name)) event = { 'name': 'delete_buf', 'id': buf['id'], } if event: agent.send(event) if is_shared and buf: agent.send({'name': 'saved', 'id': buf['id']}) cleanup()