[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 9cd8dfd 06/26: Now works with multiple windows for same da
From: |
Jo�o T�vora |
Subject: |
[elpa] master 9cd8dfd 06/26: Now works with multiple windows for same darkroom buffer |
Date: |
Fri, 19 Dec 2014 19:07:24 +0000 |
branch: master
commit 9cd8dfd2b15abfb4df50f66a519defa741c11b04
Author: Joao Tavora <address@hidden>
Commit: Joao Tavora <address@hidden>
Now works with multiple windows for same darkroom buffer
* darkroom.el (darkroom-set-margins): set for every window separately.
(darkroom-fill-paragraph-maybe): Be smarter we filling
paragraph. TODO: use remap.
(darkroom-saved-mode-line-format)
(darkroom-saved-header-line-format)
(darkroom-saved-visual-line-mode): new buffer-local vars.
(darkroom-visual-mode-maybe-enable): new function.
(darkroom-mode): Remove hack here.
(darkroom-maybe-enable): new function.
(darkroom-tentative-mode): New minor mode.
---
darkroom.el | 107 +++++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 78 insertions(+), 29 deletions(-)
diff --git a/darkroom.el b/darkroom.el
index d43b369..da4882a 100644
--- a/darkroom.el
+++ b/darkroom.el
@@ -38,11 +38,19 @@ changing window or by calling `darkroom-set-margins'")
(defun darkroom-set-margins (&optional margins)
"Adjust margins to `darkroom-margins' or optional MARGINS."
- (let ((margins
- (or margins
- (darkroom-margins))))
- (when margins
- (set-window-margins (selected-window) (car margins) (cdr margins)))))
+ (let* ((window-configuration-change-hook nil)
+ (margins (or margins
+ (darkroom-margins))))
+ (walk-windows #'(lambda (w)
+ (when (eq (window-buffer w) (current-buffer))
+ (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))))
+ nil
+ 'all-frames)))
(defun darkroom-increase-margins ()
(interactive)
@@ -56,41 +64,82 @@ changing window or by calling `darkroom-set-margins'")
(setq darkroom-margins (- darkroom-margins 0.05))
(darkroom-set-margins)))
-(defun darkroom-confirm-fill-paragraph ()
- (interactive)
- (when (yes-or-no-p "Really fill paragraph?")
- (call-interactively 'fill-paragraph)))
+(defun darkroom-fill-paragraph-maybe (really)
+ (interactive "P")
+ (cond (visual-line-mode
+ (if (not really)
+ (message "not filling paragraph")
+ (call-interactively 'fill-paragraph)
+ (message "filled paragraph even in visual-line-mode")))
+ (t
+ (call-interactively 'fill-paragraph))))
(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)
- (define-key map (kbd "M-q")
'darkroom-confirm-fill-paragraph)
+ (define-key map (kbd "M-q")
'darkroom-fill-paragraph-maybe)
map))
(defvar darkroom-saved-mode-line-format nil)
-(defvar darkroom-saved-visual-mode nil)
+(defvar darkroom-saved-header-line-format nil)
+(defvar darkroom-saved-visual-line-mode nil)
+
+(make-variable-buffer-local 'darkroom-saved-mode-line-format)
+(make-variable-buffer-local 'darkroom-saved-header-line-format)
+(make-variable-buffer-local 'darkroom-saved-visual-line-mode)
+
+(defun darkroom-visual-mode-maybe-enable ()
+ (when darkroom-turns-on-visual-line-mode
+ (cond (darkroom-mode
+ (setq darkroom-saved-visual-mode visual-line-mode)
+ (visual-line-mode 1))
+ (t
+ (unless darkroom-saved-visual-line-mode
+ (visual-line-mode -1))))))
+
(define-minor-mode darkroom-mode
- "A minor mode that emulates the darkroom editor."
- nil
- " dark"
- nil
+ "Minor mode emulating the darkroom editor that I never used."
+ nil nil nil
(cond (darkroom-mode
(setq darkroom-saved-mode-line-format mode-line-format
- mode-line-format nil)
- (setq fringes-outside-margins darkroom-fringes-outside-margins)
- (add-hook 'window-configuration-change-hook 'darkroom-set-margins nil
t)
+ mode-line-format nil
+ darkroom-saved-header-line-format header-line-format
+ header-line-format nil)
(darkroom-set-margins)
- (setq header-line-format t)
- ;; a hack shoulnd't be needed but apparently is
- (set-window-buffer (selected-window) (current-buffer))
- (when darkroom-turns-on-visual-line-mode
- (visual-line-mode 1)))
+ (darkroom-visual-mode-maybe-enable)
+ (text-scale-increase 2)
+ (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))
+ (darkroom-visual-mode-maybe-enable)
+ (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))
+ ((and darkroom-mode (> (count-windows) 1))
+ (darkroom-mode -1))
(t
- (setq header-line-format nil)
- (setq mode-line-format darkroom-saved-mode-line-format)
- (when darkroom-turns-on-visual-line-mode
- (visual-line-mode -1))
- (remove-hook 'window-configuration-change-hook 'darkroom-set-margins
t)
- (set-window-margins (selected-window) 0 0))))
+ (message "Hmm buffer: %s windows: %s darkroom-mode: %s"
+ (current-buffer)
+ (count-windows)
+ darkroom-mode))))
+
+
+(define-minor-mode darkroom-tentative-mode
+ "Minor mode that enters `darkroom-mode' when all windws are deleted"
+ nil "D" nil
+ (cond (darkroom-tentative-mode
+ (add-hook 'window-configuration-change-hook 'darkroom-maybe-enable
nil t)
+ (darkroom-maybe-enable))
+ (t
+ (darkroom-maybe-enable)
+ (remove-hook 'window-configuration-change-hook 'darkroom-maybe-enable
t))))
+
+
+
(provide 'darkroom)
- [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 <=
- [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, 2014/12/19
- [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