--- /dev/null
+package buffer
+
+import (
+ "io"
+
+ "github.com/zyedidia/micro/internal/config"
+ "github.com/zyedidia/micro/internal/util"
+ "golang.org/x/text/encoding"
+)
+
+// Backup saves the current buffer to ConfigDir/backups
+func (b *Buffer) Backup() error {
+ if !b.Settings["backup"].(bool) {
+ return nil
+ }
+
+ name := config.ConfigDir + "/backups" + util.EscapePath(b.AbsPath)
+
+ err := overwriteFile(name, encoding.Nop, func(file io.Writer) (e error) {
+ if len(b.lines) == 0 {
+ return
+ }
+
+ // end of line
+ eol := []byte{'\n'}
+
+ // write lines
+ if _, e = file.Write(b.lines[0].data); e != nil {
+ return
+ }
+
+ for _, l := range b.lines[1:] {
+ if _, e = file.Write(eol); e != nil {
+ return
+ }
+ if _, e = file.Write(l.data); e != nil {
+ return
+ }
+ }
+ return
+ })
+
+ return err
+}
+
+// ApplyBackup applies the corresponding backup file to this buffer (if one exists)
+func (b *Buffer) ApplyBackup() error {
+ return nil
+}