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

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

[elpa] master b36123e 11/26: Tidy up margin calculation


From: João Távora
Subject: [elpa] master b36123e 11/26: Tidy up margin calculation
Date: Fri, 19 Dec 2014 19:07:26 +0000

branch: master
commit b36123e1fd6c352f99430669eba1cfb6988f1969
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>

    Tidy up margin calculation
    
    * darkroom.el (darkroom-compute-margins): Renamed from `darkroom-margins'.
    (darkroom-buffer-margins): New variable.
    (darkroom-set-margins): Redesign. Set `darkroom-buffer-margins'.
    (darkroom-increase-margins): Redesign.
    (darkroom-mode-map): Fix whitespace.
    (darkroom-mode): Use `set-mark-local-variable'
    (darkroom-mode): Save and restore current margins.
    (darkroom-tentative-mode): Fix whitespace.
---
 darkroom.el |  111 +++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 66 insertions(+), 45 deletions(-)

diff --git a/darkroom.el b/darkroom.el
index b973316..864a6e4 100644
--- a/darkroom.el
+++ b/darkroom.el
@@ -84,59 +84,72 @@ Value is passed to `text-scale-increase'."
   :type 'float
   :group 'darkroom)
 
-(defun darkroom-margins ()
-  (cond ((functionp darkroom-margins)
-         (funcall darkroom-margins))
-        ((consp darkroom-margins)
-         darkroom-margins)
-        ((and (floatp darkroom-margins)
-              (< darkroom-margins 1))
-         (let ((delta (darkroom-float-to-columns darkroom-margins)))
-           (cons delta delta)))))
+(defun darkroom-compute-margins ()
+  (or darkroom-buffer-margins
+      (cond ((functionp darkroom-margins)
+             (funcall darkroom-margins))
+            ((consp darkroom-margins)
+             darkroom-margins)
+            ((and (floatp darkroom-margins)
+                  (< darkroom-margins 1))
+             (let ((delta (darkroom-float-to-columns darkroom-margins)))
+               (cons delta delta))))))
 
 (defun darkroom-float-to-columns (f)
   (ceiling (* (let ((edges (window-edges)))
                 (- (nth 2 edges) (nth 0 edges)))
               f)))
 
