Merge branch 'master' of github.com:github/atom

This commit is contained in:
Nathan Sobo
2012-07-20 17:56:47 -06:00
3 changed files with 40 additions and 1 deletions

View File

@@ -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()
@@ -284,6 +299,17 @@ describe 'Buffer', ->
buffer = new Buffer
expect(-> buffer.save()).toThrow()
describe "reload()", ->
it "loads text from disk are sets @modified and @modifiedOnDisk to false", ->
buffer.modified = true
buffer.modifiedOnDisk = true
buffer.setText("abc")
buffer.reload()
expect(buffer.modifed).toBeFalsy()
expect(buffer.modifiedOnDisk).toBeFalsy()
expect(buffer.getText()).toBe(fileContents)
describe ".saveAs(path)", ->
filePath = null

View File

@@ -12,6 +12,7 @@ class Buffer
@idCounter = 1
undoManager: null
modified: null
modifiedOnDisk: null
lines: null
file: null
@@ -32,6 +33,11 @@ class Buffer
destroy: ->
@file?.off()
reload: ->
@setText(fs.read(@file.getPath()))
@modified = false
@modifiedOnDisk = false
getPath: ->
@file?.getPath()
@@ -41,7 +47,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 +175,13 @@ class Buffer
fs.write path, @getText()
@file?.updateMd5()
@modified = false
@modifiedOnDisk = false
@setPath(path)
@trigger 'after-save'
isModifiedOnDisk: ->
@modifiedOnDisk
isModified: ->
@modified

View File

@@ -9,6 +9,7 @@ window.keymap.bindKeys '.editor',
'meta-enter': 'newline-below'
'tab': 'indent'
'backspace': 'backspace'
'shift-backspace': 'backspace'
'delete': 'delete'
'meta-x': 'cut'
'meta-c': 'copy'