branch: master
commit fe10fb38cda249006219b40eb8a16f1111b592db
Author: Justin Burkett <jus...@burkett.cc>
Commit: Justin Burkett <jus...@burkett.cc>

    Cleanup some of the transmit addition/changes logic
---
 vdiff.el | 58 ++++++++++++++++++++++++----------------------------------
 1 file changed, 24 insertions(+), 34 deletions(-)

diff --git a/vdiff.el b/vdiff.el
index 7a01aec..2c6085d 100644
--- a/vdiff.el
+++ b/vdiff.el
@@ -1378,35 +1378,30 @@ immediately preceding line."
   (call-interactively 'vdiff-receive-changes)
   (call-interactively 'vdiff-next-hunk))
 
-(defun vdiff--maybe-beginning-of-line (beg)
-  (when (number-or-marker-p beg)
-    (save-excursion
-      (goto-char beg)
-      (line-beginning-position))))
-
-(defun vdiff--maybe-end-of-line (end)
-  (when (number-or-marker-p end)
-    (save-excursion
-      (goto-char end)
-      (unless (= (char-before) ?\n)
-        (forward-line))
-      (point))))
+(defun vdiff--maybe-beginning-of-line (beg min)
+  (let ((beg (when (number-or-marker-p beg)
+               (save-excursion
+                 (goto-char beg)
+                 (line-beginning-position)))))
+    (if (and beg (> beg min)) beg min)))
+
+(defun vdiff--maybe-end-of-line (end max)
+  (let ((end (when (number-or-marker-p end)
+               (save-excursion
+                 (goto-char end)
+                 (unless (= (char-before) ?\n)
+                   (forward-line))
+                 (point)))))
+    (if (and end (< end max)) end max)))
 
 (defun vdiff--transmit-addition (ovr &optional targets beg end)
   "Send text in OVR to corresponding overlay in other buffer."
   (if (not (overlayp ovr))
       (message "No change found")
     (let* ((target-ovrs (or targets (vdiff--target-overlays ovr)))
-           ;; Expand to full line
-           (beg (vdiff--maybe-beginning-of-line beg))
-           (end (vdiff--maybe-end-of-line end))
-           (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)))))
+           (beg (vdiff--maybe-beginning-of-line beg (overlay-start ovr)))
+           (end (vdiff--maybe-end-of-line end (overlay-end ovr)))
+           (text (buffer-substring-no-properties beg end)))
       (dolist (target target-ovrs)
         (with-current-buffer (overlay-buffer target)
           (save-excursion
@@ -1420,18 +1415,13 @@ immediately preceding line."
   (if (not (overlayp ovr))
       (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)))
+           (region (not (null beg)))
+           (beg (vdiff--maybe-beginning-of-line beg (overlay-start ovr)))
+           (beg-line (when region (line-number-at-pos beg)))
+           (end (vdiff--maybe-end-of-line end (overlay-end ovr)))
+           (end-line (when region (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)))))
+           (text (buffer-substring-no-properties beg end)))
       (dolist (target target-ovrs)
         (with-current-buffer (overlay-buffer target)
           (let* ((target-buffer (vdiff--buffer-p))

Reply via email to