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)
Пример #2
0
    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)
Пример #3
0
 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)
Пример #5
0
 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)
Пример #6
0
 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 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)
Пример #8
0
 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)
Пример #9
0
 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()
Пример #10
0
    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()
Пример #11
0
 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)
Пример #12
0
 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)
Пример #13
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
Пример #14
0
 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()
Пример #15
0
 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)
Пример #17
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:
        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
Пример #18
0
 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)
Пример #19
0
 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))
Пример #20
0
    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()
Пример #21
0
 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))
Пример #22
0
    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()