[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 93aa34d 22/25: Make sure buffer is not narrowed when rever
From: |
Dmitry Gutov |
Subject: |
[elpa] master 93aa34d 22/25: Make sure buffer is not narrowed when reverting a hunk |
Date: |
Sat, 8 Dec 2018 19:19:43 -0500 (EST) |
branch: master
commit 93aa34da8ec11aa3818decee8751f5de2e028c03
Author: Evgeni Kolev <address@hidden>
Commit: Evgeni Kolev <address@hidden>
Make sure buffer is not narrowed when reverting a hunk
---
diff-hl.el | 94 ++++++++++++++++++++++++++++++++------------------------------
1 file changed, 48 insertions(+), 46 deletions(-)
diff --git a/diff-hl.el b/diff-hl.el
index b9fd6d2..0567664 100644
--- a/diff-hl.el
+++ b/diff-hl.el
@@ -405,52 +405,54 @@ in the source file, or the last line of the hunk above
it."
(defun diff-hl-revert-hunk ()
"Revert the diff hunk with changes at or above the point."
(interactive)
- (vc-buffer-sync)
- (let ((diff-buffer (generate-new-buffer-name "*diff-hl*"))
- (buffer (current-buffer))
- (line (save-excursion
- (unless (diff-hl-hunk-overlay-at (point))
- (diff-hl-previous-hunk))
- (line-number-at-pos)))
- (fileset (vc-deduce-fileset)))
- (unwind-protect
- (progn
- (vc-diff-internal nil fileset diff-hl-reference-revision nil
- nil diff-buffer)
- (vc-exec-after
- `(let (beg-line end-line m-end)
- (when (eobp)
- (with-current-buffer ,buffer (diff-hl-remove-overlays))
- (user-error "Buffer is up-to-date"))
- (let (diff-auto-refine-mode)
- (diff-hl-diff-skip-to ,line))
- (save-excursion
- (while (looking-at "[-+]") (forward-line 1))
- (setq end-line (line-number-at-pos (point)))
- (setq m-end (point-marker))
- (unless (eobp) (diff-split-hunk)))
- (unless (looking-at "[-+]") (forward-line -1))
- (while (looking-at "[-+]") (forward-line -1))
- (setq beg-line (line-number-at-pos (point)))
- (unless (looking-at "@")
- (forward-line 1)
- (diff-split-hunk))
- (funcall diff-hl-highlight-revert-hunk-function m-end)
- (let ((wbh (window-body-height)))
- (if (>= wbh (- end-line beg-line))
- (recenter (/ (+ wbh (- beg-line end-line) 2) 2))
- (recenter 1)))
- (when diff-auto-refine-mode
- (diff-refine-hunk))
- (unless (yes-or-no-p (format "Revert current hunk in %s? "
- ,(cl-caadr fileset)))
- (user-error "Revert canceled"))
- (let ((diff-advance-after-apply-hunk nil))
- (diff-apply-hunk t))
- (with-current-buffer ,buffer
- (save-buffer))
- (message "Hunk reverted"))))
- (quit-windows-on diff-buffer t))))
+ (save-restriction
+ (widen)
+ (vc-buffer-sync)
+ (let ((diff-buffer (generate-new-buffer-name "*diff-hl*"))
+ (buffer (current-buffer))
+ (line (save-excursion
+ (unless (diff-hl-hunk-overlay-at (point))
+ (diff-hl-previous-hunk))
+ (line-number-at-pos)))
+ (fileset (vc-deduce-fileset)))
+ (unwind-protect
+ (progn
+ (vc-diff-internal nil fileset diff-hl-reference-revision nil
+ nil diff-buffer)
+ (vc-exec-after
+ `(let (beg-line end-line m-end)
+ (when (eobp)
+ (with-current-buffer ,buffer (diff-hl-remove-overlays))
+ (user-error "Buffer is up-to-date"))
+ (let (diff-auto-refine-mode)
+ (diff-hl-diff-skip-to ,line))
+ (save-excursion
+ (while (looking-at "[-+]") (forward-line 1))
+ (setq end-line (line-number-at-pos (point)))
+ (setq m-end (point-marker))
+ (unless (eobp) (diff-split-hunk)))
+ (unless (looking-at "[-+]") (forward-line -1))
+ (while (looking-at "[-+]") (forward-line -1))
+ (setq beg-line (line-number-at-pos (point)))
+ (unless (looking-at "@")
+ (forward-line 1)
+ (diff-split-hunk))
+ (funcall diff-hl-highlight-revert-hunk-function m-end)
+ (let ((wbh (window-body-height)))
+ (if (>= wbh (- end-line beg-line))
+ (recenter (/ (+ wbh (- beg-line end-line) 2) 2))
+ (recenter 1)))
+ (when diff-auto-refine-mode
+ (diff-refine-hunk))
+ (unless (yes-or-no-p (format "Revert current hunk in %s? "
+ ,(cl-caadr fileset)))
+ (user-error "Revert canceled"))
+ (let ((diff-advance-after-apply-hunk nil))
+ (diff-apply-hunk t))
+ (with-current-buffer ,buffer
+ (save-buffer))
+ (message "Hunk reverted"))))
+ (quit-windows-on diff-buffer t)))))
(defun diff-hl-hunk-overlay-at (pos)
(cl-loop for o in (overlays-in pos (1+ pos))
- [elpa] master f0b945a 14/25: Don't call vc-state unless the file exists, (continued)
- [elpa] master f0b945a 14/25: Don't call vc-state unless the file exists, Dmitry Gutov, 2018/12/08
- [elpa] master ce93571 19/25: Add some FIXMEs related to #71, Dmitry Gutov, 2018/12/08
- [elpa] master 9ef21e4 15/25: Merge pull request #93 from Wilfred/handle_file_move, Dmitry Gutov, 2018/12/08
- [elpa] master 027b0d2 20/25: diff-hl-revert-hunk: Emphasize the hunk, Dmitry Gutov, 2018/12/08
- [elpa] master 069a925 24/25: Bump the version, Dmitry Gutov, 2018/12/08
- [elpa] master a626bf8 23/25: Merge pull request #109 from edkolev/revert-hunk-in-narrowed-buffer, Dmitry Gutov, 2018/12/08
- [elpa] master a48699f 21/25: #111 Extract diff-hl-highlight-revert-hunk-function, Dmitry Gutov, 2018/12/08
- [elpa] master 154c64a 18/25: Merge pull request #105 from phst/license, Dmitry Gutov, 2018/12/08
- [elpa] master 63f1687 10/25: diff-hl-dired-update: Handle up-to-date entries properly, Dmitry Gutov, 2018/12/08
- [elpa] master 190622d 16/25: Fix #102, Dmitry Gutov, 2018/12/08
- [elpa] master 93aa34d 22/25: Make sure buffer is not narrowed when reverting a hunk,
Dmitry Gutov <=
- [elpa] master 262a6d5 17/25: Add a LICENSE file, Dmitry Gutov, 2018/12/08
- [elpa] master 7964c46 25/25: Merge commit '069a92590000269a9a5b0b7aebbae9595675a59c' from diff-hl, Dmitry Gutov, 2018/12/08