Reworked how frame-restore works

This commit is contained in:
Benson Chu 2023-07-20 16:54:14 -05:00
parent 4d3f958834
commit 3f97a86ae6

View file

@ -34,18 +34,22 @@
(not (string= "F1" (frame-parameter frame 'name)))))) (not (string= "F1" (frame-parameter frame 'name))))))
(visible-frame-list))) (visible-frame-list)))
(defvar fr/working-state nil) ;; Upon emacs startup, we have a valid working state
(defvar fr/working-state t)
(defvar fr/startup t)
(defun fr/give-up-working-state () (defun fr/give-up-working-state ()
(interactive) (interactive)
(setq fr/working-state t)) (setq fr/working-state t))
(fr/give-up-working-state) ;; Whenever a new frame is created, and it's the first frame that's been
;; created, our working state has been wrecked.
(add-to-list 'server-after-make-frame-hook (add-to-list 'server-after-make-frame-hook
(lambda (&rest _) (lambda (&rest _)
(when (<= (length (fr/non-tty-frames)) 1) (if fr/startup
(setq fr/working-state nil)))) (setq fr/startup nil)
(when (<= (length (fr/non-tty-frames)) 1)
(setq fr/working-state nil)))))
(defun fr/save-if-appropriate (&rest _) (defun fr/save-if-appropriate (&rest _)
(interactive) (interactive)