Subject: Re: bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers

From: Manuel Giraud <[email-masked]>
Date: Tue, 24 Oct 2023 11:21:21 +0200

Eli Zaretskii <[email-masked]> writes:

[...]

> Doesn't this tell that the problem is in dired.el, not in desktop.el?
> The problematic call comes from dired-desktop-buffer-misc-data, not
> from desktop.el.  So it's dired-desktop-buffer-misc-data that needs to
> be fixed.

So I work a bit on 'dired-desktop-buffer-misc-data' and have the
following solution:

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

WDYT?
-- 
Manuel Giraud