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

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

[nongnu] elpa/subed a9a6835 154/389: Ensure subtitle length stays the sa


From: ELPA Syncer
Subject: [nongnu] elpa/subed a9a6835 154/389: Ensure subtitle length stays the same when moving
Date: Fri, 3 Dec 2021 11:00:16 -0500 (EST)

branch: elpa/subed
commit a9a6835ef62f70a42609d6663568ee18698c5f38
Author: Random User <rndusr@posteo.de>
Commit: Random User <rndusr@posteo.de>

    Ensure subtitle length stays the same when moving
---
 subed/subed.el      | 11 +++++++++--
 tests/test-subed.el | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+), 2 deletions(-)

diff --git a/subed/subed.el b/subed/subed.el
index 723ee8b..0e5cc7e 100644
--- a/subed/subed.el
+++ b/subed/subed.el
@@ -234,8 +234,15 @@ After subtitles are moved is done, replay the first moved
 subtitle if replaying is enabled."
   (subed--with-subtitle-replay-disabled
     (subed--for-each-subtitle beg end
-      (subed--adjust-subtitle-start msecs)
-      (subed--adjust-subtitle-stop msecs)))
+      (if (> msecs 0)
+          ;; Moving subtitles forward may reduce MSECS if there isn't enough
+          ;; room for the full movement.  Using the MSECS the stop time was
+          ;; moved to move the start time ensures that subtitle length doesn't
+          ;; change.
+          (let ((msecs (subed--adjust-subtitle-stop msecs)))
+            (when msecs (subed--adjust-subtitle-start msecs)))
+        (let ((msecs (subed--adjust-subtitle-start msecs)))
+          (when msecs (subed--adjust-subtitle-stop msecs))))))
   (when (subed-replay-adjusted-subtitle-p)
     (save-excursion
       (when beg (goto-char beg))
diff --git a/tests/test-subed.el b/tests/test-subed.el
index ba83edc..885bb8f 100644
--- a/tests/test-subed.el
+++ b/tests/test-subed.el
@@ -94,6 +94,58 @@
                            (subed-move-subtitle-backward 100)
                            (expect (subed--subtitle-msecs-start) :to-equal 
orig-start)
                            (expect (subed--subtitle-msecs-stop) :to-equal 
orig-stop)))))
+          (it "adjusts start and stop time by the same amount when adding 
fails."
+              (with-temp-buffer
+                (insert (concat "1\n"
+                                "00:00:01,000 --> 00:00:01,600\n"
+                                "Foo.\n\n"
+                                "2\n"
+                                "00:00:02,000 --> 00:00:03,000\n"
+                                "Bar.\n"))
+                (subed-jump-to-subtitle-id 1)
+                (subed-move-subtitle-forward 1000)
+                (expect (subed--subtitle-msecs-start) :to-equal 1300)
+                (expect (subed--subtitle-msecs-stop) :to-equal 1900)))
+          (it "adjusts start and stop time by the same amount when subtracting 
fails."
+              (with-temp-buffer
+                (insert (concat "1\n"
+                                "00:00:01,000 --> 00:00:01,600\n"
+                                "Foo.\n\n"
+                                "2\n"
+                                "00:00:02,000 --> 00:00:03,000\n"
+                                "Bar.\n"))
+                (subed-jump-to-subtitle-id 2)
+                (subed-move-subtitle-backward 1000)
+                (expect (subed--subtitle-msecs-start) :to-equal 1700)
+                (expect (subed--subtitle-msecs-stop) :to-equal 2700)))
+          (it "does not adjust start time if adjusting stop time fails."
+              (with-temp-buffer
+                (insert (concat "1\n"
+                                "00:00:01,000 --> 00:00:02,000\n"
+                                "Foo.\n\n"
+                                "2\n"
+                                "00:00:02,000 --> 00:00:03,000\n"
+                                "Bar.\n"))
+                (subed-jump-to-subtitle-id 1)
+                (expect (subed-move-subtitle-forward 1) :to-be nil)
+                (expect (subed--subtitle-msecs-start 1) :to-equal 1000)
+                (expect (subed--subtitle-msecs-stop 1) :to-equal 2000)
+                (expect (subed--subtitle-msecs-start 2) :to-equal 2000)
+                (expect (subed--subtitle-msecs-stop 2) :to-equal 3000)))
+          (it "does not adjust stop time if adjusting start time fails."
+              (with-temp-buffer
+                (insert (concat "1\n"
+                                "00:00:01,000 --> 00:00:02,000\n"
+                                "Foo.\n\n"
+                                "2\n"
+                                "00:00:02,000 --> 00:00:03,000\n"
+                                "Bar.\n"))
+                (subed-jump-to-subtitle-id 2)
+                (expect (subed-move-subtitle-backward 1) :to-be nil)
+                (expect (subed--subtitle-msecs-start 1) :to-equal 1000)
+                (expect (subed--subtitle-msecs-stop 1) :to-equal 2000)
+                (expect (subed--subtitle-msecs-start 2) :to-equal 2000)
+                (expect (subed--subtitle-msecs-stop 2) :to-equal 3000)))
           (describe "adjusts subtitles in the active region,"
                     (it "excluding the first subtitle."
                         (with-temp-buffer



reply via email to

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