def run(self): backup_per_day = settings.get('backup_per_day') window = self.window view = window.active_view() open_in_same_line = settings.get('open_in_same_line', True) if (open_in_same_line): (row, col) = view.rowcol(view.sel()[0].begin()) self.curline = row + 1 if (not backup_per_day): filepath = view.file_name() newname = PathsHelper.get_backup_filepath(filepath) if os.path.isfile(newname): window.open_file(newname) else: sublime.error_message( 'Backup for ' + filepath + ' not exists!') else: f_files = self.getData(False) if not f_files: sublime.error_message('Backups for this file not exists!') return backup_per_time = settings.get('backup_per_time') if (backup_per_time): window.show_quick_panel(f_files, self.timeFolders) else: window.show_quick_panel(f_files, self.openFile) return
def run(self, edit): backup_per_day = settings.get('backup_per_day') window = self.view.window() view = self.view open_in_same_line = settings.get('open_in_same_line', True) if (open_in_same_line): (row, col) = view.rowcol(view.sel()[0].begin()) self.curline = row + 1 if (not backup_per_day): filepath = view.file_name() newname = PathsHelper.get_backup_filepath(filepath) if os.path.isfile(newname): window.open_file(newname) else: sublime.error_message('Backup for ' + filepath + ' does not exist!') else: f_files = self.getData(False) if not f_files: sublime.error_message('Backups for this file do not exist!') return backup_per_time = settings.get('backup_per_time') if (backup_per_time): window.show_quick_panel(f_files, self.timeFolders) else: window.show_quick_panel(f_files, self.openFile) return
def run(self, edit): backup_per_day = settings.get('backup_per_day') if (not backup_per_day): window = sublime.active_window() view = sublime.Window.active_view(window) filepath = view.file_name() newname = PathsHelper.get_backup_filepath(filepath) if os.path.isfile(newname): window.open_file(newname) else: sublime.error_message('Backup for ' + filepath + ' not exists!') else: f_files = self.getData(False) if not f_files: sublime.error_message('Backups for this file not exists!') return backup_per_time = settings.get('backup_per_time') if (backup_per_time): self.view.window().show_quick_panel(f_files, self.timeFolders) else: self.view.window().show_quick_panel(f_files, self.openFile) return
def save_backup(self, view, on_load_event): view_size = view.size() max_backup_file_size = settings.get('max_backup_file_size_bytes') if (view_size is None): self.console('Size of view not available') return if (max_backup_file_size is None): self.console('Max allowed size from config not available') return # don't save files above configured size if view_size > max_backup_file_size: self.console('Backup not saved, file too large (%d bytes)' % view.size()) return filename = view.file_name() newname = PathsHelper.get_backup_filepath(filename) if newname == None: return buffer_id = view.buffer_id() content = filename+view.substr(sublime.Region(0, view_size)) content = self.encode(content) current_hash = hashlib.md5(content).hexdigest() last_hash = '' try: last_hash = hashes[buffer_id] except Exception as e: last_hash = '' # not create file backup if no changes from last backup if (last_hash == current_hash): return # not create file backup if current file is backup if on_load_event & self.is_backup_file(filename): return # not create file if exists if on_load_event & os.path.isfile(newname): return (backup_dir, file_to_write) = os.path.split(newname) if os.access(backup_dir, os.F_OK) == False: os.makedirs(backup_dir) shutil.copy(filename, newname) hashes[buffer_id] = current_hash self.console('Backup saved to: '+newname.replace('\\', '/'))
def save_backup(self, view, on_load_event): if not view or view.is_read_only(): return view_size = view.size() max_backup_file_size = settings.get('max_backup_file_size_bytes') if (view_size is None): self.console('Size of view not available') return if (max_backup_file_size is None): self.console('Max allowed size from config not available') return # don't save files above configured size if view_size > max_backup_file_size: self.console( 'Backup not saved, file too large (%d bytes)' % view.size()) return filename = view.file_name() if filename is None: return # not create file backup if current file is backup if on_load_event & self.is_backup_file(filename): return newname = PathsHelper.get_backup_filepath(filename, on_load_event) if newname is None: return last_backupname = lastbackups.get(filename) # not create file backup if no changes from last backup if filename and last_backupname: if filecmp.cmp(filename, last_backupname): return # not create file if exists if on_load_event & os.path.isfile(newname): return (backup_dir, file_to_write) = os.path.split(newname) if not os.access(backup_dir, os.F_OK): os.makedirs(backup_dir) shutil.copy(filename, newname) lastbackups[filename] = newname self.console('Backup saved to: ' + newname.replace('\\', '/'))
def save_backup(self, view, on_load_event): if (view.is_read_only()): return view_size = view.size() max_backup_file_size = settings.get('max_backup_file_size_bytes') if (view_size is None): self.console('View size not available.') return if (max_backup_file_size is None): self.console('Max size allowed by config not available.') return # don't save files above configured size if view_size > max_backup_file_size: self.console('Backup not saved, file too large (%d bytes).' % view.size()) return filename = view.file_name() if filename == None: return # Check file path in excluded regexes if self.is_excluded(filename): #cprint("AutoBackups: " + filename + " is excluded"); return # not create file backup if current file is backup if on_load_event & self.is_backup_file(filename): return newname = PathsHelper.get_backup_filepath(filename) #cprint("---> newname: " + newname); if newname == None: return self.console('Autobackup to: ' + newname) buffer_id = view.buffer_id() content = filename + view.substr(sublime.Region(0, view_size)) content = self.encode(content) current_hash = hashlib.md5(content).hexdigest() last_hash = '' try: last_hash = hashes[buffer_id] except Exception as e: last_hash = '' # not create file backup if no changes from last backup if (last_hash == current_hash): return # not create file if exists if on_load_event & os.path.isfile(newname): return (backup_dir, file_to_write) = os.path.split(newname) if os.access(backup_dir, os.F_OK) == False: os.makedirs(backup_dir) try: shutil.copy(filename, newname) except FileNotFoundError: self.console('Backup not saved. File ' + filename + ' does not exist!') return False hashes[buffer_id] = current_hash
def save_backup(self, view, on_load_event): if (view.is_read_only()): return view_size = view.size() max_backup_file_size = settings.get('max_backup_file_size_bytes') if (view_size is None): self.console('View size not available.') return if (max_backup_file_size is None): self.console('Max size allowed by config not available.') return # don't save files above configured size if view_size > max_backup_file_size: self.console('Backup not saved, file too large (%d bytes).' % view.size()) return filename = view.file_name() if filename == None: return # Check file path in excluded regexes if self.is_excluded(filename): #cprint("AutoBackups: " + filename + " is excluded"); return # not create file backup if current file is backup if on_load_event & self.is_backup_file(filename): return newname = PathsHelper.get_backup_filepath(filename) if newname == None: return buffer_id = view.buffer_id() content = filename+view.substr(sublime.Region(0, view_size)) content = self.encode(content) current_hash = hashlib.md5(content).hexdigest() last_hash = '' try: last_hash = hashes[buffer_id] except Exception as e: last_hash = '' # not create file backup if no changes from last backup if (last_hash == current_hash): return # not create file if exists if on_load_event & os.path.isfile(newname): return (backup_dir, file_to_write) = os.path.split(newname) if os.access(backup_dir, os.F_OK) == False: os.makedirs(backup_dir) try: shutil.copy(filename, newname) except FileNotFoundError: self.console('Backup not saved. File '+filename+' does not exist!') return False; hashes[buffer_id] = current_hash self.console('Backup saved to: '+newname.replace('\\', '/'))