diff --git a/lisp/dired.el b/lisp/dired.el index cc8c74839b9..cae9f31010a 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -4875,22 +4875,30 @@ dired-dnd-handle-file (eval-when-compile (require 'desktop)) (declare-function desktop-file-name "desktop" (filename dirname)) +(defun dired-desktop-buffer-save-p (dired-directory) + "Should this DIRED-DIRECTORY desktop saved?" + (if (consp dired-directory) + (not (string-match-p desktop-files-not-to-save (car dired-directory))) + (not (string-match-p desktop-files-not-to-save dired-directory)))) + (defun dired-desktop-buffer-misc-data (dirname) "Auxiliary information to be saved in desktop file." - (cons - ;; Value of `dired-directory'. - (if (consp dired-directory) - ;; Directory name followed by list of files. - (cons (desktop-file-name (car dired-directory) dirname) - (cdr dired-directory)) - ;; Directory name, optionally with shell wildcard. - (desktop-file-name dired-directory dirname)) - ;; Subdirectories in `dired-subdir-alist'. - (cdr - (nreverse - (mapcar - (lambda (f) (desktop-file-name (car f) dirname)) - dired-subdir-alist))))) + (when (and (stringp desktop-files-not-to-save) + (dired-desktop-buffer-save-p dired-directory)) + (cons + ;; Value of `dired-directory'. + (if (consp dired-directory) + ;; Directory name followed by list of files. + (cons (desktop-file-name (car dired-directory) dirname) + (cdr dired-directory)) + ;; Directory name, optionally with shell wildcard. + (desktop-file-name dired-directory dirname)) + ;; Subdirectories in `dired-subdir-alist'. + (cdr + (nreverse + (mapcar + (lambda (f) (desktop-file-name (car f) dirname)) + dired-subdir-alist)))))) (defun dired-restore-desktop-buffer (_file-name _buffer-name