Use item path when error has no path

This commit is contained in:
Kevin Sawicki
2015-07-08 13:08:23 -07:00
parent cac74b9567
commit 7d88f9ea66

View File

@@ -491,7 +491,7 @@ class Pane extends Model
try
item.save?()
catch error
@handleSaveError(error)
@handleSaveError(error, item)
nextAction?()
else
@saveItemAs(item, nextAction)
@@ -512,7 +512,7 @@ class Pane extends Model
try
item.saveAs(newItemPath)
catch error
@handleSaveError(error)
@handleSaveError(error, item)
nextAction?()
# Public: Save all items.
@@ -676,19 +676,24 @@ class Pane extends Model
return false unless @promptToSaveItem(item)
true
handleSaveError: (error) ->
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' and error.path?
atom.notifications.addWarning("Unable to save file: Permission denied '#{error.path}'")
else if error.code in ['EPERM', 'EBUSY', 'UNKNOWN', 'EEXIST'] and error.path?
atom.notifications.addWarning("Unable to save file '#{error.path}'", detail: error.message)
else if error.code is 'EROFS' and error.path?
atom.notifications.addWarning("Unable to save file: Read-only file system '#{error.path}'")
else if error.code is 'ENOSPC' and error.path?
atom.notifications.addWarning("Unable to save file: No space left on device '#{error.path}'")
else if error.code is 'ENXIO' and error.path?
atom.notifications.addWarning("Unable to save file: No such device or address '#{error.path}'")
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")