2019-12-20 00:44:58 -05:00
|
|
|
;;; ui/zen/config.el -*- lexical-binding: t; -*-
|
|
|
|
|
2021-03-09 16:20:50 -05:00
|
|
|
(defvar +zen-mixed-pitch-modes '(adoc-mode rst-mode markdown-mode org-mode)
|
2019-12-20 00:44:58 -05:00
|
|
|
"What major-modes to enable `mixed-pitch-mode' in with `writeroom-mode'.")
|
|
|
|
|
2020-01-09 21:41:56 -05:00
|
|
|
(defvar +zen-text-scale 2
|
2020-01-02 21:54:28 -05:00
|
|
|
"The text-scaling level for `writeroom-mode'.")
|
|
|
|
|
2020-08-21 22:16:39 -04:00
|
|
|
(defvar +zen-window-divider-size 4
|
|
|
|
"Pixel size of window dividers when `writeroom-mode' is active.")
|
|
|
|
|
2020-10-05 16:03:42 -04:00
|
|
|
(defvar +zen--old-window-divider-size nil)
|
2020-08-21 22:16:39 -04:00
|
|
|
|
2019-12-20 00:44:58 -05:00
|
|
|
|
|
|
|
;;
|
|
|
|
;;; Packages
|
|
|
|
|
|
|
|
(after! writeroom-mode
|
2020-01-09 02:45:41 -05:00
|
|
|
;; Users should be able to activate writeroom-mode in one buffer (e.g. an org
|
2021-02-24 15:51:41 -05:00
|
|
|
;; buffer) and code in another. No global behavior should be applied.
|
|
|
|
;; Fullscreening/maximizing will be opt-in.
|
|
|
|
(defvar +zen--old-writeroom-global-effects writeroom-global-effects)
|
|
|
|
(setq writeroom-global-effects nil)
|
2020-01-09 02:45:41 -05:00
|
|
|
(setq writeroom-maximize-window nil)
|
2019-12-20 00:44:58 -05:00
|
|
|
|
2021-05-07 02:27:51 -04:00
|
|
|
(add-hook! 'writeroom-mode-hook :append
|
2020-01-09 02:47:06 -05:00
|
|
|
(defun +zen-enable-text-scaling-mode-h ()
|
2020-01-02 21:54:28 -05:00
|
|
|
"Enable `mixed-pitch-mode' when in `+zen-mixed-pitch-modes'."
|
|
|
|
(when (/= +zen-text-scale 0)
|
2020-02-06 15:28:51 -05:00
|
|
|
(text-scale-set (if writeroom-mode +zen-text-scale 0))
|
2021-05-07 02:27:51 -04:00
|
|
|
(visual-fill-column-adjust))))
|
|
|
|
|
|
|
|
(add-hook! 'global-writeroom-mode-hook
|
2020-08-21 22:16:39 -04:00
|
|
|
(defun +zen-toggle-large-window-dividers-h ()
|
|
|
|
"Make window dividers larger and easier to see."
|
|
|
|
(when (bound-and-true-p window-divider-mode)
|
2020-10-05 16:03:42 -04:00
|
|
|
(if writeroom-mode
|
|
|
|
(setq +zen--old-window-divider-size
|
|
|
|
(cons window-divider-default-bottom-width
|
|
|
|
window-divider-default-right-width)
|
2020-08-21 22:16:39 -04:00
|
|
|
window-divider-default-bottom-width +zen-window-divider-size
|
|
|
|
window-divider-default-right-width +zen-window-divider-size)
|
2021-03-05 20:05:20 -05:00
|
|
|
(when +zen--old-window-divider-size
|
|
|
|
(setq window-divider-default-bottom-width (car +zen--old-window-divider-size)
|
|
|
|
window-divider-default-right-width (cdr +zen--old-window-divider-size))))
|
2020-08-21 22:16:39 -04:00
|
|
|
(window-divider-mode +1))))
|
2020-01-02 21:54:28 -05:00
|
|
|
|
2019-12-20 00:44:58 -05:00
|
|
|
;; Adjust margins when text size is changed
|
|
|
|
(advice-add #'text-scale-adjust :after #'visual-fill-column-adjust))
|
|
|
|
|
|
|
|
|
|
|
|
(use-package! mixed-pitch
|
|
|
|
:hook (writeroom-mode . +zen-enable-mixed-pitch-mode-h)
|
|
|
|
:config
|
|
|
|
(defun +zen-enable-mixed-pitch-mode-h ()
|
|
|
|
"Enable `mixed-pitch-mode' when in `+zen-mixed-pitch-modes'."
|
|
|
|
(when (apply #'derived-mode-p +zen-mixed-pitch-modes)
|
|
|
|
(mixed-pitch-mode (if writeroom-mode +1 -1))))
|
|
|
|
|
|
|
|
(pushnew! mixed-pitch-fixed-pitch-faces
|
2022-01-28 20:34:56 +01:00
|
|
|
'solaire-line-number-face
|
2019-12-20 00:44:58 -05:00
|
|
|
'org-date
|
2021-07-28 14:00:02 -04:00
|
|
|
'org-footnote
|
2019-12-20 00:44:58 -05:00
|
|
|
'org-special-keyword
|
|
|
|
'org-property-value
|
|
|
|
'org-ref-cite-face
|
|
|
|
'org-tag
|
|
|
|
'org-todo-keyword-todo
|
|
|
|
'org-todo-keyword-habt
|
|
|
|
'org-todo-keyword-done
|
|
|
|
'org-todo-keyword-wait
|
|
|
|
'org-todo-keyword-kill
|
|
|
|
'org-todo-keyword-outd
|
|
|
|
'org-todo
|
2020-04-18 19:07:02 +03:00
|
|
|
'org-done
|
2021-03-06 12:07:10 -05:00
|
|
|
'font-lock-comment-face))
|