branch: elpa/subed commit 84935a7b95e8662c935fa2686f425dccab882d8f Author: Random User <rnd...@posteo.de> Commit: Random User <rnd...@posteo.de>
Make sure adjusting forward/backward never subtracts/adds --- subed/subed-srt.el | 10 ++++++++-- tests/test-subed-srt.el | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/subed/subed-srt.el b/subed/subed-srt.el index f4552ba..1a703df 100644 --- a/subed/subed-srt.el +++ b/subed/subed-srt.el @@ -312,7 +312,10 @@ Return new start time in milliseconds or nil if it didn't change." (setq msecs-new msecs-min)) (when (> msecs-new msecs-max) (setq msecs-new msecs-max)) - (unless (eq msecs-new msecs-start) + ;; msecs-new must be bigger than the current start time if we are adding + ;; or smaller if we are subtracting. + (when (or (and (> msecs 0) (> msecs-new msecs-start)) ;; Adding + (and (< msecs 0) (< msecs-new msecs-start))) ;; Subtracting (save-excursion (subed-srt-jump-to-subtitle-time-start) (when (looking-at subed-srt--regexp-timestamp) @@ -336,7 +339,10 @@ Return new stop time in milliseconds or nil if it didn't change." (setq msecs-new msecs-min)) (when (and msecs-max (> msecs-new msecs-max)) (setq msecs-new msecs-max)) - (unless (eq msecs-new msecs-stop) + ;; msecs-new must be bigger than the current stop time if we are adding or + ;; smaller if we are subtracting. + (when (or (and (> msecs 0) (> msecs-new msecs-stop)) ;; Adding + (and (< msecs 0) (< msecs-new msecs-stop))) ;; Subtracting (save-excursion (subed-srt-jump-to-subtitle-time-stop) (when (looking-at subed-srt--regexp-timestamp) diff --git a/tests/test-subed-srt.el b/tests/test-subed-srt.el index 90e68c1..2433f08 100644 --- a/tests/test-subed-srt.el +++ b/tests/test-subed-srt.el @@ -783,6 +783,28 @@ Baz. (expect (subed-srt--subtitle-msecs-stop 2) :to-be (- (subed-srt--subtitle-msecs-start 3) subed-subtitle-spacing)))) ) + (it "without undershooting the target time." + (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-increase-stop-time 1) :to-be nil) + (expect (subed--subtitle-msecs-stop) :to-equal 2000))) + (it "without overshooting the target time." + (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-decrease-start-time 1) :to-be nil) + (expect (subed--subtitle-msecs-start) :to-equal 2000))) ) (it "does nothing if no timestamp can be found." (with-temp-buffer