branch: externals/bufferlo
commit c2d618e5d9dc7d175632c6fa29e76743a7bcc199
Author: shipmints <shipmi...@gmail.com>
Commit: shipmints <shipmi...@gmail.com>

    Better frameset-restore with the presence of fullscreen in 
default-frame-alist
    
    frameset-restore has some issues. Read the code.
    
    Change redisplay calls to sit-for 0 in keeping with core Emacs usage.
---
 bufferlo.el | 46 +++++++++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/bufferlo.el b/bufferlo.el
index 529e573cc0..779186d466 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -2294,8 +2294,7 @@ CANDIDATES are the prompt options to select."
     (setq comps (seq-uniq (mapcar (lambda (x) (substring-no-properties x)) 
comps)))))
 
 (defvar bufferlo--frameset-save-filter ; filter out vs. 
frameset-persistent-filter-alist
-  '(
-    alpha
+  '(alpha
     alpha-background
     auto-lower
     auto-raise
@@ -2361,8 +2360,7 @@ CANDIDATES are the prompt options to select."
     z-group))
 
 (defvar bufferlo--frameset-restore-filter
-  '(
-    GUI:bottom
+  '(GUI:bottom
     GUI:font
     GUI:fullscreen
     GUI:height
@@ -2379,8 +2377,7 @@ CANDIDATES are the prompt options to select."
     left
     right
     top
-    width
-    ))
+    width))
 
 (defun bufferlo-frame-geometry-default (frame)
   "Produce an alist for FRAME pixel-level geometry.
@@ -2410,9 +2407,9 @@ Geometry set for FRAME or the current frame, if nil."
   (let-alist frame-geometry
     (when (and .left .top .width .height) ; defensive in case geometry stored 
from a tty
       (set-frame-position nil .left .top)
-      (redisplay)
+      (sit-for 0 t)
       (set-frame-size nil .width .height 'pixelwise)
-      (redisplay))))
+      (sit-for 0 t))))
 
 (defvar bufferlo--active-sessions nil
   "Global active bufferlo sessions.
@@ -2449,22 +2446,25 @@ FRAMESET is a bufferlo-filtered `frameset'."
 
 (defun bufferlo-frameset-restore-default (frameset)
   "Invoke `frameset-restore' with FRAMESET, which see."
-  (let ((params (funcall bufferlo-frameset-restore-parameters-function)))
+  (let ((params (funcall bufferlo-frameset-restore-parameters-function))
+        ;; frameset-restore checks for fullscreen in frame parameters
+        ;; and its handling is wonky and the restore filter has no
+        ;; effect, so we remove it locally.
+        (default-frame-alist (assq-delete-all 'fullscreen 
default-frame-alist)))
     (with-temp-buffer
-      (when (ignore-errors
-              (frameset-restore frameset
-                                :filters
-                                (when (memq bufferlo-frameset-restore-geometry 
'(bufferlo nil))
-                                  (let ((filtered-alist (copy-tree 
frameset-persistent-filter-alist)))
-                                    (mapc (lambda (sym) (setf (alist-get sym 
filtered-alist) :never))
-                                          (seq-union 
bufferlo--frameset-restore-filter bufferlo-frameset-restore-filter))
-                                    filtered-alist))
-                                :reuse-frames (plist-get params :reuse-frames)
-                                :force-display (plist-get params 
:force-display)
-                                :force-onscreen (plist-get params 
:force-onscreen)
-                                :cleanup-frames (plist-get params 
:cleanup-frames))
-              t) ; frameset-restore returns neither a status nor a list of 
restored frames
-        ))))
+      (ignore-errors
+        ;; Sadly, frameset-restore returns neither a status nor a list of 
restored frames.
+        (frameset-restore frameset
+                          :filters
+                          (when (memq bufferlo-frameset-restore-geometry 
'(bufferlo nil))
+                            (let ((filtered-alist (copy-tree 
frameset-persistent-filter-alist)))
+                              (mapc (lambda (sym) (setf (alist-get sym 
filtered-alist) :never))
+                                    (seq-union 
bufferlo--frameset-restore-filter bufferlo-frameset-restore-filter))
+                              filtered-alist))
+                          :reuse-frames (plist-get params :reuse-frames)
+                          :force-display (plist-get params :force-display)
+                          :force-onscreen (plist-get params :force-onscreen)
+                          :cleanup-frames (plist-get params 
:cleanup-frames))))))
 
 (defun bufferlo--bookmark-session-handler (bookmark-record &optional 
no-message)
   "Handle bufferlo session bookmark.

Reply via email to