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

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

[elpa] externals/olivetti 4f9210b 074/134: Don't use min-margins - there


From: Stefan Monnier
Subject: [elpa] externals/olivetti 4f9210b 074/134: Don't use min-margins - there is a better way
Date: Thu, 25 Apr 2019 09:57:32 -0400 (EDT)

branch: externals/olivetti
commit 4f9210bda4b6340a5e8a459f240785b57e0cbd87
Author: Paul Rankin <address@hidden>
Commit: Paul Rankin <address@hidden>

    Don't use  min-margins - there is a better way
---
 olivetti.el | 34 ++++++++++++++++++++++++++--------
 1 file changed, 26 insertions(+), 8 deletions(-)

diff --git a/olivetti.el b/olivetti.el
index 69839a3..7eaa40d 100644
--- a/olivetti.el
+++ b/olivetti.el
@@ -225,10 +225,7 @@ If ARG is 'exit set window margins to nil.
 If ARG is nil, first find the `olivetti-safe-width' to which to
 set `olivetti-body-width', then find the appropriate margin size
 relative to each window. Finally set the window margins, taking
-care that the maximum size is 0.
-
-Also set the window parameter 'min-margins to half of the margin
-current width."
+care that the maximum size is 0."
   (dolist (window (get-buffer-window-list (current-buffer) nil t))
     (if (eq arg 'exit)
         (set-window-margins window nil nil)
@@ -242,10 +239,7 @@ current width."
              (margin (max (round (/ (- (window-total-width window)
                                        width)
                                     2))
-                          0))
-             (min-margin (floor (/ (float margin)
-                                   2))))
-        (set-window-parameter window 'min-margins (cons min-margin min-margin))
+                          0)))
         (set-window-margins window margin margin)))))
 
 (defun olivetti-toggle-hide-mode-line ()
@@ -283,6 +277,28 @@ If prefixed with ARG, incrementally increase."
     (olivetti-expand p)))
 
 
+;;; 25.1 Workaround
+
+(defun split-window-right-force (&optional size)
+  "Filter arguments to `split-window-right' to force splitting window.
+
+If optional argument SIZE is ommitted or nil, both windows get
+the same width."
+  (if (car size) size (list (/ (window-total-width) 2))))
+
+(defun olivetti-patch-split-window (&optional remove)
+  "Adds advice to `split-window-right' to workaround `window-min-size'.
+
+If REMOVE is non-nil, remove this advice."
+  (if remove
+      (advice-remove 'split-window-right 'split-window-right-force)
+    (unless (or (advice-member-p 'split-window-right-force 'split-window-right)
+                (version< emacs-version "25"))
+      (advice-add 'split-window-right :filter-args
+                  'split-window-right-force)
+      (message "olivetti: Function `split-window-right' has been patched"))))
+
+
 ;;; Mode Definition
 
 ;;;###autoload
@@ -323,11 +339,13 @@ hidden."
           (visual-line-mode 1))
         (if olivetti-hide-mode-line
             (olivetti-set-mode-line))
+        (olivetti-patch-split-window)
         (olivetti-set-environment))
     (dolist (hook '(window-configuration-change-hook
                     after-setting-font-hook
                     text-scale-mode-hook))
       (remove-hook hook 'olivetti-set-environment t))
+    (olivetti-patch-split-window 'remove)
     (olivetti-set-mode-line 'exit)
     (olivetti-set-environment 'exit)
     (if (and olivetti-recall-visual-line-mode-entry-state



reply via email to

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