def clear_highlights(self, view): buf = get_buf(view) if not buf: return msg.debug("clearing highlights in %s, buf id %s" % (buf["path"], buf["id"])) for user_id, username in self.workspace_info["users"].items(): view.erase_regions("floobits-highlight-%s" % user_id)
def summon(self, subl_view): if 'highlight' not in G.PERMS: return buf = get_buf(subl_view) if buf: msg.debug('summoning selection in subl_view ', buf['path'], ', buf id ', buf['id']) c = [[x.a, x.b] for x in subl_view.sel()] if self.joined_workspace: self.send({ 'id': buf['id'], 'name': 'highlight', 'ranges': c, 'ping': True, 'summon': True, 'following': False, }) return path = subl_view.file_name() if not utils.is_shared(path): sublime.error_message('Can\'t summon because %s is not in shared path %s.' % (path, G.PROJECT_PATH)) return share = sublime.ok_cancel_dialog('This file isn\'t shared. Would you like to share it?', 'Share') if share: sel = [[x.a, x.b] for x in subl_view.sel()] self.create_buf_cbs[utils.to_rel_path(path)] = lambda buf_id: send_summon(buf_id, sel) self.upload(path)
def on_activated(self, view, agent): buf = get_buf(view) if not buf: return msg.debug('activated view ', buf['path'], ' buf id ', buf['id']) self.on_modified(view, agent, True) self.on_selection_modified(view)
def summon(self, subl_view): if 'highlight' not in G.PERMS: return buf = get_buf(subl_view) if buf: msg.debug('summoning selection in subl_view ', buf['path'], ', buf id ', buf['id']) c = [[x.a, x.b] for x in subl_view.sel()] if self.joined_workspace: self.send({ 'id': buf['id'], 'name': 'highlight', 'ranges': c, 'summon': True, 'following': False, }) return path = subl_view.file_name() if not utils.is_shared(path): sublime.error_message( 'Can\'t summon because %s is not in shared path %s.' % (path, G.PROJECT_PATH)) return share = sublime.ok_cancel_dialog( 'This file isn\'t shared. Would you like to share it?', 'Share') if share: sel = [[x.a, x.b] for x in subl_view.sel()] self.create_buf_cbs[utils.to_rel_path( path)] = lambda buf_id: send_summon(buf_id, sel) self.upload(path)
def clear_highlights(self, view): buf = get_buf(view) if not buf: return msg.debug('clearing highlights in ', buf['path'], ', buf id ', buf['id']) for user_id, username in self.workspace_info['users'].items(): view.erase_regions('floobits-highlight-%s' % user_id)
def on_clone(self, view, agent): msg.debug('Sublime cloned %s' % self.name(view)) buf = get_buf(view) if not buf: return buf_id = int(buf['id']) f = agent.on_clone.get(buf_id) if not f: return del agent.on_clone[buf_id] f(buf, view)
def on_load(self, view, agent): msg.debug('Sublime loaded %s' % self.name(view)) buf = get_buf(view) if not buf: return buf_id = int(buf['id']) f = agent.on_load.get(buf_id) if not f: return del agent.on_load[buf_id] f()
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.is_scratch(): 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 G.IGNORE and G.IGNORE.is_ignored(view.file_name(), log=True): msg.log(view.file_name(), ' is ignored. Not creating buffer.') 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 ', old_name, ' to ', name) event = {'name': 'rename_buf', 'id': buf['id'], 'path': name} else: msg.log('deleting buffer from shared: ', name) event = { 'name': 'delete_buf', 'id': buf['id'], } if event: agent.send(event) if is_shared and buf: agent.views_changed.append(('saved', view, buf)) cleanup()
def on_load(self, view, agent): msg.debug('Sublime loaded ', self.name(view)) buf = get_buf(view) if not buf: return buf_id = int(buf['id']) d = agent.on_load.get(buf_id) if not d: return del agent.on_load[buf_id] utils.set_timeout(lambda: [f() for (_, f) in d.items()], 0)
def is_view_loaded(view): """returns a buf if the view is loaded in sublime and the buf is populated by us""" if not G.AGENT and G.JOINED_WORKSPACE or view.is_loading(): return buf = get_buf(view) if not buf or buf.get('buf') is None: return return buf
def on_load(self, view, agent): msg.debug('Sublime loaded %s' % self.name(view)) buf = get_buf(view) if not buf: return buf_id = int(buf['id']) d = agent.on_load.get(buf_id) if not d: return del agent.on_load[buf_id] for _, f in d.items(): f()
def on_load(self, view, agent): msg.debug('Sublime loaded ', self.name(view)) buf = get_buf(view) if not buf: return buf_id = int(buf['id']) d = agent.on_load.get(buf_id) if not d: return del agent.on_load[buf_id] for _, f in d.items(): f()
def summon(self, view): buf = get_buf(view) if buf: msg.debug("summoning selection in view %s, buf id %s" % (buf["path"], buf["id"])) self.selection_changed.append((view, buf, True)) else: path = view.file_name() if not utils.is_shared(path): sublime.error_message("Can't summon because %s is not in shared path %s." % (path, G.PROJECT_PATH)) return share = sublime.ok_cancel_dialog("This file isn't shared. Would you like to share it?", "Share") if share: sel = [[x.a, x.b] for x in view.sel()] self.create_buf_cbs[utils.to_rel_path(path)] = lambda buf_id: send_summon(buf_id, sel) self.upload(path)
def is_view_loaded(view): """returns a buf if the view is loaded in sublime and the buf is populated by us""" if not G.AGENT: return if not G.AGENT.joined_workspace: return if view.is_loading(): return buf = get_buf(view) if not buf or buf.get('buf') is None: return return buf
def summon(self, view): buf = get_buf(view) if buf: msg.debug('summoning selection in view %s, buf id %s' % (buf['path'], buf['id'])) self.selection_changed.append((view, buf, True)) else: path = view.file_name() if not utils.is_shared(path): sublime.error_message( 'Can\'t summon because %s is not in shared path %s.' % (path, G.PROJECT_PATH)) return share = sublime.ok_cancel_dialog( 'This file isn\'t shared. Would you like to share it?', 'Share') if share: sel = [[x.a, x.b] for x in view.sel()] self.create_buf_cbs[utils.to_rel_path( path)] = lambda buf_id: send_summon(buf_id, sel) self.upload(path)
def on_activated(self, view, agent): buf = get_buf(view) if buf: msg.debug('activated view %s buf id %s' % (buf['path'], buf['id'])) self.on_modified(view) agent.selection_changed.append((view, buf, False))
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()
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.is_scratch(): 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 G.IGNORE and G.IGNORE.is_ignored(view.file_name(), log=True): msg.log(view.file_name(), ' is ignored. Not creating buffer.') 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 ', old_name, ' to ', name) event = { 'name': 'rename_buf', 'id': buf['id'], 'path': name } else: msg.log('deleting buffer from shared: ', name) event = { 'name': 'delete_buf', 'id': buf['id'], } if event: agent.send(event) if is_shared and buf: agent.views_changed.append(('saved', view, buf)) cleanup()