+(defvar darkroom-buffer-margins nil
+  "Buffer-local version of `darkroom-margins' defcustom.
+Set by `darkroom-set-margins'")
+
 (defun darkroom-set-margins (&optional margins)
-  "Adjust margins to `darkroom-margins' or optional MARGINS."
-  (let* ((window-configuration-change-hook nil)
-         (margins (or margins
-                      (darkroom-margins))))
+  "Set margins from MARGINS or `darkroom-compute-margins'."
+  (let* ((window-configuration-change-hook nil))
+    (when margins
+      (when (null (car margins)) (setcar margins 0))
+      (when (null (cdr margins)) (setcdr margins 0)))
+    (set (make-local-variable 'darkroom-buffer-margins)
+         (or margins (darkroom-compute-margins)))
     (walk-windows #'(lambda (w)
                       (when (eq (window-buffer w) (current-buffer))
-                        (setq fringes-outside-margins 
darkroom-fringes-outside-margins)
+                        (setq fringes-outside-margins
+                              darkroom-fringes-outside-margins)
                         ;; See description of
                         ;; `fringes-outside-margins' for the reason
                         ;; for this apparent noop
                         (set-window-buffer w (current-buffer))
-                        (set-window-margins w (car margins) (cdr margins))))
+                        (set-window-margins w (car darkroom-buffer-margins)
+                                            (cdr darkroom-buffer-margins))))
                   nil
                   'all-frames)))
 
 (defun darkroom-increase-margins (increment)
   (interactive (list darkroom-margin-increment))
-  (when (floatp darkroom-margins)
-    (setq darkroom-margins (+ increment darkroom-margins))
-    (darkroom-set-margins)))
+  (unless (and (consp darkroom-buffer-margins)
+               (numberp (car darkroom-buffer-margins))
+               (numberp (cdr darkroom-buffer-margins)))
+    (error "`darkroom-buffer-margins' corrupted. Must be a cons of numbers."))
+  (setcar darkroom-buffer-margins
+          (round (* (+ 1 increment) (car darkroom-buffer-margins))))
+  (setcdr darkroom-buffer-margins
+          (round (* (+ 1 increment) (cdr darkroom-buffer-margins))))
+  (darkroom-set-margins darkroom-buffer-margins))
 
 (defun darkroom-decrease-margins (decrement)
   (interactive (list darkroom-margin-increment))
   (darkroom-increase-margins (- decrement)))
 
-(defvar darkroom-mode-map (let ((map (make-sparse-keymap)))
-                                  (define-key map (kbd "C-M-+") 
'darkroom-increase-margins)
-                                  (define-key map (kbd "C-M--") 
'darkroom-decrease-margins)
-                                  map))
+(defvar darkroom-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-M-+") 'darkroom-increase-margins)
+    (define-key map (kbd "C-M--") 'darkroom-decrease-margins)
+    map))
 
 (defvar darkroom-saved-mode-line-format nil)
-
 (defvar darkroom-saved-header-line-format nil)
-
-(make-variable-buffer-local 'darkroom-saved-mode-line-format)
-
-(make-variable-buffer-local 'darkroom-saved-header-line-format)
+(defvar darkroom-saved-margins nil)
 
 (define-minor-mode darkroom-mode
   "Remove visual distractions and focus on writing.
@@ -144,24 +157,30 @@ When this mode is active, everything but the buffer's 
text is
 elided from view. The buffer margins are set so that text is
 centered on screen. Text size is increased (display engine
 allowing) by `darkroom-text-scale-increase'." nil nil nil
-  (cond (darkroom-mode
-         (setq darkroom-saved-mode-line-format mode-line-format
-               mode-line-format nil
-               darkroom-saved-header-line-format header-line-format
-               header-line-format nil)
-         (darkroom-set-margins)
-         (text-scale-increase darkroom-text-scale-increase)
-         (add-hook 'window-configuration-change-hook 'darkroom-set-margins nil 
t))
-        (t
-         (setq mode-line-format darkroom-saved-mode-line-format
-               header-line-format darkroom-saved-header-line-format)
-         (text-scale-decrease 2)
-         (darkroom-set-margins '(0 . 0))
-         (remove-hook 'window-configuration-change-hook 'darkroom-set-margins 
t))))
+(cond (darkroom-mode
+       (set (make-local-variable 'darkroom-saved-mode-line-format)
+            mode-line-format)
+       (set (make-local-variable 'darkroom-saved-header-line-format)
+            header-line-format)
+       (set (make-local-variable 'darkroom-saved-margins) (window-margins))
+       (setq mode-line-format nil)
+       (setq header-line-format nil)
+       (darkroom-set-margins)
+       (text-scale-increase darkroom-text-scale-increase)
+       (add-hook 'window-configuration-change-hook 'darkroom-set-margins
+                 nil t))
+      (t
+       (setq mode-line-format darkroom-saved-mode-line-format
+             header-line-format darkroom-saved-header-line-format)
+       (text-scale-decrease 2)
+       (let (darkroom-buffer-margins)
+         (darkroom-set-margins darkroom-saved-margins))
+       (remove-hook 'window-configuration-change-hook 'darkroom-set-margins
+                    t))))
 
 (defun darkroom-maybe-enable ()
   (cond ((and (not darkroom-mode) (= (count-windows) 1))
-         (darkroom-mode 1)) 
+         (darkroom-mode 1))
         ((and darkroom-mode (> (count-windows) 1))
          (darkroom-mode -1))
         (t
@@ -172,13 +191,15 @@ allowing) by `darkroom-text-scale-increase'." nil nil nil
 
 (define-minor-mode darkroom-tentative-mode
   "Minor mode that enters `darkroom-mode' when all windws are deleted"
-  nil "D" nil
+  nil "DarkroomT" nil
   (cond (darkroom-tentative-mode
-         (add-hook 'window-configuration-change-hook 'darkroom-maybe-enable 
nil t)
+         (add-hook 'window-configuration-change-hook
+                   'darkroom-maybe-enable nil t)
          (darkroom-maybe-enable))
         (t
          (if darkroom-mode (darkroom-mode -1))
-         (remove-hook 'window-configuration-change-hook 'darkroom-maybe-enable 
t))))
+         (remove-hook 'window-configuration-change-hook
+                      'darkroom-maybe-enable t))))
 
 
 



reply via email to

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