[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] 05/07: diff-hl-margin-mode: use buffer-local minor mode
From: |
Dmitry Gutov |
Subject: |
[elpa] 05/07: diff-hl-margin-mode: use buffer-local minor mode |
Date: |
Sun, 10 Aug 2014 16:33:01 +0000 |
dgutov pushed a commit to branch master
in repository elpa.
commit c995f689df75898d708adfc210bb40e64fe75f18
Author: Dmitry Gutov <address@hidden>
Date: Sun Aug 10 20:28:50 2014 +0400
diff-hl-margin-mode: use buffer-local minor mode
Fixes #23
---
diff-hl-margin.el | 49 ++++++++++++++++++++++++++++++++++++-------------
1 files changed, 36 insertions(+), 13 deletions(-)
diff --git a/diff-hl-margin.el b/diff-hl-margin.el
index dac0b85..ef3db0a 100644
--- a/diff-hl-margin.el
+++ b/diff-hl-margin.el
@@ -58,23 +58,46 @@
(define-minor-mode diff-hl-margin-mode
"Toggle displaying `diff-hl-mode' highlights on the margin."
:lighter "" :global t
- (let ((width-var (intern (format "%s-margin-width" diff-hl-margin-side))))
- (if diff-hl-margin-mode
- (progn
- (setq diff-hl-margin-old-highlight-function
diff-hl-highlight-function
- diff-hl-highlight-function 'diff-hl-highlight-on-margin)
- (set-default width-var 1))
- (setq diff-hl-highlight-function diff-hl-margin-old-highlight-function
- diff-hl-margin-old-highlight-function nil)
- (set-default width-var 0)))
- (dolist (buffer (buffer-list))
- (with-current-buffer buffer
+ (if diff-hl-margin-mode
+ (progn
+ (add-hook 'diff-hl-mode-on-hook 'diff-hl-margin-minor-mode)
+ (add-hook 'diff-hl-mode-off-hook 'diff-hl-margin-minor-mode-off)
+ (add-hook 'diff-hl-dired-mode-on-hook 'diff-hl-margin-minor-mode)
+ (add-hook 'diff-hl-dired-mode-off-hook 'diff-hl-margin-minor-mode-off))
+ (remove-hook 'diff-hl-mode-on-hook 'diff-hl-margin-minor-mode)
+ (remove-hook 'diff-hl-mode-off-hook 'diff-hl-margin-minor-mode-off)
+ (remove-hook 'diff-hl-dired-mode-on-hook 'diff-hl-margin-minor-mode)
+ (remove-hook 'diff-hl-dired-mode-off-hook 'diff-hl-margin-minor-mode-off))
+ (dolist (buf (buffer-list))
+ (with-current-buffer buf
(cond
(diff-hl-mode
+ (diff-hl-margin-minor-mode (if diff-hl-margin-mode 1 -1))
(diff-hl-update))
(diff-hl-dired-mode
- (diff-hl-dired-update)))))
- (walk-windows (lambda (win) (set-window-buffer win (window-buffer win)))))
+ (diff-hl-margin-minor-mode (if diff-hl-margin-mode 1 -1))
+ (diff-hl-dired-update))))))
+
+(define-minor-mode diff-hl-margin-minor-mode
+ "Toggle displaying `diff-hl-mode' highlights on the margin locally.
+You probably shouldn't use this function directly."
+ :lighter ""
+ (let ((width-var (intern (format "%s-margin-width" diff-hl-margin-side))))
+ (if diff-hl-margin-minor-mode
+ (progn
+ (set (make-local-variable 'diff-hl-margin-old-highlight-function)
+ diff-hl-highlight-function)
+ (set (make-local-variable 'diff-hl-highlight-function)
+ 'diff-hl-highlight-on-margin)
+ (set width-var 1))
+ (setq diff-hl-highlight-function diff-hl-margin-old-highlight-function
+ diff-hl-margin-old-highlight-function nil)
+ (set width-var 0)))
+ (dolist (win (get-buffer-window-list))
+ (set-window-buffer win (current-buffer))))
+
+(defun diff-hl-margin-minor-mode-off ()
+ (diff-hl-margin-minor-mode -1))
(defvar diff-hl-margin-spec-cache
(cl-loop for (type . char) in '((insert . "+") (delete . "-")
- [elpa] branch master updated (4834a3f -> 41ef088), Dmitry Gutov, 2014/08/10
- [elpa] 01/07: Use magit-revert-buffer-hook, Dmitry Gutov, 2014/08/10
- [elpa] 03/07: require 'fringe, Dmitry Gutov, 2014/08/10
- [elpa] 05/07: diff-hl-margin-mode: use buffer-local minor mode,
Dmitry Gutov <=
- [elpa] 06/07: Bump the version, Dmitry Gutov, 2014/08/10
- [elpa] 07/07: Merge commit '3f49d2b3934e69d11410d08f1be8e0011237c11c' from diff-hl, Dmitry Gutov, 2014/08/10
- [elpa] 02/07: Some README updates, Dmitry Gutov, 2014/08/10
- [elpa] 04/07: diff-hl-mode: defer diff-hl-update until diff-hl-mode-on-hook, Dmitry Gutov, 2014/08/10