branch: externals/olivetti
commit f213afdca78f63772b2909f61c4a9f162514d789
Author: Paul Rankin <he...@paulwrankin.com>
Commit: Paul Rankin <he...@paulwrankin.com>

    Added safe-width fun
---
 olivetti.el | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/olivetti.el b/olivetti.el
index b7b9967..508816a 100644
--- a/olivetti.el
+++ b/olivetti.el
@@ -121,6 +121,29 @@ mode line. Finally redraw the frame."
          (setq-local mode-line-format nil)))
   (redraw-frame (selected-frame)))
 
+(defun olivetti-safe-width (n)
+  "Parse N to a safe value for `olivetti-body-width'."
+  (let ((window-width (- (window-total-width)
+                         (% (window-total-width) 2)))
+        (min-width (+ olivetti-minimum-body-width
+                      (% olivetti-minimum-body-width 2))))
+    (cond ((integerp n)
+           (let ((width (min n window-width)))
+             (max 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)))
+          ((message "`olivetti-body-width' must be an integer or a float")
+           (setq olivetti-body-width
+                 (car (get 'olivetti-body-width 'standard-value)))))))
+
+
 (defun olivetti-set-environment ()
   "Set text body width to `olivetti-body-width' with relative margins."
   (let* ((n olivetti-body-width)

Reply via email to