diff --git a/spec/atom-environment-spec.coffee b/spec/atom-environment-spec.coffee index b5b975112..938b0eb31 100644 --- a/spec/atom-environment-spec.coffee +++ b/spec/atom-environment-spec.coffee @@ -174,6 +174,19 @@ describe "AtomEnvironment", -> atom.loadStateSync() expect(atom.state.stuff).toBe("cool") + it "saves state on keypress and mousedown events", -> + spyOn(atom, 'saveStateSync') + + keypress = new KeyboardEvent('keypress') + atom.document.dispatchEvent(keypress) + advanceClock 1100 + expect(atom.saveStateSync).toHaveBeenCalled() + + mousedown = new MouseEvent('mousedown') + atom.document.dispatchEvent(mousedown) + advanceClock 1100 + expect(atom.saveStateSync).toHaveBeenCalled() + describe "openInitialEmptyEditorIfNecessary", -> describe "when there are no paths set", -> beforeEach -> diff --git a/src/atom-environment.coffee b/src/atom-environment.coffee index 110f51acb..3e1c28240 100644 --- a/src/atom-environment.coffee +++ b/src/atom-environment.coffee @@ -119,6 +119,9 @@ class AtomEnvironment extends Model constructor: (params={}) -> {@blobStore, @applicationDelegate, @window, @document, configDirPath, @enablePersistence, onlyLoadBaseStyleSheets} = params + @document.addEventListener('mousedown', _.debounce(@saveStateSync.bind(this), 1000), true) + @document.addEventListener('keypress', _.debounce(@saveStateSync.bind(this), 1000), true) + @state = {version: @constructor.version} @loadTime = null