all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
@ 2023-10-23  9:21 Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-23 11:41 ` Eli Zaretskii
  0 siblings, 1 reply; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-23  9:21 UTC (permalink / raw)
  To: 66697

[-- Attachment #1: Type: text/plain, Size: 593 bytes --]


Hi,

I'm using desktop-save-mode and regularly open files via Tramp with a
method that asks for a password and that would eventually expire.  By
default 'desktop-files-not-to-save' is "\\(\\`/[^/:]*:\\|(ftp)\\'\\)" so
I expect that those remote buffer are not saved by desktop-save.

When such a remote buffer is opened (but not displayed nor used), Emacs
will keep asking me for this password and I find it annoying.

I try to track down this issue and found out that the call to
'desktop-buffer-info' on each buffer triggered this password prompt.

The following patch tries to solve this.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Test-desktop-files-not-to-save-early.patch --]
[-- Type: text/x-patch, Size: 7429 bytes --]

From 5aa566db6214d61ebfad79a84ea8630e791aec33 Mon Sep 17 00:00:00 2001
From: Manuel Giraud <manuel@ledu-giraud.fr>
Date: Mon, 23 Oct 2023 11:04:29 +0200
Subject: [PATCH] Test 'desktop-files-not-to-save' early

* lisp/desktop.el (desktop-buffer-info): Replace 'set-buffer'
with 'with-current-buffer' and fix docstring.
(desktop-save-file-name-p): New function to isolate test on
'desktop-files-not-to-save'.
(desktop-save-buffer-p): Use it.
(desktop-save): Test wheter the buffer's filename should be
saved before accessing its 'desktop-buffer-info'.
---
 lisp/desktop.el | 136 +++++++++++++++++++++++++-----------------------
 1 file changed, 70 insertions(+), 66 deletions(-)

