emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/olivetti 7eadbe7 108/134: Rewrite olivetti-safe-width f


From: Stefan Monnier
Subject: [elpa] externals/olivetti 7eadbe7 108/134: Rewrite olivetti-safe-width for fringes
Date: Thu, 25 Apr 2019 09:57:38 -0400 (EDT)

branch: externals/olivetti
commit 7eadbe7b3273889ac51528c3d8f41ae63ed05b71
Author: Paul Rankin <address@hidden>
Commit: Paul Rankin <address@hidden>

    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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]