       NotationalVelocityView = require './notational-velocity-view'
       @notationalVelocityView = new NotationalVelocityView(state.notationalVelocityViewState)
     @notationalVelocityView
+
+  autosave: (paneItem) ->
+    return unless paneItem?.getURI?()?
+    return unless paneItem?.isModified?()
+    uri = paneItem.getURI()
+    return unless uri.indexOf(@rootDirectory) == 0
+    return unless fs.isMarkdownExtension(path.extname(uri))
+    paneItem?.save?()
+
+  autosaveAll: ->
+    @autosave(paneItem) for paneItem in atom.workspace.getPaneItems()

    # Register command that toggles this view
    @subscriptions.add atom.commands.add 'atom-workspace',
      'notational-velocity:toggle': => @createView(state).toggle()

  deactivate: ->
    @subscriptions.dispose()

  notationalVelocityView: null

  activate: (state) ->
    @rootDirectory = fs.realpathSync(atom.config.get('notational-velocity.directory'))

    # Events subscribed to in atom's system can be easily cleaned up with a
    # CompositeDisposable
    @subscriptions = new CompositeDisposable
