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

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

[elpa] master c806fe2 36/57: Allow selective sending in change hunks


From: Justin Burkett
Subject: [elpa] master c806fe2 36/57: Allow selective sending in change hunks
Date: Tue, 3 Nov 2020 14:32:23 -0500 (EST)

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

    Allow selective sending in change hunks
---
 vdiff.el | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/vdiff.el b/vdiff.el
index 7cb38d1..07bdc69 100644
--- a/vdiff.el
+++ b/vdiff.el
@@ -1403,15 +1403,33 @@ immediately preceding line."
   (if (not (overlayp ovr))
       (message "No change found")
     (let* ((target-ovrs (or targets (vdiff--target-overlays ovr)))
-           (beg (overlay-start ovr))
-           (end (overlay-end ovr))
-           (text (buffer-substring-no-properties beg end)))
+           (beg (and (numberp beg) beg))
+           (end (and (numberp end) end))
+           (this-beg (if beg
+                         (max beg (overlay-start ovr))
+                       (overlay-start ovr)))
+           (this-end (if end
+                         (min end (overlay-end ovr))
+                       (overlay-end ovr)))
+           (text (buffer-substring-no-properties this-beg this-end))
+           (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))))))
       (dolist (target target-ovrs)
         (with-current-buffer (overlay-buffer target)
           (save-excursion
-            (goto-char (overlay-start target))
-            (delete-region (overlay-start target)
-                           (overlay-end target))
+            (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]