[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] scratch/add-vdiff 5043ca3 168/258: Wrap global state into session
From: |
Justin Burkett |
Subject: |
[elpa] scratch/add-vdiff 5043ca3 168/258: Wrap global state into session object |
Date: |
Wed, 17 May 2017 08:13:44 -0400 (EDT) |
branch: scratch/add-vdiff
commit 5043ca34d338b0a0759bf17f5a5358c48dec09d5
Author: justbur <address@hidden>
Commit: justbur <address@hidden>
Wrap global state into session object
---
vdiff.el | 245 ++++++++++++++++++++++++++++++++++++++-------------------------
1 file changed, 150 insertions(+), 95 deletions(-)
diff --git a/vdiff.el b/vdiff.el
index e3116e4..809d80c 100644
--- a/vdiff.el
+++ b/vdiff.el
@@ -175,10 +175,6 @@ indicate the subtraction location in the fringe."
be a need to include commands that scroll the buffer here,
because those are handled differently.")
-(defvar vdiff--buffers nil)
-(defvar vdiff--process-buffer " *vdiff* ")
-(defvar vdiff--word-diff-output-buffer " *vdiff-word* ")
-(defvar vdiff--diff-data nil)
(defvar vdiff--diff-code-regexp
"^\\([0-9]+\\),?\\([0-9]+\\)?\\([adc]\\)\\([0-9]+\\),?\\([0-9]+\\)?")
(defvar vdiff--diff3-code-regexp
@@ -187,27 +183,40 @@ because those are handled differently.")
(defvar vdiff--inhibit-diff-update nil)
(defvar vdiff--in-scroll-hook nil)
;; (defvar vdiff--in-post-command-hook nil)
-(defvar vdiff--line-maps nil)
-(defvar vdiff--folds nil)
-(defvar vdiff--all-folds-open nil)
(defvar vdiff--setting-vscroll nil)
-(defvar vdiff--diff-stale nil)
(defvar vdiff--after-change-timer nil)
(defvar vdiff--after-change-refresh-delay 1)
-(defvar vdiff--window-configuration nil)
(defvar vdiff--new-command nil)
-(defvar vdiff--last-command nil)
-(defvar vdiff--case-args "")
+;; (defvar vdiff--last-command nil)
(defvar vdiff--case-options
'(("Don't ignore case" . "")
("Ignore case (-i)" . "-i")))
-(defvar vdiff--whitespace-args "")
(defvar vdiff--whitespace-options
'(("Don't ignore whitespace" . "")
("Ignore all whitespace (-w)" . "-w")
("Ignore space changes (-b)" . "-b")
("Ignore blank lines (-B)" . "-B")))
+;; Sessions
+(defvar vdiff--temp-session nil)
+(defvar-local vdiff--session nil)
+(cl-defstruct vdiff-session
+ ;; buffers
+ buffers
+ process-buffer
+ word-diff-output-buffer
+ ;; data
+ diff-data
+ line-maps
+ folds
+ all-folds-open
+ diff-stale
+ ;; other
+ window-config
+ case-args
+ whitespace-args)
+
+
;; * Utilities
(defun vdiff--maybe-int (str)
@@ -216,16 +225,28 @@ because those are handled differently.")
(>= num 0))
num)))
+(defun vdiff--non-nil-list (&rest args)
+ (delq nil (apply #'list args)))
+
(defun vdiff--buffer-a-p ()
- (when (eq (current-buffer) (car vdiff--buffers))
+ (when (and
+ vdiff--session
+ (eq (current-buffer)
+ (car (vdiff-session-buffers vdiff--session))))
(current-buffer)))
(defun vdiff--buffer-b-p ()
- (when (eq (current-buffer) (cadr vdiff--buffers))
+ (when (and
+ vdiff--session
+ (eq (current-buffer)
+ (cadr (vdiff-session-buffers vdiff--session))))
(current-buffer)))
(defun vdiff--buffer-c-p ()
- (when (eq (current-buffer) (nth 2 vdiff--buffers))
+ (when (and
+ vdiff--session
+ (eq (current-buffer)
+ (nth 2 (vdiff-session-buffers vdiff--session))))
(current-buffer)))
(defun vdiff--buffer-p ()
@@ -234,14 +255,17 @@ because those are handled differently.")
((vdiff--buffer-c-p) 'c)))
(defun vdiff--unselected-buffers ()
- (remq (current-buffer) vdiff--buffers))
+ (remq (current-buffer)
+ (vdiff-session-buffers vdiff--session)))
(defun vdiff--unselected-windows ()
(mapcar #'get-buffer-window
(vdiff--unselected-buffers)))
(defun vdiff--all-windows ()
- (remq nil (mapcar #'get-buffer-window vdiff--buffers)))
+ (remq nil
+ (mapcar #'get-buffer-window
+ (vdiff-session-buffers vdiff--session))))
(defun vdiff--all-overlays (ovr)
(overlay-get ovr 'vdiff-hunk-overlays))
@@ -288,7 +312,7 @@ because those are handled differently.")
(apply #'min
(mapcar (lambda (buf)
(window-width (get-buffer-window buf)))
- vdiff--buffers)))
+ (vdiff-session-buffers vdiff--session))))
(defun vdiff--move-to-line (n)
(goto-char (point-min))
@@ -333,7 +357,7 @@ because those are handled differently.")
(defmacro vdiff--with-all-buffers (&rest body)
"Execute BODY in all vdiff buffers."
- `(dolist (buf vdiff--buffers)
+ `(dolist (buf (vdiff-session-buffers vdiff--session))
(when (buffer-live-p buf)
(with-current-buffer buf
,@body))))
@@ -348,7 +372,8 @@ because those are handled differently.")
(completing-read "Case options: "
vdiff--case-options)
vdiff--case-options))))
- (setq vdiff--case-args command-line-arg)
+ (setf (vdiff-session-case-args vdiff--session)
+ command-line-arg)
(when vdiff-mode
(vdiff-refresh)))
@@ -360,7 +385,8 @@ because those are handled differently.")
(completing-read "Whitespace options: "
vdiff--whitespace-options)
vdiff--whitespace-options))))
- (setq vdiff--whitespace-args command-line-arg)
+ (setf (vdiff-session-whitespace-args vdiff--session)
+ command-line-arg)
(when vdiff-mode
(vdiff-refresh)))
@@ -371,43 +397,46 @@ because those are handled differently.")
(interactive)
(let* ((tmp-a (make-temp-file "vdiff-a-"))
(tmp-b (make-temp-file "vdiff-b-"))
- (tmp-c (make-temp-file "vdiff-c-"))
+ (tmp-c (when vdiff-3way-mode
+ (make-temp-file "vdiff-c-")))
(prgm (if vdiff-3way-mode
vdiff-diff3-program
vdiff-diff-program))
- (cmd (mapconcat #'identity
- (nconc
- (list
- prgm
- vdiff--whitespace-args
- vdiff--case-args
- vdiff-diff-extra-args
- tmp-a tmp-b)
- (when vdiff-3way-mode
- (list tmp-c)))
- " "))
- (proc (get-buffer-process vdiff--process-buffer)))
- (with-current-buffer (car vdiff--buffers)
+ (ses vdiff--session)
+ (cmd (mapconcat
+ #'identity
+ (vdiff--non-nil-list
+ prgm
+ (vdiff-session-whitespace-args ses)
+ (vdiff-session-case-args ses)
+ vdiff-diff-extra-args
+ tmp-a tmp-b tmp-c)
+ " "))
+ (buffers (vdiff-session-buffers ses))
+ (proc-buf (vdiff-session-process-buffer ses))
+ (proc (get-buffer-process proc-buf)))
+ (setq vdiff--last-command cmd)
+ (with-current-buffer (car buffers)
(write-region nil nil tmp-a nil 'quietly))
- (with-current-buffer (cadr vdiff--buffers)
+ (with-current-buffer (cadr buffers)
(write-region nil nil tmp-b nil 'quietly))
(when vdiff-3way-mode
- (with-current-buffer (caddr vdiff--buffers)
+ (with-current-buffer (nth 2 buffers)
(write-region nil nil tmp-c nil 'quietly)))
(when proc
(kill-process proc))
- (with-current-buffer (get-buffer-create vdiff--process-buffer)
+ (with-current-buffer (get-buffer-create proc-buf)
(erase-buffer))
- (setq vdiff--last-command cmd)
- (setq proc (start-process-shell-command
- vdiff--process-buffer
- vdiff--process-buffer
- cmd))
+ ;; (setq vdiff--last-command cmd)
+ (setq proc
+ (start-process-shell-command proc-buf proc-buf cmd))
(when vdiff-3way-mode
(process-put proc 'vdiff-3way t))
+ (process-put proc 'vdiff-session ses)
(process-put proc 'vdiff-tmp-a tmp-a)
(process-put proc 'vdiff-tmp-b tmp-b)
- (process-put proc 'vdiff-tmp-c tmp-c)
+ (when tmp-c
+ (process-put proc 'vdiff-tmp-c tmp-c))
(set-process-sentinel proc #'vdiff--diff-refresh-1)))
(defun vdiff--encode-range (insert beg &optional end)
@@ -425,9 +454,7 @@ because those are handled differently.")
(with-current-buffer buf
(goto-char (point-min))
(while (re-search-forward vdiff--diff-code-regexp nil t)
- (let* ((code (match-string 3))
- a-range
- b-range)
+ (let* ((code (match-string 3)))
(push
(cl-case (string-to-char code)
(?a (list (vdiff--encode-range
@@ -484,17 +511,18 @@ parsing the diff output and triggering the overlay
updates."
(let ((parse-func (if (process-get proc 'vdiff-3way)
'vdiff--parse-diff3
'vdiff--parse-diff))
+ (ses (process-get proc 'vdiff-session))
finished)
(cond
;; Was getting different exit code conventions depending on the
;; version of diff used
((or (string= "finished\n" event)
(string= "exited abnormally with code 1\n" event))
- (setq vdiff--diff-data
+ (setf (vdiff-session-diff-data ses)
(funcall parse-func (process-buffer proc)))
(setq finished t))
((string-match-p "exited abnormally with code" event)
- (setq vdiff--diff-data nil)
+ (setf (vdiff-session-diff-data ses) nil)
(setq finished t)
(message "vdiff process error: %s" event)))
(when finished
@@ -502,10 +530,11 @@ parsing the diff output and triggering the overlay
updates."
(vdiff--refresh-line-maps)
(delete-file (process-get proc 'vdiff-tmp-a))
(delete-file (process-get proc 'vdiff-tmp-b))
- (delete-file (process-get proc 'vdiff-tmp-c))
+ (when (process-get proc 'vdiff-tmp-c)
+ (delete-file (process-get proc 'vdiff-tmp-c)))
(when vdiff-auto-refine
- (vdiff-refine-all-hunks))))
- (setq vdiff--diff-stale nil)))
+ (vdiff-refine-all-hunks)))
+ (setf (vdiff-session-diff-stale ses) nil))))
(defun vdiff--remove-all-overlays ()
"Remove all vdiff overlays in both vdiff buffers."
@@ -872,25 +901,23 @@ of a \"word\"."
(vdiff--point-in-fold-p b-fold)
(and c-fold
(vdiff--point-in-fold-p c-fold))
- vdiff--all-folds-open)
+ (vdiff-session-all-folds-open
+ vdiff--session))
(vdiff--set-open-fold-props fold))
(t
(vdiff--set-closed-fold-props fold)))))
(overlay-put a-fold 'vdiff-other-folds
- (if c-fold
- (list b-fold c-fold)
- (list b-fold)))
+ (vdiff--non-nil-list b-fold c-fold))
(overlay-put b-fold 'vdiff-other-folds
- (if c-fold
- (list a-fold c-fold)
- (list a-fold)))
+ (vdiff--non-nil-list a-fold c-fold))
(when c-fold
(overlay-put c-fold 'vdiff-other-folds (list a-fold b-fold)))
- (push (list a-range a-fold b-fold c-fold) new-folds))))))
- (setq vdiff--folds new-folds)))
+ (push (vdiff--non-nil-list a-range a-fold b-fold c-fold)
+ new-folds))))))
+ (setf (vdiff-session-folds vdiff--session) new-folds)))
(defun vdiff--remove-fold-overlays (_)
- (setq vdiff--folds nil))
+ (setf (vdiff-session-folds vdiff--session) nil))
(defun vdiff--add-diff-overlay (this-len other-len-1 other-len-2)
(let ((max-other-len (max (if other-len-1 other-len-1 0)
@@ -906,9 +933,9 @@ of a \"word\"."
(defun vdiff--refresh-overlays ()
"Delete and recreate overlays in both buffers."
(vdiff--remove-all-overlays)
- (let ((a-buffer (car vdiff--buffers))
- (b-buffer (cadr vdiff--buffers))
- (c-buffer (nth 2 vdiff--buffers))
+ (let ((a-buffer (car (vdiff-session-buffers vdiff--session)))
+ (b-buffer (cadr (vdiff-session-buffers vdiff--session)))
+ (c-buffer (nth 2 (vdiff-session-buffers vdiff--session)))
(a-line 1)
(b-line 1)
(c-line 1)
@@ -928,7 +955,7 @@ of a \"word\"."
(with-current-buffer c-buffer
(widen)
(goto-char (point-min))))
- (dolist (hunk vdiff--diff-data)
+ (dolist (hunk (vdiff-session-diff-data vdiff--session))
(let* ((a-range (nth 0 hunk))
(b-range (nth 1 hunk))
(c-range (nth 2 hunk))
@@ -939,7 +966,6 @@ of a \"word\"."
(b-beg (car b-range))
(b-end (cdr b-range))
(b-post (if b-end (1+ b-end) b-beg))
- (b-insert (null b-end))
(b-len (when b-end (1+ (- b-end b-beg))))
c-beg c-end c-post c-len)
(when c-buffer
@@ -972,9 +998,7 @@ of a \"word\"."
(forward-line (- c-beg c-line))
(setq c-line c-beg)
(setq ovr-c (vdiff--add-diff-overlay c-len a-len b-len))))
- (let ((ovr-group (if c-buffer
- (list ovr-a ovr-b ovr-c)
- (list ovr-a ovr-b))))
+ (let ((ovr-group (vdiff--non-nil-list ovr-a ovr-b ovr-c)))
(overlay-put ovr-a 'vdiff-a t)
(overlay-put ovr-a 'vdiff-hunk-overlays ovr-group)
(overlay-put ovr-b 'vdiff-b t)
@@ -1129,7 +1153,7 @@ just deleting text in the other buffer."
(c-a (list (list 0 0 0)))
(b-c (list (list 0 0 0)))
(c-b (list (list 0 0 0))))
- (dolist (hunk vdiff--diff-data)
+ (dolist (hunk (vdiff-session-diff-data vdiff--session))
(let* ((a-lines (nth 0 hunk))
(a-beg (car a-lines))
(a-prior (1- a-beg))
@@ -1140,8 +1164,7 @@ just deleting text in the other buffer."
(b-prior (1- b-beg))
(b-end (cdr b-lines))
(b-post (if b-end (1+ b-end) b-beg))
- (c-lines (nth 2 hunk))
- c-beg c-end c-prior c-post c-len)
+ (c-lines (nth 2 hunk)))
(let ((new-a-b
(vdiff--2way-entries a-prior a-end a-post b-prior b-end
b-post)))
(setq a-b (nconc a-b (car new-a-b)))
@@ -1159,7 +1182,7 @@ just deleting text in the other buffer."
(setq c-a (nconc c-a (cdr new-a-c)))
(setq b-c (nconc b-c (car new-b-c)))
(setq c-b (nconc c-b (cdr new-b-c))))))))
- (setq vdiff--line-maps
+ (setf (vdiff-session-line-maps vdiff--session)
(if vdiff-3way-mode
(list (list 'a a-b a-c)
(list 'b b-a b-c)
@@ -1172,7 +1195,9 @@ just deleting text in the other buffer."
B. Go from buffer B to A if B-to-A is non nil."
(interactive (list (line-number-at-pos)))
(let* ((from-buffer (or from-buffer (vdiff--buffer-p)))
- (maps (cdr (assq from-buffer vdiff--line-maps)))
+ (maps
+ (cdr
+ (assq from-buffer (vdiff-session-line-maps vdiff--session))))
last-entry res-1 res-2)
(dolist (map maps)
(setq last-entry
@@ -1225,7 +1250,8 @@ buffer and recenter all buffers."
(defun vdiff-restore-windows ()
"Restore initial window configuration."
(interactive)
- (set-window-configuration vdiff--window-configuration))
+ (set-window-configuration
+ (vdiff-session-window-config vdiff--session)))
(defun vdiff--pos-at-line-beginning (line &optional buffer)
"Return position at beginning of LINE in BUFFER (or current
@@ -1316,8 +1342,8 @@ buffer)."
;; (vdiff--scroll-function)))))
(defun vdiff--after-change-function (&rest _)
- (unless vdiff--diff-stale
- (setq vdiff--diff-stale t)
+ (unless (vdiff-session-diff-stale vdiff--session)
+ (setf (vdiff-session-diff-stale vdiff--session) t)
(when (timerp vdiff--after-change-timer)
(cancel-timer vdiff--after-change-timer))
(setq vdiff--after-change-timer
@@ -1369,7 +1395,7 @@ folds in the region."
(interactive (vdiff--region-or-close-overlay))
(dolist (ovr (overlays-in beg end))
(when (eq (overlay-get ovr 'vdiff-type) 'fold)
- (setq vdiff--all-folds-open nil)
+ (setf (vdiff-session-all-folds-open vdiff--session) nil)
(goto-char (overlay-start ovr))
(vdiff--set-closed-fold-props ovr)
(dolist (other-fold (overlay-get ovr 'vdiff-other-folds))
@@ -1379,14 +1405,14 @@ folds in the region."
"Open all folds in both buffers"
(interactive)
(save-excursion
- (setq vdiff--all-folds-open t)
+ (setf (vdiff-session-all-folds-open vdiff--session) t)
(vdiff-open-fold (point-min) (point-max))))
(defun vdiff-close-all-folds ()
"Close all folds in both buffers"
(interactive)
(save-excursion
- (setq vdiff--all-folds-open nil)
+ (setf (vdiff-session-all-folds-open vdiff--session) nil)
(vdiff-close-fold (point-min) (point-max))))
(defun vdiff-close-other-folds ()
@@ -1395,7 +1421,7 @@ folds in the region."
(dolist (ovr (overlays-in (point-min) (point-max)))
(when (and (eq (overlay-get ovr 'vdiff-type) 'fold)
(not (vdiff--point-in-fold-p ovr)))
- (setq vdiff--all-folds-open nil)
+ (setf (vdiff-session-all-folds-open vdiff--session) nil)
(vdiff--set-closed-fold-props ovr)
(dolist (other-fold (overlay-get ovr 'vdiff-other-folds))
(vdiff--set-closed-fold-props other-fold)))))
@@ -1454,6 +1480,25 @@ with non-nil USE-FOLDS."
(goto-char (vdiff--nth-hunk count t))
(vdiff-sync-and-center)))
+;; * Session
+
+;; modified from ediff
+(defun vdiff--unique-buffer-name (name)
+ (if (null (get-buffer name))
+ name
+ (let ((n 2))
+ (while (get-buffer (format "%s<%d>" name n))
+ (setq n (1+ n)))
+ (format "%s<%d>" name n))))
+
+(defun vdiff--init-session (buffer-a buffer-b &optional buffer-c)
+ (make-vdiff-session
+ :buffers (vdiff--non-nil-list buffer-a buffer-b buffer-c)
+ :process-buffer (vdiff--unique-buffer-name " *vdiff* ")
+ :word-diff-output-buffer (vdiff--unique-buffer-name " *vdiff-word* ")
+ :case-args ""
+ :whitespace-args ""))
+
;; * Entry points
;;;###autoload
@@ -1498,9 +1543,11 @@ asked to select two buffers."
(split-window-vertically)
(split-window-horizontally))
(switch-to-buffer-other-window buffer-b)
- (setq vdiff--buffers (list buffer-a buffer-b))
- (vdiff--with-all-buffers
- (vdiff-mode 1)))
+ (setq vdiff--temp-session
+ (vdiff--init-session buffer-a buffer-b))
+ (dolist (buf (list buffer-a buffer-b))
+ (with-current-buffer buf
+ (vdiff-mode 1))))
(vdiff-refresh))
(defcustom vdiff-3way-layout-function 'vdiff-3way-layout-function-default
@@ -1543,12 +1590,15 @@ asked to select two buffers."
(vdiff-3way-mode 1))
(vdiff-refresh))
+(defvar vdiff-quit-hook nil)
+
(defun vdiff-quit ()
"Quit `vdiff-mode' and clean up."
(interactive)
- (dolist (buf vdiff--buffers)
+ (dolist (buf (vdiff-session-buffers vdiff--session))
(with-current-buffer buf
(vdiff-mode -1)))
+ (run-hooks 'vdiff-quit-hook)
(message "vdiff exited"))
(defvar vdiff-mode-map
@@ -1590,11 +1640,14 @@ asked to select two buffers."
(defvar vdiff-scroll-lock-mode)
(defun vdiff--init ()
+ ;; this is a buffer-local var
+ (setq vdiff--session vdiff--temp-session)
(setq cursor-in-non-selected-windows nil)
(add-hook 'after-save-hook #'vdiff-refresh nil t)
(add-hook 'after-change-functions #'vdiff--after-change-function nil t)
(add-hook 'pre-command-hook #'vdiff--flag-new-command nil t)
- (setq vdiff--window-configuration (current-window-configuration)))
+ (setf (vdiff-session-window-config vdiff--session)
+ (current-window-configuration)))
(defun vdiff--cleanup ()
(vdiff--remove-all-overlays)
@@ -1604,14 +1657,14 @@ asked to select two buffers."
(remove-hook 'pre-command-hook #'vdiff--flag-new-command t)
(when vdiff-scroll-lock-mode
(vdiff-scroll-lock-mode -1))
- (setq vdiff--diff-data nil)
- (setq vdiff--buffers nil)
- (setq vdiff--line-maps nil)
- (setq vdiff--window-configuration nil)
- (dolist (buf (list vdiff--process-buffer vdiff--word-diff-output-buffer))
+ (dolist (buf (list (vdiff-session-process-buffer
+ vdiff--session)
+ (vdiff-session-word-diff-output-buffer
+ vdiff--session)))
(when (process-live-p (get-buffer-process buf))
(kill-process (get-buffer-process buf)))
- (when (buffer-live-p buf) (kill-buffer buf))))
+ (when (buffer-live-p buf) (kill-buffer buf)))
+ (setq vdiff--session nil))
(define-minor-mode vdiff-mode
"Minor mode active in a vdiff session involving two
@@ -1657,10 +1710,12 @@ enabled automatically if `vdiff-lock-scrolling' is
non-nil."
(message "Scrolling unlocked"))))
(defun vdiff--current-case ()
- (if (string= "" vdiff--case-args) "off" "on (-i)"))
+ (if (string= "" (vdiff-session-case-args vdiff--session))
+ "off"
+ "on (-i)"))
(defun vdiff--current-whitespace ()
- (pcase vdiff--whitespace-args
+ (pcase (vdiff-session-whitespace-args vdiff--session)
("" "off")
("-w" "all (-w)")
("-b" "space changes (-b)")
- [elpa] scratch/add-vdiff 43b9dc6 097/258: Add missing image, (continued)
- [elpa] scratch/add-vdiff 43b9dc6 097/258: Add missing image, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 7811f01 095/258: Add two features, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff fa6391e 123/258: Reorg README commands section, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff a2fbb7b 146/258: Rename diff-program-args, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 3d38f6c 040/258: Fix line endings, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 5031c90 145/258: Finish new line translation logic, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 8c78e58 170/258: Fix compiler warning, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 9890b81 181/258: Fix weird vscroll problem, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 9454053 187/258: Use window-text-width instead of window-width, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff e6e834f 196/258: Don't refresh on buffer switch, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 5043ca3 168/258: Wrap global state into session object,
Justin Burkett <=
- [elpa] scratch/add-vdiff af5ddce 203/258: Remove vdiff-sync-and-center, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 7f100a3 210/258: Fix vdiff-refresh callback function, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 1478a02 219/258: vdiff-magit: Make group, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 90374e7 223/258: vdiff-magit: Port dwim-show-on-hunks, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 219d765 225/258: vdiff-magit: Simplify stage, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 05cbdee 227/258: vdiff: Allow buffers to be killed in quit, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 98e1add 216/258: vdiff-magit: Port show-staged, show-unstaged and stage, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff e5d3633 226/258: Revert "vdiff-magit: Simplify stage", Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff de84cfd 232/258: vdiff-magit: Fix a function reference in dwim, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 7a3e456 234/258: vdiff-magit: Cleanup after stage, Justin Burkett, 2017/05/17