Fix #2186: irreversible modeline resizing

When adjusting fonts with doom-big-font-mode, or doom/increase-font-size
and doom/decrease-font-size.
This commit is contained in:
Henrik Lissner 2019-12-15 21:56:16 -05:00
parent c9e9ef528d
commit 84252d8962
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -16,11 +16,6 @@ acceptable values for this variable.")
"How many steps to increase the font size (with `doom-font' as the base) when "How many steps to increase the font size (with `doom-font' as the base) when
`doom-big-font-mode' is enabled and `doom-big-font' is nil.") `doom-big-font-mode' is enabled and `doom-big-font' is nil.")
;;;###autoload
(defvar doom-change-font-size-hook nil
"A hook run after adjusting the font size with `doom/increase-font-size',
`doom/decrease-font-size', or `doom/reset-font-size'.")
;; ;;
;;; Library ;;; Library
@ -44,14 +39,14 @@ acceptable values for this variable.")
(defun doom-adjust-font-size (increment &optional frame) (defun doom-adjust-font-size (increment &optional frame)
"Increase size of font in FRAME by INCREMENT. "Increase size of font in FRAME by INCREMENT.
FRAME parameter defaults to current frame." FRAME parameter defaults to current frame."
(let (success) (if (null increment)
(if (null increment) (let ((frames (doom--frame-list frame)))
(let ((frames (doom--frame-list frame))) (dolist (frame frames)
(dolist (frame frames) (when (frame-parameter frame 'font-scale)
(when (frame-parameter frame 'font-scale) (set-frame-parameter frame 'font-scale nil)))
(set-frame-parameter frame 'font-scale nil))) (set-frame-font doom-font 'keep-size frames)
(set-frame-font doom-font 'keep-size frames) (and frames t))
(setq success (and frames t))) (let (success)
(dolist (frame (doom--frame-list frame)) (dolist (frame (doom--frame-list frame))
(let* ((font (frame-parameter frame 'font)) (let* ((font (frame-parameter frame 'font))
(font (doom--font-name font frame)) (font (doom--font-name font frame))
@ -70,10 +65,11 @@ FRAME parameter defaults to current frame."
(error "Cannot change font size")) (error "Cannot change font size"))
(set-frame-parameter frame 'font font) (set-frame-parameter frame 'font font)
(set-frame-parameter frame 'font-scale (+ zoom-factor increment)) (set-frame-parameter frame 'font-scale (+ zoom-factor increment))
(setq success t)))) (setq success t)))
(when success (when success
(run-hooks 'doom-change-font-size-hook) ;; Unlike `set-frame-font', `set-frame-parameter' won't trigger this
t))) (run-hooks 'after-setting-font-hook)
t))))
;; ;;
@ -130,14 +126,11 @@ This uses `doom/increase-font-size' under the hood, and enlargens the font by
:global t :global t
(unless doom-font (unless doom-font
(user-error "`doom-font' must be set to a valid font")) (user-error "`doom-font' must be set to a valid font"))
(let ((frame (selected-frame))) (if doom-big-font
(if doom-big-font (set-frame-font (if doom-big-font-mode doom-big-font doom-font)
(progn 'keep-size (doom--frame-list))
(set-frame-font (if doom-big-font-mode doom-big-font doom-font) (doom-adjust-font-size
t (doom--frame-list frame)) (and doom-big-font-mode
(run-hooks 'doom-change-font-size-hook)) (integerp doom-big-font-increment)
(set-frame-font doom-font t (doom--frame-list frame)) (/= doom-big-font-increment 0)
(when (and doom-big-font-mode doom-big-font-increment))))
(integerp doom-big-font-increment)
(/= doom-big-font-increment 0))
(doom-adjust-font-size doom-big-font-increment)))))