doomemacs/modules/ui/zen/autoload.el
Henrik Lissner 3e32379f54 ui/zen: add +zen/toggle{,-fullscreen} commands
A more reliable "Distraction-free" fullscreen mode.
2021-02-24 18:06:30 -05:00

29 lines
1.2 KiB
EmacsLisp

;;; ui/zen/autoload.el -*- lexical-binding: t; -*-
;;;###autoload
(defalias '+zen/toggle #'writeroom-mode)
(defvar +zen--last-wconf nil)
;;;###autoload
(defun +zen/toggle-fullscreen ()
"Toggle `writeroom-mode' fullscreen and delete all other windows.
Invoke again to revert to the window configuration before it was activated."
(interactive)
(require 'writeroom-mode)
(let ((writeroom-global-effects +zen--old-writeroom-global-effects)
(writeroom-maximize-window t))
(if writeroom-mode
(progn
(set-frame-parameter
nil 'fullscreen
(let ((fullscreen-restore (frame-parameter nil 'fullscreen-restore)))
(if (memq fullscreen-restore '(maximized fullheight fullwidth))
fullscreen-restore
nil)))
(set-window-configuration +zen--last-wconf))
(setq +zen--last-wconf (current-window-configuration))
(modify-frame-parameters
nil `((fullscreen . fullboth)
(fullscreen-restore . ,(frame-parameter nil 'fullscreen)))))
(let ((writeroom-global-effects (remq 'writeroom-set-fullscreen writeroom-global-effects)))
(call-interactively #'+zen/toggle))))