Function: trashed-do-execute-internal
trashed-do-execute-internal is a natively compiled function defined in
trashed.el.
Signature
(trashed-do-execute-internal MARK-ACTION)
Documentation
Internal function to actually restore/delete files.
Restoration/deletion is done according to MARK-ACTION and each tag status. When MARK-ACTION is:
nil -- restore/delete files with flag R/D.
restore -- restore files with mark *.
delete -- delete files with mark *.
Source Code
;; Defined in /nix/store/7ppdacjhnynz276lxxnfw8sdz6r2k6h2-emacs-packages-deps/share/emacs/site-lisp/elpa/trashed-20230811.157/trashed.el
(defun trashed-do-execute-internal (mark-action)
"Internal function to actually restore/delete files.
Restoration/deletion is done according to MARK-ACTION and each tag status.
When MARK-ACTION is:
nil -- restore/delete files with flag R/D.
restore -- restore files with mark *.
delete -- delete files with mark *."
(let* (trash-file-name m entry)
(save-excursion
(trashed-reset-vpos)
(while (setq trash-file-name (tabulated-list-get-id))
(setq m (char-after)
entry (tabulated-list-get-entry))
(if (not
(cond
((or (and (not mark-action) (eq m trashed-res-char))
(and (eq mark-action 'restore) (eq m trashed-marker-char)))
(trashed-restore-file
(expand-file-name trash-file-name trashed-files-dir)
(expand-file-name (aref entry 3))))
((or (and (not mark-action) (eq m trashed-del-char))
(and (eq mark-action 'delete) (eq m trashed-marker-char)))
(if (string= (aref entry 0) "d")
(delete-directory (expand-file-name trash-file-name
trashed-files-dir)
t)
(delete-file (expand-file-name trash-file-name
trashed-files-dir))))
(t)))
(progn
;; Delete info file
(if (file-exists-p (trashed-info-file trash-file-name))
(delete-file (trashed-info-file trash-file-name))
;; Workaround for info files generated by Emacs bug #37922
(let* ((isfx ".trashinfo")
(isfxlen (length isfx)))
(if (and (> (length trash-file-name) isfxlen)
(string= (substring trash-file-name (- isfxlen))
isfx)
(not (file-exists-p (expand-file-name
(substring trash-file-name
0 (- isfxlen))
trashed-files-dir))))
(delete-file (expand-file-name trash-file-name
trashed-info-dir)))))
;; Delete from `tabulated-list-entries'
(if (string= (caar tabulated-list-entries) trash-file-name)
(setq tabulated-list-entries (cdr tabulated-list-entries))
(let ((tail tabulated-list-entries) tail-cdr)
(while (setq tail-cdr (cdr tail))
(setq tail (if (string= (caar tail-cdr) trash-file-name)
(progn (setcdr tail (cdr tail-cdr)) nil)
tail-cdr)))))
;; Delete from the list displayed
(tabulated-list-delete-entry)
;; Subtract from trash can size
(setq trashed-trash-can-size (- trashed-trash-can-size
(string-to-number
(aref entry 1)))))
(forward-line)))
(trashed-update-trash-can-size))))