def delete_buf(path): if not utils.is_shared(path): msg.error('Skipping deleting %s because it is not in shared path %s.' % (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 %s' % f_path) else: Listener.delete_buf(f_path) return buf_to_delete = None rel_path = utils.to_rel_path(path) for buf_id, buf in BUFS.items(): if rel_path == buf['path']: buf_to_delete = buf break if buf_to_delete is None: msg.error('%s is not in this room' % path) return msg.log('deleting buffer ', rel_path) event = { 'name': 'delete_buf', 'id': buf_to_delete['id'], } Listener.agent.put(event)
def create_buf(path): # >>> (lambda x: lambda: x)(2)() # TODO: check if functools can do this in st2 # really_create_buf = lambda x: (lambda: Listener.create_buf(x)) def really_create_buf(x): return (lambda: Listener.create_buf(x)) if not utils.is_shared(path): msg.error('Skipping adding %s because it is not in shared path %s.' % (path, G.PROJECT_PATH)) return if os.path.isdir(path): for dirpath, dirnames, filenames in os.walk(path): # 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 creating buf for hidden file %s' % f_path) else: sublime.set_timeout(really_create_buf(f_path), 0) return try: buf_fd = open(path, 'rb') buf = buf_fd.read().decode('utf-8') rel_path = utils.to_rel_path(path) msg.log('creating buffer ', rel_path) event = { 'name': 'create_buf', 'buf': buf, 'path': rel_path, } Listener.agent.put(event) except (IOError, OSError): msg.error('Failed to open %s.' % path) except Exception as e: msg.error('Failed to create buffer %s: %s' % (path, str(e)))
def create_buf(path, always_add=False): if not utils.is_shared(path): msg.error( 'Skipping adding %s because it is not in shared path %s.' % (path, G.PROJECT_PATH)) return if os.path.isdir(path): command = 'git ls-files %s' % path try: p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, cwd=path) stdoutdata, stderrdata = p.communicate() if p.returncode == 0: for git_path in stdoutdata.split('\n'): git_path = git_path.strip() if not git_path: continue add_path = os.path.join(path, git_path) msg.debug('adding %s' % add_path) utils.set_timeout(Listener.create_buf, 0, add_path) return except Exception as e: msg.debug("Couldn't run %s. This is probably OK. Error: %s" % (command, str(e))) for dirpath, dirnames, filenames in os.walk(path): # 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 creating buf for hidden file %s' % f_path) else: utils.set_timeout(Listener.create_buf, 0, f_path) return try: buf_fd = open(path, 'rb') buf = buf_fd.read().decode('utf-8') rel_path = utils.to_rel_path(path) msg.log('creating buffer ', rel_path) event = { 'name': 'create_buf', 'buf': buf, 'path': rel_path, } Listener.agent.put(event) except (IOError, OSError): msg.error('Failed to open %s.' % path) except Exception as e: msg.error('Failed to create buffer %s: %s' % (path, str(e)))
def on_post_save(self, view): def cleanup(): del self.between_save_events[view.buffer_id()] if view == G.CHAT_VIEW or view.file_name() == G.CHAT_VIEW_PATH: return cleanup() else: print(G.CHAT_VIEW_PATH, "not", view.file_name()) event = None buf = get_buf(view) name = utils.to_rel_path(view.file_name()) old_name = self.between_save_events[view.buffer_id()] if buf is None: if utils.is_shared(view.file_name()): msg.log('new buffer ', name, view.file_name()) event = { 'name': 'create_buf', 'buf': get_text(view), 'path': name } elif name != old_name: if utils.is_shared(view.file_name()): 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 and Listener.agent: Listener.agent.put(event) cleanup()
def create_buf(path, always_add=False): if not utils.is_shared(path): msg.error('Skipping adding %s because it is not in shared path %s.' % (path, G.PROJECT_PATH)) return if os.path.isdir(path): command = 'git ls-files %s' % path try: p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, cwd=path) stdoutdata, stderrdata = p.communicate() if p.returncode == 0: for git_path in stdoutdata.split('\n'): git_path = git_path.strip() if not git_path: continue add_path = os.path.join(path, git_path) msg.debug('adding %s' % add_path) utils.set_timeout(Listener.create_buf, 0, add_path) return except Exception as e: msg.debug("Couldn't run %s. This is probably OK. Error: %s" % (command, str(e))) for dirpath, dirnames, filenames in os.walk(path): # 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 creating buf for hidden file %s' % f_path) else: utils.set_timeout(Listener.create_buf, 0, f_path) return try: buf_fd = open(path, 'rb') buf = buf_fd.read().decode('utf-8') rel_path = utils.to_rel_path(path) msg.log('creating buffer ', rel_path) event = { 'name': 'create_buf', 'buf': buf, 'path': rel_path, } Listener.agent.put(event) except (IOError, OSError): msg.error('Failed to open %s.' % path) except Exception as e: msg.error('Failed to create buffer %s: %s' % (path, str(e)))