diff --git a/lisp/desktop.el b/lisp/desktop.el
index f096f13ab80..738a26a42af 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -843,8 +843,6 @@ desktop-list*
 ;; ----------------------------------------------------------------------------
 (defun desktop-buffer-info (buffer)
   "Return information describing BUFFER.
-This function is not pure, as BUFFER is made current with
-`set-buffer'.
 
 Returns a list of all the necessary information to recreate the
 buffer, which is (in order):
@@ -860,49 +858,49 @@ desktop-buffer-info
     auxiliary information given by `desktop-save-buffer';
     local variables;
     auxiliary information given by `desktop-var-serdes-funs'."
-  (set-buffer buffer)
-  `(
-    ;; base name of the buffer; replaces the buffer name if managed by uniquify
-    ,(and (fboundp 'uniquify-buffer-base-name) (uniquify-buffer-base-name))
-    ;; basic information
-    ,(desktop-file-name (buffer-file-name) desktop-dirname)
-    ,(buffer-name)
-    ,major-mode
-    ;; minor modes
-    ,(seq-filter
-      (lambda (minor-mode)
-        ;; Just two sanity checks.
-        (and (boundp minor-mode)
-             (symbol-value minor-mode)
-             (let ((special
-                    (assq minor-mode desktop-minor-mode-table)))
-               (or (not special)
-                   (cadr special)))))
-      local-minor-modes)
-    ;; point and mark, and read-only status
-    ,(point)
-    ,(list (mark t) mark-active)
-    ,buffer-read-only
-    ;; auxiliary information
-    ,(when (functionp desktop-save-buffer)
-       (funcall desktop-save-buffer desktop-dirname))
-    ;; local variables
-    ,(let ((loclist (buffer-local-variables))
-           (ll nil))
-       (dolist (local desktop-locals-to-save)
-         (let ((here (assq local loclist)))
-           (cond (here
-                  (push here ll))
-                 ((member local loclist)
-                  (push local ll)))))
-       ll)
-   ,@(when (>= desktop-io-file-version 208)
-       (list
-        (mapcar (lambda (record)
-                  (let ((var (car record)))
-                    (list var
-                          (funcall (cadr record) (symbol-value var)))))
-                desktop-var-serdes-funs)))))
+  (with-current-buffer buffer
+    `(
+      ;; base name of the buffer; replaces the buffer name if managed by uniquify
+      ,(and (fboundp 'uniquify-buffer-base-name) (uniquify-buffer-base-name))
+      ;; basic information
+      ,(desktop-file-name (buffer-file-name) desktop-dirname)
+      ,(buffer-name)
+      ,major-mode
+      ;; minor modes
+      ,(seq-filter
+        (lambda (minor-mode)
+          ;; Just two sanity checks.
+          (and (boundp minor-mode)
+               (symbol-value minor-mode)
+               (let ((special
+                      (assq minor-mode desktop-minor-mode-table)))
+                 (or (not special)
+                     (cadr special)))))
+        local-minor-modes)
+      ;; point and mark, and read-only status
+      ,(point)
+      ,(list (mark t) mark-active)
+      ,buffer-read-only
+      ;; auxiliary information
+      ,(when (functionp desktop-save-buffer)
+         (funcall desktop-save-buffer desktop-dirname))
+      ;; local variables
+      ,(let ((loclist (buffer-local-variables))
+             (ll nil))
+         (dolist (local desktop-locals-to-save)
+           (let ((here (assq local loclist)))
+             (cond (here
+                    (push here ll))
+                   ((member local loclist)
+                    (push local ll)))))
+         ll)
+      ,@(when (>= desktop-io-file-version 208)
+          (list
+           (mapcar (lambda (record)
+                     (let ((var (car record)))
+                       (list var
+                             (funcall (cadr record) (symbol-value var)))))
+                   desktop-var-serdes-funs))))))
 
 ;; ----------------------------------------------------------------------------
 (defun desktop--v2s (value)
@@ -1029,6 +1027,12 @@ desktop-buffers-not-to-save-function
 `desktop-save-buffer-p' and should return nil if buffer should not
 have its state saved in the desktop file.")
 
+(defun desktop-save-file-name-p (filename)
+  "Return t if FILENAME should have its state saved."
+  (and filename
+       (or (not (stringp desktop-files-not-to-save))
+	   (not (string-match-p desktop-files-not-to-save filename)))))
+
 (defun desktop-save-buffer-p (filename bufname mode &rest rest)
   "Return t if buffer should have its state saved in the desktop file.
 FILENAME is the visited file name, BUFNAME is the buffer name, and
@@ -1041,9 +1045,7 @@ desktop-save-buffer-p
 	     (not (stringp desktop-buffers-not-to-save))
 	     (not (string-match-p desktop-buffers-not-to-save bufname)))
 	 (not (memq mode desktop-modes-not-to-save))
-	 (or (and filename
-		  (or no-regexp-to-check
-		      (not (string-match-p desktop-files-not-to-save filename))))
+	 (or (desktop-save-file-name-p filename)
 	     (and (memq mode '(dired-mode vc-dir-mode))
 		  (or no-regexp-to-check
 		      (not (setq dired-skip
@@ -1204,24 +1206,26 @@ desktop-save
 	     " kill-ring))\n"))
 
 	  (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
-	  (dolist (l (mapcar #'desktop-buffer-info (buffer-list)))
-	    (let ((base (pop l)))
-	      (when (apply #'desktop-save-buffer-p l)
-		(insert "("
-			(if (or (not (integerp eager))
-				(if (zerop eager)
-				    nil
-				  (setq eager (1- eager))))
-			    "desktop-create-buffer"
-			  "desktop-append-buffer-args")
-			" "
-			(format "%d" desktop-io-file-version))
-		;; If there's a non-empty base name, we save it instead of the buffer name
-		(when (and base (not (string= base "")))
-		  (setcar (nthcdr 1 l) base))
-		(dolist (e l)
-		  (insert "\n  " (desktop-value-to-string e)))
-		(insert ")\n\n"))))
+	  (dolist (buffer (buffer-list))
+            (when (desktop-save-file-name-p (buffer-file-name buffer))
+	      (let* ((l (desktop-buffer-info buffer))
+		     (base (pop l)))
+	        (when (apply #'desktop-save-buffer-p l)
+		  (insert "("
+			  (if (or (not (integerp eager))
+				  (if (zerop eager)
+				      nil
+				    (setq eager (1- eager))))
+			      "desktop-create-buffer"
+			    "desktop-append-buffer-args")
+			  " "
+			  (format "%d" desktop-io-file-version))
+		  ;; If there's a non-empty base name, we save it instead of the buffer name
+		  (when (and base (not (string= base "")))
+		    (setcar (nthcdr 1 l) base))
+		  (dolist (e l)
+		    (insert "\n  " (desktop-value-to-string e)))
+		  (insert ")\n\n")))))
 
 	  (setq default-directory desktop-dirname)
 	  ;; When auto-saving, avoid writing if nothing has changed since the last write.
-- 
2.42.0


[-- Attachment #3: Type: text/plain, Size: 7399 bytes --]



In GNU Emacs 30.0.50 (build 1, x86_64-unknown-openbsd7.4) of 2023-10-23
 built on computer
Repository revision: 4ff0c738d050942932e73c627a7d6e31ca5c6244
Repository branch: mgi/auto-save-pred
Windowing system distributor 'The X.Org Foundation', version 11.0.12101008
System Description: OpenBSD computer 7.4 GENERIC.MP#1397 amd64

Configured using:
 'configure --prefix=/home/manuel/emacs --bindir=/home/manuel/bin
 --with-x-toolkit=no --with-toolkit-scroll-bars=no --without-cairo
 --without-sound --without-compress-install
 CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib'

Configured features:
DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LCMS2
LIBOTF LIBXML2 MODULES NOTIFY KQUEUE OLDXMENU PDUMPER PNG RSVG SQLITE3
THREADS TIFF TREE_SITTER WEBP X11 XDBE XFT XIM XINPUT2 XPM ZLIB

Important settings:
  value of $LC_ALL: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Dired by name

Minor modes in effect:
  gnus-dired-mode: t
  server-mode: t
  override-global-mode: t
  repeat-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/manuel/.emacs.d/elpa/ef-themes-1.3.0/theme-loaddefs hides /home/manuel/emacs/share/emacs/30.0.50/lisp/theme-loaddefs

Features:
(shadow emacsbug pcmpl-git log-edit add-log shortdoc comp comp-cstr
help-fns radix-tree descr-text sort gnus-cite flow-fill mail-extr
textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check gnus-async gnus-bcklg gnus-ml gnus-topic mm-archive
url-cache qp utf-7 imap rfc2104 nndoc nndraft nnmh network-stream
nnfolder nnml gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp
gnus-cache nnrss conf-mode tramp-cmds tramp-cache time-stamp tramp-sh
smerge-mode diff whitespace dabbrev pulse ibuf-ext ibuffer
ibuffer-loaddefs cus-start misearch multi-isearch org-duration
org-agenda org-indent view pascal org-element org-persist org-id
avl-tree oc-basic ol-eww ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
ol-docview doc-view jka-compr image-mode exif ol-bibtex bibtex ol-bbdb
ol-w3m ol-doi org-link-doi gnus-icalendar org-capture org-refile org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint
org-pcomplete org-list org-footnote org-faces org-entities ob-emacs-lisp
ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys
oc org-loaddefs org-version org-compat org-macs vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs log-view pcvs-util vc-hg sh-script smie treesit
executable eww url-queue mm-url vc-dir ewoc mule-util on-screen texinfo
texinfo-loaddefs emacs-news-mode gnus-dired vc autorevert filenotify
vc-git diff-mode vc-dispatcher bug-reference paredit warnings time
battery cus-load exwm-randr xcb-randr exwm-config ido exwm exwm-input
xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor xcb-render
exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto
xcb-types xcb-debug server ef-summer-theme ef-themes zone speed-type
url-http url-auth url-gw nsm compat ytdious mingus libmpdee reporter
edebug debug backtrace transmission color calc-bin calc-ext calc
calc-loaddefs rect calc-macs supercite regi ebdb-message ebdb-gnus
gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig
gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range message sendmail yank-media puny rfc822
mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums gmm-utils mailheader
gnus-win ebdb-mua ebdb-com crm ebdb-format ebdb mailabbrev eieio-opt
speedbar ezimage dframe find-func eieio-base pcase timezone icalendar
gnus nnheader gnus-util mail-utils range mm-util mail-prsvr wid-edit
visual-basic-mode cl web-mode derived disp-table erlang-start
smart-tabs-mode skeleton cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs slime-asdf grep slime-tramp
tramp rx trampver tramp-integration files-x tramp-message tramp-compat
xdg shell pcomplete parse-time iso8601 time-date format-spec
tramp-loaddefs slime-fancy slime-indentation slime-cl-indent cl-indent
slime-trace-dialog slime-fontifying-fu slime-package-fu slime-references
slime-compiler-notes-tree advice slime-scratch slime-presentations
bridge slime-macrostep macrostep slime-mdot-fu slime-enclosing-context
slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc slime-repl slime-parse slime
apropos compile text-property-search etags fileloop generator xref
project arc-mode archive-mode noutline outline icons pp comint ansi-osc
ansi-color ring hyperspec thingatpt slime-autoloads edmacro kmacro
use-package-bind-key bind-key appt diary-lib diary-loaddefs cal-menu
calendar cal-loaddefs dired-x dired-aux dired dired-loaddefs
notifications dbus xml cl-extra help-mode use-package-core repeat
easy-mmode desktop frameset debbugs-autoloads ebdb-autoloads
ef-themes-autoloads exwm-autoloads hyperbole-autoloads magit-autoloads
git-commit-autoloads finder-inf magit-section-autoloads dash-autoloads
on-screen-autoloads osm-autoloads paredit-autoloads request-autoloads
rust-mode-autoloads s-autoloads speed-type-autoloads
transmission-autoloads tree-mode-autoloads with-editor-autoloads info
compat-autoloads ytdious-autoloads package browse-url url url-proxy
url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt
fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode
register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind kqueue lcms2 dynamic-setting system-font-setting
font-render-setting xinput2 x multi-tty move-toolbar
make-network-process emacs)

Memory information:
((conses 16 1090540 641027) (symbols 48 72542 5)
 (strings 32 363748 18296) (string-bytes 1 11744990)
 (vectors 16 186883) (vector-slots 8 3624315 209906)
 (floats 8 645 1052) (intervals 56 38440 4146) (buffers 992 113))

-- 
Manuel Giraud

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23  9:21 bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-10-23 11:41 ` Eli Zaretskii
  2023-10-23 12:34   ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 27+ messages in thread
From: Eli Zaretskii @ 2023-10-23 11:41 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 66697

> Date: Mon, 23 Oct 2023 11:21:47 +0200
> From:  Manuel Giraud via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> 
> I'm using desktop-save-mode and regularly open files via Tramp with a
> method that asks for a password and that would eventually expire.  By
> default 'desktop-files-not-to-save' is "\\(\\`/[^/:]*:\\|(ftp)\\'\\)" so
> I expect that those remote buffer are not saved by desktop-save.
> 
> When such a remote buffer is opened (but not displayed nor used), Emacs
> will keep asking me for this password and I find it annoying.

Could you please clarify when does Emacs prompt you for a password?
Is it when you restore desktop, save desktop, some other situation?





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 11:41 ` Eli Zaretskii
@ 2023-10-23 12:34   ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-23 12:47     ` Eli Zaretskii
  0 siblings, 1 reply; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-23 12:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66697

Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Mon, 23 Oct 2023 11:21:47 +0200
>> From:  Manuel Giraud via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>> 
>> I'm using desktop-save-mode and regularly open files via Tramp with a
>> method that asks for a password and that would eventually expire.  By
>> default 'desktop-files-not-to-save' is "\\(\\`/[^/:]*:\\|(ftp)\\'\\)" so
>> I expect that those remote buffer are not saved by desktop-save.
>> 
>> When such a remote buffer is opened (but not displayed nor used), Emacs
>> will keep asking me for this password and I find it annoying.
>
> Could you please clarify when does Emacs prompt you for a password?
> Is it when you restore desktop, save desktop, some other situation?

Hi Eli,

It is when 'desktop-save' is called.  So it is also called in the
desktop-auto-save timer.

And BTW, my patch is wrong because it currently bypasses dired buffers
(and maybe others).
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 12:34   ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-10-23 12:47     ` Eli Zaretskii
  2023-10-23 12:56       ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 27+ messages in thread
From: Eli Zaretskii @ 2023-10-23 12:47 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 66697

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 66697@debbugs.gnu.org
> Date: Mon, 23 Oct 2023 14:34:34 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> Date: Mon, 23 Oct 2023 11:21:47 +0200
> >> From:  Manuel Giraud via "Bug reports for GNU Emacs,
> >>  the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
> >> 
> >> I'm using desktop-save-mode and regularly open files via Tramp with a
> >> method that asks for a password and that would eventually expire.  By
> >> default 'desktop-files-not-to-save' is "\\(\\`/[^/:]*:\\|(ftp)\\'\\)" so
> >> I expect that those remote buffer are not saved by desktop-save.
> >> 
> >> When such a remote buffer is opened (but not displayed nor used), Emacs
> >> will keep asking me for this password and I find it annoying.
> >
> > Could you please clarify when does Emacs prompt you for a password?
> > Is it when you restore desktop, save desktop, some other situation?
> 
> Hi Eli,
> 
> It is when 'desktop-save' is called.  So it is also called in the
> desktop-auto-save timer.

So you are saying that, even though these buffers are in
desktop-files-not-to-save value, Emacs still asks for a password for
them when desktop.el saves the desktop?  If so, can you set
debug-on-quit non-nil and when Emacs prompts for the password, type
C-g and post the backtrace here?





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 12:47     ` Eli Zaretskii
@ 2023-10-23 12:56       ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-23 13:25         ` Michael Albinus
  2023-10-23 14:21         ` Eli Zaretskii
  0 siblings, 2 replies; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-23 12:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66697

Eli Zaretskii <eliz@gnu.org> writes:

[...]

> So you are saying that, even though these buffers are in
> desktop-files-not-to-save value, Emacs still asks for a password for
> them when desktop.el saves the desktop?

Yes.

> If so, can you set debug-on-quit non-nil and when Emacs prompts for
> the password, type C-g and post the backtrace here?

I have already (kind of) done that when trying to find out this issue:
I've placed a 'debug' call into 'tramp-read-passwd'.  Here is what I
get:

--8<---------------cut here---------------start------------->8---
Debugger entered: nil
  (let* ((default-directory tramp-compat-temporary-file-directory) (case-fold-search t) (vec (tramp-get-connection-property proc "password-vector" (process-get proc 'tramp-vector))) (key (tramp-make-tramp-file-name vec 'noloc)) (method (let* ((cl-x vec)) (progn (or (let* (...) (progn ...)) (signal 'wrong-type-argument (list ... cl-x))) (nth 1 cl-x)))) (user (or (tramp-file-name-user-domain vec) (tramp-get-connection-property key "login-as"))) (host (tramp-file-name-host-port vec)) (pw-prompt (or prompt (save-current-buffer (set-buffer (process-buffer proc)) (tramp-check-for-regexp proc tramp-password-prompt-regexp) (if (string-match-p "passphrase" (match-string 1)) (match-string 0) (format "%s for %s " (capitalize ...) key))))) (auth-source-creation-prompts (list (cons 'secret pw-prompt))) (auth-sources (buffer-local-value 'auth-sources (process-buffer proc))) auth-info auth-passwd tramp-dont-suspend-timers) (debug) (unwind-protect (or (setq tramp-password-save-function nil) (condition-case nil (progn (and (tramp-get-connection-property vec "first-password-request") (progn (setq auth-info ...) (setq tramp-password-save-function ...) (setq auth-passwd ...)))) (error nil)) (if tramp-dont-suspend-timers (progn (progn (setq auth-passwd (password-read pw-prompt key)) (setq tramp-password-save-function #'...)) auth-passwd) (let ((stimers (with-timeout-suspend)) timer-list timer-idle-list) (unwind-protect (progn (progn ... ...) auth-passwd) (with-timeout-unsuspend stimers))))) (if (tramp-string-empty-or-nil-p auth-passwd) (progn (setq tramp-password-save-function nil))) (tramp-set-connection-property vec "first-password-request" nil)))
  tramp-read-passwd(#<process *tramp/doas root@bb*>)
  tramp-action-password(#<process *tramp/doas root@bb*> (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil))
  tramp-process-one-action(#<process *tramp/doas root@bb*> (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) ((tramp-login-prompt-regexp tramp-action-login) (tramp-password-prompt-regexp tramp-action-password) (tramp-otp-password-prompt-regexp tramp-action-otp-password) (tramp-wrong-passwd-regexp tramp-action-permission-denied) (shell-prompt-pattern tramp-action-succeed) (tramp-shell-prompt-pattern tramp-action-succeed) (tramp-yesno-prompt-regexp tramp-action-yesno) (tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-regexp tramp-action-terminal) (tramp-antispoof-regexp tramp-action-confirm-message) (tramp-security-key-confirm-regexp tramp-action-show-and-confirm-message) (tramp-process-alive-regexp tramp-action-process-alive)))
  tramp-process-actions(#<process *tramp/doas root@bb*> (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) 1 ((tramp-login-prompt-regexp tramp-action-login) (tramp-password-prompt-regexp tramp-action-password) (tramp-otp-password-prompt-regexp tramp-action-otp-password) (tramp-wrong-passwd-regexp tramp-action-permission-denied) (shell-prompt-pattern tramp-action-succeed) (tramp-shell-prompt-pattern tramp-action-succeed) (tramp-yesno-prompt-regexp tramp-action-yesno) (tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-regexp tramp-action-terminal) (tramp-antispoof-regexp tramp-action-confirm-message) (tramp-security-key-confirm-regexp tramp-action-show-and-confirm-message) (tramp-process-alive-regexp tramp-action-process-alive)) 10)
  tramp-maybe-open-connection((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil))
  tramp-send-command((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("echo ~root 2>/dev/null; echo tramp_exit_status $?" 6 10 (tramp-default t)))
  tramp-send-command-and-check((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("echo ~root" 6 10 (tramp-default t)))
  tramp-sh-handle-get-home-directory((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t)))
  apply(tramp-sh-handle-get-home-directory ((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t))))
  tramp-sh-file-name-handler(tramp-get-home-directory (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t)))
  apply(tramp-sh-file-name-handler tramp-get-home-directory ((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t))))
  tramp-file-name-handler(tramp-get-home-directory (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t)))
  tramp-get-home-directory((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t)))
  tramp-sh-handle-expand-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil)
  apply(tramp-sh-handle-expand-file-name (#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil))
  tramp-sh-file-name-handler(expand-file-name #("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil)
  apply(tramp-sh-file-name-handler expand-file-name (#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil))
  tramp-file-name-handler(expand-file-name #("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil)
  expand-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)))
  desktop-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) "/home/manuel/.emacs.d/")
  dired-desktop-buffer-misc-data("/home/manuel/.emacs.d/")
  desktop-buffer-info(#<buffer ~</doas:root@bb:>>)
  mapcar(desktop-buffer-info (#<buffer xterm.h> #<buffer tramp.el> #<buffer  *Minibuf-1*> #<buffer desktop.el> #<buffer ~</doas:root@bb:>> #<buffer  *Minibuf-2*> #<buffer init.el> #<buffer net> #<buffer tramp-cmds.el<emacs-repo>> #<buffer tramp-sh.el> #<buffer tramp-cmds.el<30.0.50>> #<buffer NEWS> #<buffer tramp.texi> #<buffer *info*> #<buffer files.el<emacs-repo>> #<buffer *vc-dir*<emacs-repo>> #<buffer tmp> #<buffer files.el<30.0.50>> #<buffer *eww*> #<buffer build-emacs.sh> #<buffer .xsession> #<buffer emacs.c> #<buffer terminal.c> #<buffer termhooks.h> #<buffer haikuterm.c> #<buffer xterm.c> #<buffer androidfns.c> #<buffer pgtkfns.c> #<buffer haikufns.c> #<buffer xfns.c> #<buffer widget.c> #<buffer gtkutil.c> #<buffer result> #<buffer lisp.h> #<buffer eval.c> #<buffer alloc.c> #<buffer ~</home>> #<buffer config.h> #<buffer pdumper.c> #<buffer dotfiles> #<buffer x> #<buffer bin> #<buffer *vc-dir*<sys>> #<buffer patches> #<buffer emacs<editors>> #<buffer vc.el> #<buffer bar.txt> #<buffer bar> #<buffer foo.txt> ...))
  desktop-save("/home/manuel/.emacs.d/" nil t)
  desktop-auto-save()
  apply(desktop-auto-save nil)
  timer-event-handler([t 0 30 0 nil desktop-auto-save nil idle 0 nil])
--8<---------------cut here---------------end--------------->8---

-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 12:56       ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-10-23 13:25         ` Michael Albinus
  2023-10-23 13:33           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-23 14:21         ` Eli Zaretskii
  1 sibling, 1 reply; 27+ messages in thread
From: Michael Albinus @ 2023-10-23 13:25 UTC (permalink / raw)
  To: 66697; +Cc: eliz, manuel

Manuel Giraud via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@gnu.org> writes:

Hi Manuel,

>> If so, can you set debug-on-quit non-nil and when Emacs prompts for
>> the password, type C-g and post the backtrace here?
>
> I have already (kind of) done that when trying to find out this issue:
> I've placed a 'debug' call into 'tramp-read-passwd'.  Here is what I
> get:

The relevant part is this:

>   tramp-file-name-handler(expand-file-name #("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil)
>   expand-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)))
>   desktop-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) "/home/manuel/.emacs.d/")

desktop-file-name calls expand-file-name, which triggers Tramp actions.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 13:25         ` Michael Albinus
@ 2023-10-23 13:33           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-23 14:07             ` Michael Albinus
  2023-10-23 15:21             ` Michael Albinus
  0 siblings, 2 replies; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-23 13:33 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 66697, eliz

Michael Albinus <michael.albinus@gmx.de> writes:

Hi Michael,

[...]

> The relevant part is this:
>
>>   tramp-file-name-handler(expand-file-name #("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil)
>>   expand-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)))
>>   desktop-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) "/home/manuel/.emacs.d/")
>
> desktop-file-name calls expand-file-name, which triggers Tramp
> actions.

So do you think it should be fixed into 'desktop-file-name'?
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 13:33           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-10-23 14:07             ` Michael Albinus
  2023-10-23 15:21             ` Michael Albinus
  1 sibling, 0 replies; 27+ messages in thread
From: Michael Albinus @ 2023-10-23 14:07 UTC (permalink / raw)
  To: 66697; +Cc: eliz, manuel

Manuel Giraud via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@gnu.org> writes:

> Hi Michael,

Hi Manuel,

>>>   tramp-file-name-handler(expand-file-name #("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil)
>>>   expand-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)))
>>>   desktop-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) "/home/manuel/.emacs.d/")
>>
>> desktop-file-name calls expand-file-name, which triggers Tramp
>> actions.
>
> So do you think it should be fixed into 'desktop-file-name'?

I don't know desktop-file-name and its intention. If it shouldn't
trigger remote actions, the function must let-bind non-essential to t.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 12:56       ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-23 13:25         ` Michael Albinus
@ 2023-10-23 14:21         ` Eli Zaretskii
  2023-10-23 14:55           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
                             ` (2 more replies)
  1 sibling, 3 replies; 27+ messages in thread
From: Eli Zaretskii @ 2023-10-23 14:21 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 66697

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 66697@debbugs.gnu.org
> Date: Mon, 23 Oct 2023 14:56:33 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> [...]
> 
> > So you are saying that, even though these buffers are in
> > desktop-files-not-to-save value, Emacs still asks for a password for
> > them when desktop.el saves the desktop?
> 
> Yes.
> 
> > If so, can you set debug-on-quit non-nil and when Emacs prompts for
> > the password, type C-g and post the backtrace here?
> 
> I have already (kind of) done that when trying to find out this issue:
> I've placed a 'debug' call into 'tramp-read-passwd'.  Here is what I
> get:
> 
> --8<---------------cut here---------------start------------->8---
> Debugger entered: nil
>   (let* ((default-directory tramp-compat-temporary-file-directory) (case-fold-search t) (vec (tramp-get-connection-property proc "password-vector" (process-get proc 'tramp-vector))) (key (tramp-make-tramp-file-name vec 'noloc)) (method (let* ((cl-x vec)) (progn (or (let* (...) (progn ...)) (signal 'wrong-type-argument (list ... cl-x))) (nth 1 cl-x)))) (user (or (tramp-file-name-user-domain vec) (tramp-get-connection-property key "login-as"))) (host (tramp-file-name-host-port vec)) (pw-prompt (or prompt (save-current-buffer (set-buffer (process-buffer proc)) (tramp-check-for-regexp proc tramp-password-prompt-regexp) (if (string-match-p "passphrase" (match-string 1)) (match-string 0) (format "%s for %s " (capitalize ...) key))))) (auth-source-creation-prompts (list (cons 'secret pw-prompt))) (auth-sources (buffer-local-value 'auth-sources (process-buffer proc))) auth-info auth-passwd tramp-dont-suspend-timers) (debug) (unwind-protect (or (setq tramp-password-save-function nil) (condition-case nil (progn (and (tramp-get-connection-property vec "first-password-request") (progn (setq auth-info ...) (setq tramp-password-save-function ...) (setq auth-passwd ...)))) (error nil)) (if tramp-dont-suspend-timers (progn (progn (setq auth-passwd (password-read pw-prompt key)) (setq tramp-password-save-function #'...)) auth-passwd) (let ((stimers (with-timeout-suspend)) timer-list timer-idle-list) (unwind-protect (progn (progn ... ...) auth-passwd) (with-timeout-unsuspend stimers))))) (if (tramp-string-empty-or-nil-p auth-passwd) (progn (setq tramp-password-save-function nil))) (tramp-set-connection-property vec "first-password-request" nil)))
>   tramp-read-passwd(#<process *tramp/doas root@bb*>)
>   tramp-action-password(#<process *tramp/doas root@bb*> (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil))
>   tramp-process-one-action(#<process *tramp/doas root@bb*> (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) ((tramp-login-prompt-regexp tramp-action-login) (tramp-password-prompt-regexp tramp-action-password) (tramp-otp-password-prompt-regexp tramp-action-otp-password) (tramp-wrong-passwd-regexp tramp-action-permission-denied) (shell-prompt-pattern tramp-action-succeed) (tramp-shell-prompt-pattern tramp-action-succeed) (tramp-yesno-prompt-regexp tramp-action-yesno) (tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-regexp tramp-action-terminal) (tramp-antispoof-regexp tramp-action-confirm-message) (tramp-security-key-confirm-regexp tramp-action-show-and-confirm-message) (tramp-process-alive-regexp tramp-action-process-alive)))
>   tramp-process-actions(#<process *tramp/doas root@bb*> (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) 1 ((tramp-login-prompt-regexp tramp-action-login) (tramp-password-prompt-regexp tramp-action-password) (tramp-otp-password-prompt-regexp tramp-action-otp-password) (tramp-wrong-passwd-regexp tramp-action-permission-denied) (shell-prompt-pattern tramp-action-succeed) (tramp-shell-prompt-pattern tramp-action-succeed) (tramp-yesno-prompt-regexp tramp-action-yesno) (tramp-yn-prompt-regexp tramp-action-yn) (tramp-terminal-prompt-regexp tramp-action-terminal) (tramp-antispoof-regexp tramp-action-confirm-message) (tramp-security-key-confirm-regexp tramp-action-show-and-confirm-message) (tramp-process-alive-regexp tramp-action-process-alive)) 10)
>   tramp-maybe-open-connection((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil))
>   tramp-send-command((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("echo ~root 2>/dev/null; echo tramp_exit_status $?" 6 10 (tramp-default t)))
>   tramp-send-command-and-check((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("echo ~root" 6 10 (tramp-default t)))
>   tramp-sh-handle-get-home-directory((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t)))
>   apply(tramp-sh-handle-get-home-directory ((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t))))
>   tramp-sh-file-name-handler(tramp-get-home-directory (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t)))
>   apply(tramp-sh-file-name-handler tramp-get-home-directory ((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t))))
>   tramp-file-name-handler(tramp-get-home-directory (tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t)))
>   tramp-get-home-directory((tramp-file-name "doas" #("root" 0 4 (tramp-default t)) nil #("bb" 0 2 (tramp-default t)) nil "~/" nil) #("root" 0 4 (tramp-default t)))
>   tramp-sh-handle-expand-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil)
>   apply(tramp-sh-handle-expand-file-name (#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil))
>   tramp-sh-file-name-handler(expand-file-name #("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil)
>   apply(tramp-sh-file-name-handler expand-file-name (#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil))
>   tramp-file-name-handler(expand-file-name #("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) nil)
>   expand-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)))
>   desktop-file-name(#("/doas:root@bb:~/" 6 10 (tramp-default t) 11 13 (tramp-default t)) "/home/manuel/.emacs.d/")
>   dired-desktop-buffer-misc-data("/home/manuel/.emacs.d/")
>   desktop-buffer-info(#<buffer ~</doas:root@bb:>>)
>   mapcar(desktop-buffer-info (#<buffer xterm.h> #<buffer tramp.el> #<buffer  *Minibuf-1*> #<buffer desktop.el> #<buffer ~</doas:root@bb:>> #<buffer  *Minibuf-2*> #<buffer init.el> #<buffer net> #<buffer tramp-cmds.el<emacs-repo>> #<buffer tramp-sh.el> #<buffer tramp-cmds.el<30.0.50>> #<buffer NEWS> #<buffer tramp.texi> #<buffer *info*> #<buffer files.el<emacs-repo>> #<buffer *vc-dir*<emacs-repo>> #<buffer tmp> #<buffer files.el<30.0.50>> #<buffer *eww*> #<buffer build-emacs.sh> #<buffer .xsession> #<buffer emacs.c> #<buffer terminal.c> #<buffer termhooks.h> #<buffer haikuterm.c> #<buffer xterm.c> #<buffer androidfns.c> #<buffer pgtkfns.c> #<buffer haikufns.c> #<buffer xfns.c> #<buffer widget.c> #<buffer gtkutil.c> #<buffer result> #<buffer lisp.h> #<buffer eval.c> #<buffer alloc.c> #<buffer ~</home>> #<buffer config.h> #<buffer pdumper.c> #<buffer dotfiles> #<buffer x> #<buffer bin> #<buffer *vc-dir*<sys>> #<buffer patches> #<buffer emacs<editors>> #<buffer vc.el> #<buffer bar.txt> #<buffer bar> #<buffer foo.txt> ...))
>   desktop-save("/home/manuel/.emacs.d/" nil t)
>   desktop-auto-save()
>   apply(desktop-auto-save nil)
>   timer-event-handler([t 0 30 0 nil desktop-auto-save nil idle 0 nil])
> --8<---------------cut here---------------end--------------->8---

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.

Alternatively, we could refrain calling desktop-buffer-info on buffers
for which desktop-save-buffer-p returns nil.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 14:21         ` Eli Zaretskii
@ 2023-10-23 14:55           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-23 15:46           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-24  9:21           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2 siblings, 0 replies; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-23 14:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66697

Eli Zaretskii <eliz@gnu.org> 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.

Ok, I'll investigate here then.

> Alternatively, we could refrain calling desktop-buffer-info on buffers
> for which desktop-save-buffer-p returns nil.

That was kind of what my patch does… but it creates new issues because
'desktop-save-buffer-p' handles many test cases against file-name,
buffer-name and mode.  And file-name, buffer-name and mode are all
retrieved into 'desktop-buffer-info'.
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 13:33           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-23 14:07             ` Michael Albinus
@ 2023-10-23 15:21             ` Michael Albinus
  1 sibling, 0 replies; 27+ messages in thread
From: Michael Albinus @ 2023-10-23 15:21 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 66697, eliz

Manuel Giraud <manuel@ledu-giraud.fr> writes:

> Hi Michael,

Hi Manual,

>> desktop-file-name calls expand-file-name, which triggers Tramp
>> actions.
>
> So do you think it should be fixed into 'desktop-file-name'?

I don't know desktop.el, so I don't think anything where to fix ...

Best regards, Michael.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 14:21         ` Eli Zaretskii
  2023-10-23 14:55           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-10-23 15:46           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-24  9:21           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2 siblings, 0 replies; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-23 15:46 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66697

Eli Zaretskii <eliz@gnu.org> 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.

I just did another test that could confirm that dired is misbehaving
here: Emacs does not ask for password if I just have a remote *file*
opened.
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-23 14:21         ` Eli Zaretskii
  2023-10-23 14:55           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-23 15:46           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-10-24  9:21           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-24 11:56             ` Eli Zaretskii
  2 siblings, 1 reply; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-24  9:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66697

[-- Attachment #1: Type: text/plain, Size: 360 bytes --]

Eli Zaretskii <eliz@gnu.org> 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:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: dired.diff --]
[-- Type: text/x-patch, Size: 1928 bytes --]

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

[-- Attachment #3: Type: text/plain, Size: 25 bytes --]


WDYT?
-- 
Manuel Giraud

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-24  9:21           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-10-24 11:56             ` Eli Zaretskii
  2023-10-24 12:00               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-24 13:18               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 2 replies; 27+ messages in thread
From: Eli Zaretskii @ 2023-10-24 11:56 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 66697

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 66697@debbugs.gnu.org
> Date: Tue, 24 Oct 2023 11:21:21 +0200
> 
> Eli Zaretskii <eliz@gnu.org> 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:

Sounds right, but don't you get byte-compiler warnings about
desktop-files-not-to-save not being known?





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-24 11:56             ` Eli Zaretskii
@ 2023-10-24 12:00               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-24 13:18               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 0 replies; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-24 12:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66697

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Manuel Giraud <manuel@ledu-giraud.fr>
>> Cc: 66697@debbugs.gnu.org
>> Date: Tue, 24 Oct 2023 11:21:21 +0200
>> 
>> Eli Zaretskii <eliz@gnu.org> 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:
>
> Sounds right, but don't you get byte-compiler warnings about
> desktop-files-not-to-save not being known?

I haven't properly built Emacs with this, yet.  I'll try and report.
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-24 11:56             ` Eli Zaretskii
  2023-10-24 12:00               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-10-24 13:18               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-31 21:14                 ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-11-04  8:05                 ` Eli Zaretskii
  1 sibling, 2 replies; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-24 13:18 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66697

[-- Attachment #1: Type: text/plain, Size: 298 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

[...]

> Sounds right, but don't you get byte-compiler warnings about
> desktop-files-not-to-save not being known?

I did not get a warning about desktop-files-not-to-save but I get one
about shadowing dired-directory.  So I fixed the patch with this new
one.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-desktop-save-on-remote-dired-bug-66697.patch --]
[-- Type: text/x-patch, Size: 2446 bytes --]

From 6c32d99a9f1e8c813550c5a2540ef41ea2d59844 Mon Sep 17 00:00:00 2001
From: Manuel Giraud <manuel@ledu-giraud.fr>
Date: Tue, 24 Oct 2023 14:51:04 +0200
Subject: [PATCH] Fix desktop-save on remote dired (bug#66697)

Do not gather "misc data" for dired buffer not meant to be
desktop saved.

lisp/dired.el (dired-desktop-save-p): New function to test if
`dired-directory' should be desktop saved.
(dired-desktop-buffer-misc-data): Use it.
---
 lisp/dired.el | 36 ++++++++++++++++++++++--------------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git a/lisp/dired.el b/lisp/dired.el
index cc8c74839b9..4337480e2b5 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-save-p ()
+  "Should `dired-directory' be 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-save-p))
+    (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
-- 
2.42.0


[-- Attachment #3: Type: text/plain, Size: 18 bytes --]

-- 
Manuel Giraud

^ permalink raw reply related	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-24 13:18               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-10-31 21:14                 ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-11-01  3:28                   ` Eli Zaretskii
  2023-11-04  8:05                 ` Eli Zaretskii
  1 sibling, 1 reply; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-31 21:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66697

Manuel Giraud <manuel@ledu-giraud.fr> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
> [...]
>
>> Sounds right, but don't you get byte-compiler warnings about
>> desktop-files-not-to-save not being known?
>
> I did not get a warning about desktop-files-not-to-save but I get one
> about shadowing dired-directory.  So I fixed the patch with this new
> one.

Hi Eli,

Do you think you could commit it on master?
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-31 21:14                 ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-11-01  3:28                   ` Eli Zaretskii
  2023-11-01 10:20                     ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 27+ messages in thread
From: Eli Zaretskii @ 2023-11-01  3:28 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 66697

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 66697@debbugs.gnu.org
> Date: Tue, 31 Oct 2023 22:14:18 +0100
> 
> Manuel Giraud <manuel@ledu-giraud.fr> writes:
> 
> > Eli Zaretskii <eliz@gnu.org> writes:
> >
> > [...]
> >
> >> Sounds right, but don't you get byte-compiler warnings about
> >> desktop-files-not-to-save not being known?
> >
> > I did not get a warning about desktop-files-not-to-save but I get one
> > about shadowing dired-directory.  So I fixed the patch with this new
> > one.
> 
> Hi Eli,
> 
> Do you think you could commit it on master?

It's on my todo, waiting for possible comments by others.  No need to
ping me yet, since you posted your final version just a few days ago.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-11-01  3:28                   ` Eli Zaretskii
@ 2023-11-01 10:20                     ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-11-01 12:15                       ` Eli Zaretskii
  0 siblings, 1 reply; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-11-01 10:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 66697

Eli Zaretskii <eliz@gnu.org> writes:

[...]

> It's on my todo, waiting for possible comments by others.  No need to
> ping me yet, since you posted your final version just a few days ago.

Alright and sorry for this.  What would be a good ping delay?
-- 
Manuel Giraud





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-11-01 10:20                     ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-11-01 12:15                       ` Eli Zaretskii
       [not found]                         ` <87fs0csri9.fsf@ledu-giraud.fr>
  0 siblings, 1 reply; 27+ messages in thread
From: Eli Zaretskii @ 2023-11-01 12:15 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 66697

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 66697@debbugs.gnu.org
> Date: Wed, 01 Nov 2023 11:20:47 +0100
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> [...]
> 
> > It's on my todo, waiting for possible comments by others.  No need to
> > ping me yet, since you posted your final version just a few days ago.
> 
> Alright and sorry for this.  What would be a good ping delay?

After at least two weeks have passed, or thereabouts.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-10-24 13:18               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-10-31 21:14                 ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-11-04  8:05                 ` Eli Zaretskii
  1 sibling, 0 replies; 27+ messages in thread
From: Eli Zaretskii @ 2023-11-04  8:05 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: 66697-done

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 66697@debbugs.gnu.org
> Date: Tue, 24 Oct 2023 15:18:47 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> [...]
> 
> > Sounds right, but don't you get byte-compiler warnings about
> > desktop-files-not-to-save not being known?
> 
> I did not get a warning about desktop-files-not-to-save but I get one
> about shadowing dired-directory.  So I fixed the patch with this new
> one.

Thanks, installed on master, and closing the bug.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
       [not found]                         ` <87fs0csri9.fsf@ledu-giraud.fr>
@ 2023-12-08 16:02                           ` Andy Moreton
  2023-12-09 10:06                           ` Eli Zaretskii
  1 sibling, 0 replies; 27+ messages in thread
From: Andy Moreton @ 2023-12-08 16:02 UTC (permalink / raw)
  To: Manuel Giraud, Eli Zaretskii; +Cc: 66697

On 08/12/2023 14:22, Manuel Giraud wrote:
> Hi Andy,
>
> Could you try the attached patch to see if it fixes your issue?  Thanks.

Yes, that works. Thanks for the fix.

     AndyM






^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
       [not found]                         ` <87fs0csri9.fsf@ledu-giraud.fr>
  2023-12-08 16:02                           ` Andy Moreton
@ 2023-12-09 10:06                           ` Eli Zaretskii
  2023-12-09 12:05                             ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 1 reply; 27+ messages in thread
From: Eli Zaretskii @ 2023-12-09 10:06 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: andrewjmoreton, 66697

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 66697@debbugs.gnu.org, Andy Moreton <andrewjmoreton@gmail.com>
> Date: Fri, 08 Dec 2023 15:22:54 +0100
> 
> Hi Andy,
> 
> Could you try the attached patch to see if it fixes your issue?  Thanks.
>  (defun dired-desktop-buffer-misc-data (dirname)
>    "Auxiliary information to be saved in desktop file."
> -  (when (and (stringp desktop-files-not-to-save)
> -             (dired-desktop-save-p))
> +  (when (or (null desktop-files-not-to-save)
> +            (and (stringp desktop-files-not-to-save)
> +                 (dired-desktop-save-p)))
>      (cons
>       ;; Value of `dired-directory'.
>       (if (consp dired-directory)

Thanks, but I wonder whether a better way would be to modify
dired-desktop-save-p such that it handled correctly non-string values
of desktop-files-not-to-save?  That would make the handling of this
variable more local, which is better for maintenance, I think.

WDYT?





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-12-09 10:06                           ` Eli Zaretskii
@ 2023-12-09 12:05                             ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-12-09 13:16                               ` Eli Zaretskii
  0 siblings, 1 reply; 27+ messages in thread
From: Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-12-09 12:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: andrewjmoreton, 66697

[-- Attachment #1: Type: text/plain, Size: 386 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

[...]

> Thanks, but I wonder whether a better way would be to modify
> dired-desktop-save-p such that it handled correctly non-string values
> of desktop-files-not-to-save?  That would make the handling of this
> variable more local, which is better for maintenance, I think.
>
> WDYT?

Sure.  Good idea.  Here is a new version.
-- 
Manuel Giraud

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-desktop-save-for-dired-buffers-bug-66697.patch --]
[-- Type: text/x-patch, Size: 1506 bytes --]

From b421faf27c38d7ce8d3c4f39df68f21d2eccc735 Mon Sep 17 00:00:00 2001
From: Manuel Giraud <manuel@ledu-giraud.fr>
Date: Sat, 9 Dec 2023 13:02:19 +0100
Subject: [PATCH] Fix desktop-save for dired buffers (bug#66697)

* lisp/dired.el (dired-desktop-save-p): Move all logic here.  Carry on
when 'desktop-files-not-to-save' is nil.
(dired-desktop-buffer-misc-data): Use it.
---
 lisp/dired.el | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/lisp/dired.el b/lisp/dired.el
index 7f4b96353ee..36ca54efc37 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -4989,14 +4989,15 @@ dired-dnd-handle-file
 
 (defun dired-desktop-save-p ()
   "Should `dired-directory' be 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))))
+  (or (null desktop-files-not-to-save)
+      (and (stringp desktop-files-not-to-save)
+           (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."
-  (when (and (stringp desktop-files-not-to-save)
-             (dired-desktop-save-p))
+  (when (dired-desktop-save-p)
     (cons
      ;; Value of `dired-directory'.
      (if (consp dired-directory)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-12-09 12:05                             ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-12-09 13:16                               ` Eli Zaretskii
  2023-12-09 15:24                                 ` Andy Moreton
  0 siblings, 1 reply; 27+ messages in thread
From: Eli Zaretskii @ 2023-12-09 13:16 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: andrewjmoreton, 66697

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: 66697@debbugs.gnu.org,  andrewjmoreton@gmail.com
> Date: Sat, 09 Dec 2023 13:05:24 +0100
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> [...]
> 
> > Thanks, but I wonder whether a better way would be to modify
> > dired-desktop-save-p such that it handled correctly non-string values
> > of desktop-files-not-to-save?  That would make the handling of this
> > variable more local, which is better for maintenance, I think.
> >
> > WDYT?
> 
> Sure.  Good idea.  Here is a new version.

Thanks, installed.

Andy, please test.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-12-09 13:16                               ` Eli Zaretskii
@ 2023-12-09 15:24                                 ` Andy Moreton
  2023-12-09 15:45                                   ` Eli Zaretskii
  0 siblings, 1 reply; 27+ messages in thread
From: Andy Moreton @ 2023-12-09 15:24 UTC (permalink / raw)
  To: Eli Zaretskii, Manuel Giraud; +Cc: 66697

On 09/12/2023 13:16, Eli Zaretskii wrote:
>> From: Manuel Giraud <manuel@ledu-giraud.fr>
>> Cc: 66697@debbugs.gnu.org,  andrewjmoreton@gmail.com
>> Date: Sat, 09 Dec 2023 13:05:24 +0100
>>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>> [...]
>>
>>> Thanks, but I wonder whether a better way would be to modify
>>> dired-desktop-save-p such that it handled correctly non-string values
>>> of desktop-files-not-to-save?  That would make the handling of this
>>> variable more local, which is better for maintenance, I think.
>>>
>>> WDYT?
>> Sure.  Good idea.  Here is a new version.
> Thanks, installed.
>
> Andy, please test.

All good, and the new patch is a cleaner fix.

Thanks,

     AndyM






^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers
  2023-12-09 15:24                                 ` Andy Moreton
@ 2023-12-09 15:45                                   ` Eli Zaretskii
  0 siblings, 0 replies; 27+ messages in thread
From: Eli Zaretskii @ 2023-12-09 15:45 UTC (permalink / raw)
  To: Andy Moreton; +Cc: manuel, 66697-done

> Date: Sat, 9 Dec 2023 15:24:54 +0000
> Cc: 66697@debbugs.gnu.org
> From: Andy Moreton <andrewjmoreton@gmail.com>
> 
> On 09/12/2023 13:16, Eli Zaretskii wrote:
> >> From: Manuel Giraud <manuel@ledu-giraud.fr>
> >> Cc: 66697@debbugs.gnu.org,  andrewjmoreton@gmail.com
> >> Date: Sat, 09 Dec 2023 13:05:24 +0100
> >>
> >> Eli Zaretskii <eliz@gnu.org> writes:
> >>
> >> [...]
> >>
> >>> Thanks, but I wonder whether a better way would be to modify
> >>> dired-desktop-save-p such that it handled correctly non-string values
> >>> of desktop-files-not-to-save?  That would make the handling of this
> >>> variable more local, which is better for maintenance, I think.
> >>>
> >>> WDYT?
> >> Sure.  Good idea.  Here is a new version.
> > Thanks, installed.
> >
> > Andy, please test.
> 
> All good, and the new patch is a cleaner fix.

Thanks, closing.





^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2023-12-09 15:45 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-23  9:21 bug#66697: 30.0.50; [PATCH] desktop-save-mode with expiring remote buffers Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-23 11:41 ` Eli Zaretskii
2023-10-23 12:34   ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-23 12:47     ` Eli Zaretskii
2023-10-23 12:56       ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-23 13:25         ` Michael Albinus
2023-10-23 13:33           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-23 14:07             ` Michael Albinus
2023-10-23 15:21             ` Michael Albinus
2023-10-23 14:21         ` Eli Zaretskii
2023-10-23 14:55           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-23 15:46           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-24  9:21           ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-24 11:56             ` Eli Zaretskii
2023-10-24 12:00               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-24 13:18               ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-31 21:14                 ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-11-01  3:28                   ` Eli Zaretskii
2023-11-01 10:20                     ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-11-01 12:15                       ` Eli Zaretskii
     [not found]                         ` <87fs0csri9.fsf@ledu-giraud.fr>
2023-12-08 16:02                           ` Andy Moreton
2023-12-09 10:06                           ` Eli Zaretskii
2023-12-09 12:05                             ` Manuel Giraud via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-12-09 13:16                               ` Eli Zaretskii
2023-12-09 15:24                                 ` Andy Moreton
2023-12-09 15:45                                   ` Eli Zaretskii
2023-11-04  8:05                 ` Eli Zaretskii

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.