+ if option == "fastdirty" {
+ // If it is being turned off, we have to hash every open buffer
+ var empty [md5.Size]byte
+ var wg sync.WaitGroup
+
+ for _, tab := range tabs {
+ for _, v := range tab.Views {
+ if !nativeValue.(bool) {
+ if v.Buf.origHash == empty {
+ wg.Add(1)
+
+ go func(b *Buffer) { // calculate md5 hash of the file
+ defer wg.Done()
+
+ if file, e := os.Open(b.AbsPath); e == nil {
+ defer file.Close()
+
+ h := md5.New()
+
+ if _, e = io.Copy(h, file); e == nil {
+ h.Sum(b.origHash[:0])
+ }
+ }
+ }(v.Buf)
+ }
+ } else {
+ v.Buf.IsModified = v.Buf.Modified()
+ }
+ }
+ }
+
+ wg.Wait()
+ }
+