Subject: bug#24298: Acknowledgement (25.1; problem with restoring desktop)

From: Eli Zaretskii <[email-masked]>
Date: Sat, 17 Dec 2016 15:11:59 +0200

> Date: Sat, 10 Dec 2016 13:46:15 -0500
> From: John Covici <[email-masked]>
> Cc: [email-masked]
> 
> > > I am sorry, it wasn't a makefile, you are correct.  OK, let me try
> > > again.  Before the restore commit, when I enter emacs, the current
> > > buffer is brltty-9999.ebuild but after the commit the current buffer
> > > is the default.xml.    Before the restore commit, if I do c-x-b the
> > > default buffer it wants to switch to is default.xml.  After the
> > > restore commit, when the current buffer is default.xml when it should
> > > be brltty-9999.ebuild the default buffer to switch to is the scratch
> > > buffer.  In a desktop with many buffers, after the restore commit, it
> > > seems to pick a random buffer to be the current buffer rather than the
> > > one it should be.
> > > 
> > > I hope this is clear now.
> > 
> > It is, thanks.  But please also answer my question above about the
> > order of buffers in the list returned by buffer-list, before you quite
> > Emacs which writes the desktop file.
> 
> Here is what I have before the restore commit.
> 
> CRM Buffer                 Size Mode             File
> .   brltty-9999.ebuild     4916 Text
> /usr/local/portage/app-accessibility/brltty/brltty-9999.ebuild
>     default.xml           48920 nXML Invalid
>     /etc/freeswitch/conf/dialplan/default.xml
>      %* *Completions*           275 Completion List
> 	    *scratch*               145 Lisp Interaction
> 	     %* *Messages*              578 Messages
> 
> And here is what I get after the commit
> CRM Buffer                 Size Mode             File
>     *scratch*               145 Lisp Interaction
>      %* *Messages*              206 Messages
> 	    brltty-9999.ebuild     4916 Text
> 	    /usr/local/portage/app-accessibility/brltty/brltty-9999.ebuild
> 	    .   default.xml           48920 nXML Invalid
> 	    /etc/freeswitch/conf/dialplan/default.xml
> 
> and if I quit emacs and use emacs before the commit, I get the first
> one.
> 
> Hope this helps.

Thanks, can you try the patch below and see if it solves this problem?

diff --git a/lisp/desktop.el b/lisp/desktop.el
index 1f460b7..e83891b 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -1157,13 +1157,13 @@ desktop-lazy-timer
 ;; ----------------------------------------------------------------------------
 (defun desktop-restoring-frameset-p ()
   "True if calling `desktop-restore-frameset' will actually restore it."
-  (and desktop-restore-frames desktop-saved-frameset t))
+  (and desktop-restore-frames desktop-saved-frameset (display-graphic-p) t))
 
 (defun desktop-restore-frameset ()
   "Restore the state of a set of frames.
 This function depends on the value of `desktop-saved-frameset'
 being set (usually, by reading it from the desktop)."
-  (when (and (display-graphic-p) (desktop-restoring-frameset-p))
+  (when (desktop-restoring-frameset-p)
     (frameset-restore desktop-saved-frameset
 		      :reuse-frames (eq desktop-restore-reuses-frames t)
 		      :cleanup-frames (not (eq desktop-restore-reuses-frames 'keep))