From 2885b42c62097c841a7b022b234b5ffdfbd3d78b Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 8 Mar 2018 15:07:14 -0500 Subject: [PATCH] Update fastdirty hash during save Fixes #1064 --- cmd/micro/buffer.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/cmd/micro/buffer.go b/cmd/micro/buffer.go index b255fc00..d0dda6ef 100644 --- a/cmd/micro/buffer.go +++ b/cmd/micro/buffer.go @@ -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()