       try
         item.save?()
       catch error
-        @handleSaveError(error)
+        @handleSaveError(error, item)
       nextAction?()
     else
       @saveItemAs(item, nextAction)

      try
        item.saveAs(newItemPath)
      catch error
        @handleSaveError(error)
      nextAction?()

  # Public: Save all items.

      return false unless @promptToSaveItem(item)
    true

  handleSaveError: (error, paneItem) ->
    itemPath = error.path ? paneItem.getPath?()
    addWarningWithPath = (message, options) ->
      message = "#{message} '#{itemPath}'" if itemPath
      atom.notifications.addWarning(message, options)

    if error.code is 'EISDIR' or error.message?.endsWith?('is a directory')
      atom.notifications.addWarning("Unable to save file: #{error.message}")
    else if error.code is 'EACCES'
      addWarningWithPath('Unable to save file: Permission denied')
    else if error.code in ['EPERM', 'EBUSY', 'UNKNOWN', 'EEXIST']
      addWarningWithPath('Unable to save file', detail: error.message)
    else if error.code is 'EROFS'
      addWarningWithPath('Unable to save file: Read-only file system')
    else if error.code is 'ENOSPC'
      addWarningWithPath('Unable to save file: No space left on device')
    else if error.code is 'ENXIO'
      addWarningWithPath('Unable to save file: No such device or address')
    else if errorMatch = /ENOTDIR, not a directory '([^']+)'/.exec(error.message)
      fileName = errorMatch[1]
      atom.notifications.addWarning("Unable to save file: A directory in the path '#{fileName}' could not be written to")
