@@ -638,6 +638,8 @@ class TreeView
638
638
buttons : [(if shouldDeletePermanently then ' Permanently Delete ⚠️' else ' Move to Trash' ), ' Cancel' ]
639
639
}, (response ) =>
640
640
if response is 0 # Move to Trash
641
+ if shouldDeletePermanently
642
+ return @ removeSelectedPathsPermanently (selectedPaths, selectedEntries)
641
643
failedDeletions = []
642
644
for selectedPath in selectedPaths
643
645
# Don't delete entries which no longer exist. This can happen, for example, when:
@@ -647,39 +649,22 @@ class TreeView
647
649
continue unless fs .existsSync (selectedPath)
648
650
649
651
@emitter .emit ' will-delete-entry' , {pathToDelete : selectedPath}
650
- if shell .moveItemToTrash (selectedPath, shouldDeletePermanently )
652
+ if shell .moveItemToTrash (selectedPath)
651
653
@emitter .emit ' entry-deleted' , {pathToDelete : selectedPath}
652
654
else
653
- if not shouldDeletePermanently
654
- @emitter .emit ' delete-entry-failed' , {pathToDelete : selectedPath}
655
+ @emitter .emit ' delete-entry-failed' , {pathToDelete : selectedPath}
655
656
failedDeletions .push selectedPath
656
657
657
658
if repo = repoForPath (selectedPath)
658
659
repo .getPathStatus (selectedPath)
659
660
660
661
if failedDeletions .length > 0
661
- if shouldDeletePermanently
662
- del (selectedPaths, {force : true })
663
- .then ( (deletedPaths ) ->
664
- for deletedPath in deletedPaths
665
- @emitter .emit ' entry-deleted' , {pathToDelete : deletedPath}
666
- )
667
- .catch ((err ) ->
668
- atom .notifications .addError @ formatTrashFailureMessage (failedDeletions, true ),
669
- description : err
670
- dismissable : true
671
- for selectedPath in selectedPaths
672
- @emitter .emit ' delete-entry-failed' , {pathToDelete : selectedPath}
673
- )
674
- .finally ( -> @ finishRemoval (selectedEntries[0 ]))
675
- else
676
- atom .notifications .addError @ formatTrashFailureMessage (failedDeletions, false ),
677
- description : @ formatTrashEnabledMessage ()
678
- detail : " #{ failedDeletions .join (' \n ' )} "
679
- dismissable : true
662
+ atom .notifications .addError @ formatTrashFailureMessage (failedDeletions, false ),
663
+ description : @ formatTrashEnabledMessage ()
664
+ detail : " #{ failedDeletions .join (' \n ' )} "
665
+ dismissable : true
680
666
681
- if not shouldDeletePermanently
682
- @ finishRemoval (selectedEntries[0 ])
667
+ @ finishRemoval (selectedEntries[0 ])
683
668
)
684
669
685
670
formatTrashFailureMessage : (failedDeletions , shouldDeletePermanently = false ) ->
@@ -699,6 +684,21 @@ class TreeView
699
684
@ selectEntry (firstSelectedEntry .closest (' .directory:not(.selected)' ))
700
685
@ updateRoots () if atom .config .get (' tree-view.squashDirectoryNames' )
701
686
687
+ removeSelectedPathsPermanently : (selectedPaths , selectedEntries ) ->
688
+ del (selectedPaths, {force : true })
689
+ .then ( (deletedPaths ) ->
690
+ for deletedPath in deletedPaths
691
+ @emitter .emit ' entry-deleted' , {pathToDelete : deletedPath}
692
+ )
693
+ .catch ((err ) ->
694
+ atom .notifications .addError @ formatTrashFailureMessage (selectedPaths, true ),
695
+ description : err
696
+ dismissable : true
697
+ for selectedPath in selectedPaths
698
+ @emitter .emit ' delete-entry-failed' , {pathToDelete : selectedPath}
699
+ )
700
+ .finally ( -> @ finishRemoval (selectedEntries[0 ]))
701
+
702
702
# Public: Copy the path of the selected entry element.
703
703
# Save the path in localStorage, so that copying from 2 different
704
704
# instances of atom works as intended
0 commit comments