@@ -5,6 +5,7 @@ _ = require 'underscore-plus'
5
5
{BufferedProcess , CompositeDisposable , Emitter } = require ' atom'
6
6
{repoForPath , getStyleObject , getFullExtension } = require " ./helpers"
7
7
fs = require ' fs-plus'
8
+ del = require ' del'
8
9
9
10
AddDialog = require ' ./add-dialog'
10
11
MoveDialog = require ' ./move-dialog'
@@ -649,25 +650,37 @@ class TreeView
649
650
if shell .moveItemToTrash (selectedPath, shouldDeletePermanently)
650
651
@emitter .emit ' entry-deleted' , {pathToDelete : selectedPath}
651
652
else
652
- @emitter .emit ' delete-entry-failed' , {pathToDelete : selectedPath}
653
+ if not shouldDeletePermanently
654
+ @emitter .emit ' delete-entry-failed' , {pathToDelete : selectedPath}
653
655
failedDeletions .push selectedPath
654
656
655
657
if repo = repoForPath (selectedPath)
656
658
repo .getPathStatus (selectedPath)
657
659
658
660
if failedDeletions .length > 0
659
- atom .notifications .addError @ formatTrashFailureMessage (failedDeletions),
660
- description : @ formatTrashEnabledMessage ()
661
- detail : " #{ failedDeletions .join (' \n ' )} "
662
- dismissable : true
661
+ if shouldDeletePermanently
662
+ del (selectedPaths, {force : true })
663
+ .then ( -> @emitter .emit ' entry-deleted' , {pathToDelete : selectedPath})
664
+ .catch (err ->
665
+ atom .notifications .addError @ formatTrashFailureMessage (failedDeletions, true ),
666
+ description : err
667
+ dismissable : true
668
+ )
669
+ .finally ( -> finishRemoval (selectedEntries[0 ]))
670
+ else
671
+ atom .notifications .addError @ formatTrashFailureMessage (failedDeletions, false ),
672
+ description : @ formatTrashEnabledMessage ()
673
+ detail : " #{ failedDeletions .join (' \n ' )} "
674
+ dismissable : true
663
675
664
- finishRemoval (selectedEntries[0 ])
676
+ if not shouldDeletePermanently
677
+ finishRemoval (selectedEntries[0 ])
665
678
)
666
679
667
- formatTrashFailureMessage : (failedDeletions ) ->
680
+ formatTrashFailureMessage : (failedDeletions , shouldDeletePermanently = false ) ->
668
681
fileText = if failedDeletions .length > 1 then ' files' else ' file'
669
682
670
- " The following #{ fileText} couldn't be moved to the trash."
683
+ " The following #{ fileText} couldn't be #{ if shouldDeletePermanently then " deleted permanently " else " moved to the trash." } "
671
684
672
685
formatTrashEnabledMessage : ->
673
686
switch process .platform
0 commit comments