]> code.delx.au - gnu-emacs-elpa/commitdiff
Hook into checkin from vc-dir mode
authorDmitry Gutov <dgutov@yandex.ru>
Tue, 10 Jul 2012 21:09:12 +0000 (01:09 +0400)
committerDmitry Gutov <dgutov@yandex.ru>
Tue, 10 Jul 2012 21:13:18 +0000 (01:13 +0400)
README.md
diff-hl.el

index d71c25a10160611fb85fad88c084b0d055fc3f2c..8aea738acbcd893ccaba54e9a56d8d20e3cc3671 100644 (file)
--- a/README.md
+++ b/README.md
@@ -24,6 +24,7 @@ and, to use it in all buffers
 \r
     (global-diff-hl-mode)\r
 \r
-or, for example, to use it in all `prog-mode` buffers\r
+or, for example, to use it in all `prog-mode` and `vc-dir-mode` buffers\r
 \r
     (add-hook 'prog-mode-hook 'turn-on-diff-hl-mode)\r
+    (add-hook 'vc-dir-mode-hook 'turn-on-diff-hl-mode)\r
index d5fd9580a8ff8ff6f7a8bac12b7f2aa61a08794f..058631ddc095ad4259b329e056537f18581279c5 100644 (file)
@@ -281,12 +281,31 @@ in the source file, or the last line of the hunk above it."
     (remove-hook 'text-scale-mode-hook 'diff-hl-define-bitmaps t)\r
     (diff-hl-remove-overlays)))\r
 \r
+(defun diff-hl-dir-update ()\r
+  (dolist (pair (vc-dir-marked-only-files-and-states))\r
+    (when (eq 'up-to-date (cdr pair))\r
+      (let ((buffer (find-buffer-visiting (car pair))))\r
+        (when buffer\r
+          (with-current-buffer buffer\r
+            (diff-hl-remove-overlays)))))))\r
+\r
+;;;###autoload\r
+(define-minor-mode diff-hl-dir-mode\r
+  "Toggle `diff-hl-mode' link in `vc-dir-mode' buffer."\r
+  :lighter ""\r
+  (if diff-hl-dir-mode\r
+      (add-hook 'vc-checkin-hook 'diff-hl-dir-update t t)\r
+    (remove-hook 'vc-checkin-hook 'diff-hl-dir-update t)))\r
+\r
 (defun turn-on-diff-hl-mode ()\r
-  ;; FIXME: Why is this called twice for each buffer?\r
-  ;; Isn't fundamental-mode supposed to not run any hooks?\r
-  (and buffer-file-name (not (eq major-mode (default-value 'major-mode)))\r
-       (window-system) ;; No fringes in the console.\r
-       (diff-hl-mode 1)))\r
+  (when (window-system) ;; No fringes in the console.\r
+    (cond\r
+     ;; FIXME: Why is this called twice for each buffer?\r
+     ;; Isn't fundamental-mode supposed to not run any hooks?\r
+     ((and buffer-file-name (not (eq major-mode (default-value 'major-mode))))\r
+      (diff-hl-mode 1))\r
+     ((eq major-mode 'vc-dir-mode)\r
+      (diff-hl-dir-mode 1)))))\r
 \r
 ;;;###autoload\r
 (define-globalized-minor-mode global-diff-hl-mode diff-hl-mode\r