[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/diff-hl 2ca3599 1/2: diff-hl-revert-hunk: Honor diff-hl
From: |
ELPA Syncer |
Subject: |
[elpa] externals/diff-hl 2ca3599 1/2: diff-hl-revert-hunk: Honor diff-hl-show-staged-changes |
Date: |
Thu, 4 Nov 2021 21:57:20 -0400 (EDT) |
branch: externals/diff-hl
commit 2ca35993151fdc176f986b1f3776e2b3fb286453
Author: Dmitry Gutov <dgutov@yandex.ru>
Commit: Dmitry Gutov <dgutov@yandex.ru>
diff-hl-revert-hunk: Honor diff-hl-show-staged-changes
Fixes https://github.com/dgutov/diff-hl/issues/173#issuecomment-959673308
* Extract `diff-hl-diff-against-reference`, to have
`diff-hl-changes-buffer` and `diff-hl-revert-buffer` use one source of
changes.
* Inline the important part of `vc-diff-internal`, to be able to
fetch the diff differently.
---
diff-hl.el | 73 +++++++++++++++++++++++++++++++++++---------------------------
1 file changed, 41 insertions(+), 32 deletions(-)
diff --git a/diff-hl.el b/diff-hl.el
index d149621..e1d6e42 100644
--- a/diff-hl.el
+++ b/diff-hl.el
@@ -293,29 +293,29 @@ Only affects Git, it's the only backend that has staging
area."
(declare-function vc-git-command "vc-git")
(defun diff-hl-changes-buffer (file backend)
- (let ((buf-name " *diff-hl* "))
- (if (and (eq backend 'Git)
- (not diff-hl-reference-revision)
- (not diff-hl-show-staged-changes))
- (diff-hl-with-diff-switches
- (apply #'vc-git-command buf-name 1
- (list file)
- "diff-files"
- (cons "-p" (vc-switches 'git 'diff))))
- (condition-case err
- (diff-hl-with-diff-switches
- (vc-call-backend backend 'diff (list file)
- diff-hl-reference-revision nil
- buf-name))
- (error
- ;; https://github.com/dgutov/diff-hl/issues/117
- (when (string-match-p "\\`Failed (status 128)" (error-message-string
err))
- (diff-hl-with-diff-switches
- (vc-call-backend backend 'diff (list file)
- "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
- nil
- buf-name))))))
- buf-name))
+ (diff-hl-with-diff-switches
+ (diff-hl-diff-against-reference file backend " *diff-hl* ")))
+
+(defun diff-hl-diff-against-reference (file backend buffer)
+ (if (and (eq backend 'Git)
+ (not diff-hl-reference-revision)
+ (not diff-hl-show-staged-changes))
+ (apply #'vc-git-command buffer 1
+ (list file)
+ "diff-files"
+ (cons "-p" (vc-switches 'git 'diff)))
+ (condition-case err
+ (vc-call-backend backend 'diff (list file)
+ diff-hl-reference-revision nil
+ buffer)
+ (error
+ ;; https://github.com/dgutov/diff-hl/issues/117
+ (when (string-match-p "\\`Failed (status 128)" (error-message-string
err))
+ (vc-call-backend backend 'diff (list file)
+ "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
+ nil
+ buffer)))))
+ buffer)
(defun diff-hl-changes ()
(let* ((file buffer-file-name)
@@ -547,17 +547,26 @@ in the source file, or the last line of the hunk above
it."
(save-restriction
(widen)
(vc-buffer-sync)
- (let ((diff-buffer (generate-new-buffer-name "*diff-hl*"))
- (buffer (current-buffer))
- (line (save-excursion
- (diff-hl-find-current-hunk)
- (line-number-at-pos)))
- (fileset (vc-deduce-fileset)))
+ (let* ((diff-buffer (get-buffer-create
+ (generate-new-buffer-name "*diff-hl*")))
+ (buffer (current-buffer))
+ (line (save-excursion
+ (diff-hl-find-current-hunk)
+ (line-number-at-pos)))
+ (file buffer-file-name)
+ (backend (vc-backend file)))
(unwind-protect
(progn
- (vc-diff-internal nil fileset diff-hl-reference-revision nil
- nil diff-buffer)
+ (vc-setup-buffer diff-buffer)
+ (diff-hl-diff-against-reference file backend diff-buffer)
+ (set-buffer diff-buffer)
+ (diff-mode)
+ (setq-local diff-vc-backend backend)
+ (setq-local diff-vc-revisions (list diff-hl-reference-revision
nil))
+ (setq buffer-read-only t)
+ (pop-to-buffer diff-buffer)
(vc-run-delayed
+ (vc-diff-finish diff-buffer nil)
(let (beg-line end-line m-beg m-end)
(when (eobp)
(with-current-buffer buffer (diff-hl-remove-overlays))
@@ -579,7 +588,7 @@ in the source file, or the last line of the hunk above it."
(diff-refine-hunk)))
(if diff-hl-ask-before-revert-hunk
(unless (yes-or-no-p (format "Revert current hunk in %s? "
- (cl-caadr fileset)))
+ file))
(user-error "Revert canceled")))
(let ((diff-advance-after-apply-hunk nil))
(save-window-excursion