[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] scratch/add-vdiff 2847cd6 183/258: Add callback support on quit
From: |
Justin Burkett |
Subject: |
[elpa] scratch/add-vdiff 2847cd6 183/258: Add callback support on quit |
Date: |
Wed, 17 May 2017 08:13:47 -0400 (EDT) |
branch: scratch/add-vdiff
commit 2847cd66c8d1573b321818e2d3f73f6def296deb
Author: justbur <address@hidden>
Commit: justbur <address@hidden>
Add callback support on quit
---
vdiff.el | 54 ++++++++++++++++++++++++++++++++++++------------------
1 file changed, 36 insertions(+), 18 deletions(-)
diff --git a/vdiff.el b/vdiff.el
index 2f15b17..3bcc2f1 100644
--- a/vdiff.el
+++ b/vdiff.el
@@ -222,7 +222,9 @@ because those are handled differently.")
;; other
window-config
case-args
- whitespace-args)
+ whitespace-args
+ ;; Quit hook
+ on-quit)
;; * Utilities
@@ -1533,20 +1535,25 @@ with non-nil USE-FOLDS."
(setq n (1+ n)))
(format "%s<%d>" name n))))
-(defun vdiff--init-session (buffer-a buffer-b &optional buffer-c)
+(defun vdiff--init-session (buffer-a buffer-b &optional buffer-c on-quit)
(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 ""))
+ :whitespace-args ""
+ :on-quit on-quit))
;; * Entry points
;;;###autoload
-(defun vdiff-files (file-a file-b &optional horizontal)
+(defun vdiff-files (file-a file-b &optional horizontal on-quit)
"Start a vdiff session. If called interactively, you will be
-asked to select two files."
+asked to select two files. HORIZONTAL adjusts the buffer's
+initial layout. A prefix argument can be used to set this
+variable interactively. ON-QUIT is a function to run on exiting
+the vdiff session. It is called with the two vdiff buffers as
+arguments."
(interactive
(let* ((file-a (read-file-name "File 1: "))
(default-directory
@@ -1559,12 +1566,16 @@ asked to select two files."
current-prefix-arg)))
(vdiff-buffers (find-file-noselect file-a)
(find-file-noselect file-b)
- horizontal))
+ horizontal on-quit))
;;;###autoload
-(defun vdiff-buffers (buffer-a buffer-b &optional horizontal)
+(defun vdiff-buffers (buffer-a buffer-b &optional horizontal on-quit)
"Start a vdiff session. If called interactively, you will be
-asked to select two buffers."
+asked to select two buffers. HORIZONTAL adjusts the buffer's
+initial layout. A prefix argument can be used to set this
+variable interactively. ON-QUIT is a function to run on exiting
+the vdiff session. It is called with the two vdiff buffers as
+arguments."
(interactive
(let* ((buffer-a
(get-buffer
@@ -1585,7 +1596,7 @@ asked to select two buffers."
(split-window-horizontally))
(switch-to-buffer-other-window buffer-b))
(setq vdiff--temp-session
- (vdiff--init-session buffer-a buffer-b))
+ (vdiff--init-session buffer-a buffer-b nil on-quit))
(dolist (buf (list buffer-a buffer-b))
(with-current-buffer buf
(vdiff-mode -1)
@@ -1606,9 +1617,11 @@ asked to select two buffers."
(set-window-buffer (split-window-horizontally) buffer-b))
;;;###autoload
-(defun vdiff-buffers3 (buffer-a buffer-b buffer-c)
+(defun vdiff-buffers3 (buffer-a buffer-b buffer-c &optional on-quit)
"Start a vdiff session. If called interactively, you will be
-asked to select two buffers."
+asked to select two buffers. ON-QUIT is a function to run on
+exiting the vdiff session. It is called with the three vdiff
+buffers as arguments."
(interactive
(let* ((buffer-a
(get-buffer
@@ -1627,7 +1640,7 @@ asked to select two buffers."
(list buffer-a buffer-b buffer-c)))
(funcall vdiff-3way-layout-function buffer-a buffer-b buffer-c)
(setq vdiff--temp-session
- (vdiff--init-session buffer-a buffer-b buffer-c))
+ (vdiff--init-session buffer-a buffer-b buffer-c on-quit))
(dolist (buf (list buffer-a buffer-b buffer-c))
(with-current-buffer buf
(vdiff-mode -1)
@@ -1637,7 +1650,7 @@ asked to select two buffers."
(vdiff-sync-and-center))
;;;###autoload
-(defun vdiff-files3 (file-a file-b file-c)
+(defun vdiff-files3 (file-a file-b file-c &optional on-quit)
"Start a vdiff session with 3 files. If called interactively,
you will be asked to select two files."
(interactive
@@ -1663,11 +1676,16 @@ you will be asked to select two files."
(defun vdiff-quit ()
"Quit `vdiff-mode' and clean up."
(interactive)
- (dolist (buf (vdiff-session-buffers vdiff--session))
- (with-current-buffer buf
- (vdiff-mode -1)))
- (run-hooks 'vdiff-quit-hook)
- (message "vdiff exited"))
+ (if (null vdiff--session)
+ (user-error "Not in a vdiff buffer")
+ (when (functionp (vdiff-session-on-quit vdiff--session))
+ (apply (vdiff-session-on-quit vdiff--session)
+ (vdiff-session-buffers vdiff--session)))
+ (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
(let ((map (make-sparse-keymap)))
- [elpa] scratch/add-vdiff 1102da8 129/258: Avoid subtraction overlays larger than window-height, (continued)
- [elpa] scratch/add-vdiff 1102da8 129/258: Avoid subtraction overlays larger than window-height, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 7135738 132/258: Version 0.1, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 2e7f076 141/258: Simplify bitmap creation, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 001ae43 152/258: Fix modification of buffer list, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 477eb88 161/258: Fix refinement bug, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff f1eca80 165/258: Disable refine-all-hunks for diff3, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 30b85fe 164/258: Fix sending changes with diff3, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 816fe2a 182/258: Fix subtraction string width, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 582d13d 180/258: Fix compiler warnings, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff cd9dad4 191/258: Fix refresh function call sequence, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 2847cd6 183/258: Add callback support on quit,
Justin Burkett <=
- [elpa] scratch/add-vdiff 90f81f0 175/258: Make sure hook functions execute in vdiff bufs, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 2d48cb5 229/258: vdiff-magit: Simplify resolve, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff c31755a 220/258: vdiff-magit: Port show stash, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff cfb90d7 233/258: vdiff-magit: Add note to README, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff f5fdcaa 241/258: vdiff-magit: Simplify exit from stage, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff e8d3d26 236/258: vdiff-magit: Try to switch resolve functions gracefully, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 7c87360 244/258: vdiff: Add vdiff-current-file, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 8b32329 245/258: vdiff: Filter out killed buffers better, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 8aa5c45 250/258: vdiff-magit: Fix paren, Justin Burkett, 2017/05/17
- [elpa] scratch/add-vdiff 466b852 173/258: Fix subtraction overlay addition, Justin Burkett, 2017/05/17