emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 6c3731a 40/57: Fixup vdiff--transmit-change for 3way diffs


From: Justin Burkett
Subject: [elpa] master 6c3731a 40/57: Fixup vdiff--transmit-change for 3way diffs
Date: Tue, 3 Nov 2020 14:32:24 -0500 (EST)

branch: master
commit 6c3731a8a4179ecdd773cbd7f7cbaf36c48287c2
Author: Justin Burkett <justin@burkett.cc>
Commit: Justin Burkett <justin@burkett.cc>

    Fixup vdiff--transmit-change for 3way diffs
---
 vdiff.el | 44 +++++++++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 19 deletions(-)

diff --git a/vdiff.el b/vdiff.el
index ec493a9..9ba59c0 100644
--- a/vdiff.el
+++ b/vdiff.el
@@ -1421,33 +1421,39 @@ immediately preceding line."
       (message "No change found")
     (let* ((target-ovrs (or targets (vdiff--target-overlays ovr)))
            (beg (vdiff--maybe-beginning-of-line beg))
+           (beg-line (when beg (line-number-at-pos beg)))
            (end (vdiff--maybe-end-of-line end))
+           (end-line (when end (line-number-at-pos end)))
+           (from-buffer (vdiff--buffer-p))
            (text (buffer-substring-no-properties
                   (if beg
                       (max beg (overlay-start ovr))
                     (overlay-start ovr))
                   (if end
-                         (min end (overlay-end ovr))
-                       (overlay-end ovr))))
-           (target-beg-line
-            (when beg
-              (caar (vdiff--translate-line (line-number-at-pos beg)))))
-           (target-end-line
-            (when end
-              (caar (vdiff--translate-line (line-number-at-pos end))))))
+                      (min end (overlay-end ovr))
+                    (overlay-end ovr)))))
       (dolist (target target-ovrs)
         (with-current-buffer (overlay-buffer target)
-          (save-excursion
-            (if target-beg-line
-                (vdiff--move-to-line target-beg-line)
-              (goto-char (overlay-start target)))
-            (delete-region (point)
-                           (save-excursion
-                             (if target-end-line
-                                 (vdiff--move-to-line target-end-line)
-                               (goto-char (overlay-end target)))
-                             (point)))
-            (insert text))
+          (let* ((target-buffer (vdiff--buffer-p))
+                 (target-beg-line
+                  (when beg-line
+                    (car (vdiff--translate-line
+                          beg-line from-buffer target-buffer))))
+                 (target-end-line
+                  (when end-line
+                    (car (vdiff--translate-line
+                          end-line from-buffer target-buffer)))))
+            (save-excursion
+              (if target-beg-line
+                  (vdiff--move-to-line target-beg-line)
+                (goto-char (overlay-start target)))
+              (delete-region (point)
+                             (save-excursion
+                               (if target-end-line
+                                   (vdiff--move-to-line target-end-line)
+                                 (goto-char (overlay-end target)))
+                               (point)))
+              (insert text)))
           (delete-overlay target)))
       (delete-overlay ovr))))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]