Subject: bug#54140: 27.2; desktop-save-mode fails to restore frame and window config

From: Mark Jamsek <[email-masked]>
Date: Thu, 24 Feb 2022 21:04:26 +1100

According to the docs[0][1], both tab bar and window config should be
saved and restored with =(desktop-save-mode 1)=, but only buffers are
restored. This behaviour is consistent irrespective of whether using
=(desktop-save-mode 1)= in =init.el=, or manually calling =desktop-save=
and =desktop-read= to save and restore a saved session.

Tested on Emacs 27.2:
  OpenBSD 7.0-current amd64
  OpenBSD 7.1-beta amd64
  macOS 10.15.7 Darwin Kernel 19.6.0 x86_64
  macOS 12.2.1 Darwin Kernel 21.3.0 x86_64

Steps:
Set =(desktop-save-mode 1)= in =init.el= as described in the docs[0].
Start Emacs, and setup tabs and windows.
Close and restart Emacs.

Expected:
Emacs tab bar and window config is saved and restored at startup.

Actual:
Emacs creates a =.emacs.desktop= file; however, upon restart, only the
buffers are restored--not the frame and window configuration. Likewise,
any tab bar configuration is also lost.

[0]:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Saving-Emacs-Sessions.html
[1]:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Tab-Bars.html

----8<------------------------------------------------------------------

In GNU Emacs 27.2 (build 1, x86_64-unknown-openbsd)
 of 2022-02-22 built on amd64.ports.openbsd.org
System Description: OpenBSD fnc.bsdbox.org 7.0 GENERIC.MP#267 amd64

Recent messages:
Defining kbd macro...
Keyboard macro defined
Defining kbd macro...
Keyboard macro defined
Quit
Configured using:
 'configure --build=amd64-unknown-openbsd --without-sound --without-x
 --without-dbus --without-gsettings --without-harfbuzz --without-jpeg
 --without-lcms2 --without-libotf --without-m17n-flt --prefix=/usr/local
 --sysconfdir=/etc --mandir=/usr/local/man --infodir=/usr/local/info
 --localstatedir=/var --disable-silent-rules --disable-gtk-doc
 'CFLAGS=-O2 -pipe -g' CPPFLAGS=-I/usr/local/include
 'LDFLAGS=-L/usr/local/lib -g''

Configured features:
NOTIFY KQUEUE GNUTLS LIBXML2 ZLIB MODULES THREADS JSON PDUMPER GMP

Important settings:
  locale-coding-system: nil

Major mode: Org

Minor modes in effect:
  evil-org-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  evil-leader-mode: t
  shell-dirtrack-mode: t
  evil-mode: t
  evil-local-mode: t
  desktop-save-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  tab-bar-history-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug sendmail rx term/screen term/xterm xterm
ol-eww eww mm-url url-queue ol-rmail ol-mhe ol-irc ol-info ol-gnus nnir
gnus-sum url url-proxy url-privacy url-expand url-methods url-history
mailcap shr url-cookie url-domsuf url-util svg xml dom gnus-group
gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc
nnoo parse-time iso8601 gnus-spec gnus-int gnus-range message rmc puny
rfc822 mml mml-sec epa derived epg epg-config mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader gnus-win
gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
text-property-search mail-utils mm-util mail-prsvr wid-edit ol-docview
doc-view jka-compr image-mode exif image dired dired-loaddefs ol-bibtex
bibtex ol-bbdb ol-w3m sh-script smie executable powerline-evil
powerline-evil-themes powerline powerline-separators color
powerline-themes evil-org org-element avl-tree generator
evil-indent-textobject evil-surround evil-leader evil evil-keybindings
evil-integration evil-maps evil-commands reveal flyspell ispell
evil-jumps evil-command-window evil-search evil-ex shell evil-types
evil-macros evil-repeat evil-states evil-core evil-common windmove calc
calc-loaddefs calc-macs thingatpt rect evil-digraphs evil-vars edmacro
kmacro desktop frameset use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
use-package-core cl-extra help-mode org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete
pcomplete comint ansi-color ring org-list org-faces org-entities
time-date noutline outline easy-mmode org-version ob-emacs-lisp ob-core
ob-eval org-table ol regexp-opt org-keys org-compat advice org-macs
org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs
finder-inf disp-table info tool-bar package easymenu browse-url
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv
bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type tabulated-list replace
newcomment text-mode elisp-mode lisp-mode prog-mode register page
tab-bar menu-bar rfn-eshadow isearch timer select mouse jit-lock
font-lock syntax facemenu font-core term/tty-colors frame minibuffer
cl-generic 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
charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev
obarray cl-preloaded nadvice loaddefs button faces cus-face macroexp
files text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads kqueue
multi-tty make-network-process emacs)

Memory information:
((conses 16 230209 20234)
 (symbols 48 24411 1)
 (strings 32 79904 3145)
 (string-bytes 1 2588990)
 (vectors 16 35447)
 (vector-slots 8 381564 11626)
 (floats 8 398 343)
 (intervals 56 428 122)
 (buffers 1000 17))

--
Mark Jamsek <[email-masked]>