[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))))
- [elpa] master updated (cbfc00f -> 96e61a9), João Távora, 2014/12/19
- [elpa] master 08e7be7 02/26: fix: DARKROOM-CONFIRM-FILL-PARAGRAPH -> DARKROOM-FILL-PARAGRAPH-MAYBE, João Távora, 2014/12/19
- [elpa] master 8d2ec73 03/26: fix: save HEADER-LINE-FORMAT as well, João Távora, 2014/12/19
- [elpa] master 21a7919 04/26: first commit, João Távora, 2014/12/19
- [elpa] master 4dc83ad 05/26: darkroom-mode added, João Távora, 2014/12/19
- [elpa] master c6e0c3a 07/26: Leave darkroom-mode when leaving tentative-mode, João Távora, 2014/12/19
- [elpa] master 744d72a 08/26: Add .gitignore, João Távora, 2014/12/19
- [elpa] master 9cd8dfd 06/26: Now works with multiple windows for same darkroom buffer, João Távora, 2014/12/19
- [elpa] master 786b5a3 10/26: Integrate another comment from Rasmus, João Távora, 2014/12/19
- [elpa] master 6cbfebe 09/26: Integrate some comments from Rasmus, João Távora, 2014/12/19
- [elpa] master b36123e 11/26: Tidy up margin calculation,
João Távora <=
- [elpa] master a16a665 01/26: Initial commit, João Távora, 2014/12/19
- [elpa] master 3a1db96 13/26: Add some docstrings, João Távora, 2014/12/19
- [elpa] master a39ab2e 15/26: Minor tweaks, João Távora, 2014/12/19
- [elpa] master 90f5299 14/26: Prefix internal symbols with "darkroom--", João Távora, 2014/12/19
- [elpa] master 8b0daf6 12/26: Add (still non-functioning) `darkroom-compute-margins', João Távora, 2014/12/19
- [elpa] master 13717fb 17/26: Attempt a clearer design of modes, João Távora, 2014/12/19
- [elpa] master 20d5539 21/26: load cl-lib, João Távora, 2014/12/19
- [elpa] master 4bf9c10 19/26: Fix `darkroom-tentative-mode', João Távora, 2014/12/19
- [elpa] master 1e68955 16/26: Corrections after another review iteration with Rasmus, João Távora, 2014/12/19
- [elpa] master 15e976b 22/26: Merge pull request #1 from syohex/require-cl-lib, João Távora, 2014/12/19