Improve font resizing commands

- doom/increase-font-size no longer resets the font when resizing back
  to 0 (causing an inelegant flash of the frame).
- doom/reset-font-size will now reset text-scale, as well, if it is
  being used.
- doom/*-font-size commands have been changed to only affect the current
  frame.
- doom-big-font-mode will now affect all frames (since minor modes can't
  be frame-local).
This commit is contained in:
Henrik Lissner 2019-10-26 23:39:57 -04:00
parent ccf7197acf
commit bf8cc9b007
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -58,8 +58,7 @@ FRAME parameter defaults to current frame."
(setq font (x-compose-font-name font)) (setq font (x-compose-font-name font))
(unless (x-list-fonts font) (unless (x-list-fonts font)
(error "Cannot change font size")) (error "Cannot change font size"))
(dolist (fr (doom--frame-list frame)) (set-frame-parameter frame 'font font)))
(modify-frame-parameters fr `((font . ,font))))))
;; ;;
@ -82,11 +81,9 @@ See `doom-init-fonts-h'."
(let ((zoom-factor (or (frame-parameter nil 'font-scale) 0)) (let ((zoom-factor (or (frame-parameter nil 'font-scale) 0))
(increment (* count doom-font-increment))) (increment (* count doom-font-increment)))
(setq zoom-factor (+ zoom-factor increment)) (setq zoom-factor (+ zoom-factor increment))
(if (= zoom-factor 0) (doom-adjust-font-size increment)
(doom/reset-font-size) (set-frame-parameter nil 'font-scale zoom-factor)
(doom-adjust-font-size increment) (run-hooks 'doom-change-font-size-hook)))
(modify-frame-parameters nil `((font-scale . ,zoom-factor)))
(run-hooks 'doom-change-font-size-hook))))
;;;###autoload ;;;###autoload
(defun doom/decrease-font-size (count) (defun doom/decrease-font-size (count)
@ -96,17 +93,23 @@ See `doom-init-fonts-h'."
;;;###autoload ;;;###autoload
(defun doom/reset-font-size () (defun doom/reset-font-size ()
"Reset font size. "Reset font size and `text-scale'.
Assuming it has been adjusted via `doom/increase-font-size' and Assuming it has been adjusted via `doom/increase-font-size' and
`doom/decrease-font-size'." `doom/decrease-font-size', or `text-scale-*' commands."
(interactive) (interactive)
(let ((zoom-factor (frame-parameter nil 'font-scale))) (let (success)
(if (not zoom-factor) (when (and (boundp 'text-scale-mode-amount)
(user-error "Font size hasn't been changed") (/= text-scale-mode-amount 0))
(set-frame-font doom-font t (doom--frame-list)) (text-scale-set 0)
(modify-frame-parameters nil '((font-scale))) (setq success t))
(run-hooks 'doom-change-font-size-hook)))) (when-let (factor (frame-parameter nil 'font-scale))
(set-frame-font doom-font t)
(set-frame-parameter nil 'font-scale nil)
(setq success t))
(unless success
(user-error "The font hasn't been resized"))
(run-hooks 'doom-change-font-size-hook)))
;;;###autoload ;;;###autoload
(define-minor-mode doom-big-font-mode (define-minor-mode doom-big-font-mode
@ -124,7 +127,7 @@ This uses `doom/increase-font-size' under the hood, and enlargens the font by
(if doom-big-font (if doom-big-font
(progn (progn
(set-frame-font (if doom-big-font-mode doom-big-font doom-font) (set-frame-font (if doom-big-font-mode doom-big-font doom-font)
t (list frame)) t (doom--frame-list frame))
(run-hooks 'doom-change-font-size-hook)) (run-hooks 'doom-change-font-size-hook))
(set-frame-font doom-font t (doom--frame-list frame)) (set-frame-font doom-font t (doom--frame-list frame))
(when doom-big-font-mode (when doom-big-font-mode