From 611eb93219e34a52ea2be9c336c9e9f78a82b8c2 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Mon, 16 Jul 2012 16:11:52 -0700 Subject: [PATCH] Buffer stores a is modified on disk flag --- spec/app/buffer-spec.coffee | 15 +++++++++++++++ src/app/buffer.coffee | 9 ++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/spec/app/buffer-spec.coffee b/spec/app/buffer-spec.coffee index 932506576..125298cf6 100644 --- a/spec/app/buffer-spec.coffee +++ b/spec/app/buffer-spec.coffee @@ -90,6 +90,21 @@ describe 'Buffer', -> expect(event.newText).toBe "second" expect(buffer.isModified()).toBeFalsy() + describe "when the buffer is modified", -> + it "sets modifiedOnDisk to be true", -> + fileChangeHandler = jasmine.createSpy('fileChange') + buffer.file.on 'contents-change', fileChangeHandler + + buffer.insert([0, 0], "a change") + fs.write(path, "second") + + expect(fileChangeHandler.callCount).toBe 0 + waitsFor "file to trigger contents-change event", -> + fileChangeHandler.callCount > 0 + + runs -> + expect(buffer.isModifiedOnDisk()).toBeTruthy() + describe ".isModified()", -> beforeEach -> buffer.destroy() diff --git a/src/app/buffer.coffee b/src/app/buffer.coffee index 21aa60e57..867c97ec2 100644 --- a/src/app/buffer.coffee +++ b/src/app/buffer.coffee @@ -12,6 +12,7 @@ class Buffer @idCounter = 1 undoManager: null modified: null + modifiedOnDisk: null lines: null file: null @@ -41,7 +42,9 @@ class Buffer @file?.off() @file = new File(path) @file.on "contents-change", => - unless @isModified() + if @isModified() + @modifiedOnDisk = true + else @setText(fs.read(@file.getPath())) @modified = false @trigger "path-change", this @@ -167,9 +170,13 @@ class Buffer fs.write path, @getText() @file?.updateMd5() @modified = false + @modifiedOnDisk = false @setPath(path) @trigger 'after-save' + isModifiedOnDisk: -> + @modifiedOnDisk + isModified: -> @modified