Update fastdirty hash during save

Fixes #1064
This commit is contained in:
Zachary Yedidia 2018-03-08 15:07:14 -05:00
parent 3e612d2597
commit 2885b42c62

View 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()