branch: externals/olivetti commit 7eadbe7b3273889ac51528c3d8f41ae63ed05b71 Author: Paul Rankin <he...@paulwrankin.com> Commit: Paul Rankin <he...@paulwrankin.com>
Rewrite olivetti-safe-width for fringes No longer sets olivetti-body-width on error --- olivetti.el | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/olivetti.el b/olivetti.el index 2fafea7..baf08a1 100644 --- a/olivetti.el +++ b/olivetti.el @@ -276,26 +276,23 @@ face, scale N by that factor, otherwise scale by 1." 1))) (round (* n face-height)))) -(defun olivetti-safe-width (n window) - "Parse N to a safe value for `olivetti-body-width' for WINDOW." - (let ((window-width (- (window-total-width window) - (% (window-total-width window) 2))) +(defun olivetti-safe-width (width window) + "Parse WIDTH to a safe value for `olivetti-body-width' for WINDOW." + (let ((window-width (window-total-width window 'floor)) + (fringes (window-fringes window)) (min-width (+ olivetti-minimum-body-width (% olivetti-minimum-body-width 2)))) - (cond ((integerp n) - (max (min n window-width) min-width)) - ((floatp n) - (let ((min-width - (string-to-number (format "%0.2f" - (/ (float min-width) - window-width)))) - (width - (string-to-number (format "%0.2f" - (min n 1.0))))) - (max width min-width))) + (setq window-width + (- window-width + (/ (+ (car fringes) (cadr fringes)) + (frame-char-width (window-frame window))) + (% window-width 2))) + (cond ((integerp width) + (max (min width (floor window-width)) min-width)) + ((floatp width) + (max (min width 1.0) (/ min-width window-width))) ((user-error "`olivetti-body-width' must be an integer or a float") - (setq olivetti-body-width - (eval (car (get 'olivetti-body-width 'standard-value)))))))) + (floor (window-width)))))) ;;; Width Interaction