]> git.lizzy.rs Git - micro.git/commitdiff
Update fastdirty hash during save
authorZachary Yedidia <zyedidia@gmail.com>
Thu, 8 Mar 2018 20:07:14 +0000 (15:07 -0500)
committerZachary Yedidia <zyedidia@gmail.com>
Thu, 8 Mar 2018 20:07:14 +0000 (15:07 -0500)
Fixes #1064

cmd/micro/buffer.go

index b255fc00648c538ee513f37d45bb0ca44cfba25c..d0dda6ef0a27db209f6df063348ebe6527db428f 100644 (file)
@@ -512,16 +512,20 @@ func (b *Buffer) SaveAs(filename string) error {
                return err
        }
        useCrlf := b.Settings["fileformat"] == "dos"
+       size := 0
        for i, l := range b.lines {
+               size += len(l.data)
                if _, err := f.Write(l.data); err != nil {
                        return err
                }
                if i != len(b.lines)-1 {
                        if useCrlf {
+                               size += 2
                                if _, err := f.Write([]byte{'\r', '\n'}); err != nil {
                                        return err
                                }
                        } else {
+                               size++
                                if _, err := f.Write([]byte{'\n'}); err != nil {
                                        return err
                                }
@@ -529,6 +533,15 @@ func (b *Buffer) SaveAs(filename string) error {
                }
        }
 
+       if !b.Settings["fastdirty"].(bool) {
+               if size > 50000 {
+                       // If the file is larger than a megabyte fastdirty needs to be on
+                       b.Settings["fastdirty"] = true
+               } else {
+                       b.origHash = md5.Sum([]byte(b.String()))
+               }
+       }
+
        b.Path = filename
        b.IsModified = false
        return b.Serialize()