[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/subed 800d4b3 150/389: Return new start/stop time when adj
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/subed 800d4b3 150/389: Return new start/stop time when adjusting |
Date: |
Fri, 3 Dec 2021 11:00:15 -0500 (EST) |
branch: elpa/subed
commit 800d4b3858429ae1399239ca140263073b1781b1
Author: Random User <rndusr@posteo.de>
Commit: Random User <rndusr@posteo.de>
Return new start/stop time when adjusting
---
subed/subed-srt.el | 30 +++++++-----
subed/subed.el | 5 ++
tests/test-subed-srt.el | 123 ++++++++++++++++++++++++++----------------------
3 files changed, 91 insertions(+), 67 deletions(-)
diff --git a/subed/subed-srt.el b/subed/subed-srt.el
index dfa837e..37e1715 100644
--- a/subed/subed-srt.el
+++ b/subed/subed-srt.el
@@ -297,7 +297,8 @@ Return point or nil if there is no previous subtitle."
;;; Manipulation
(defun subed-srt--adjust-subtitle-start-relative (msecs)
- "Add MSECS milliseconds to start time (use negative value to subtract)."
+ "Add MSECS milliseconds to start time (use negative value to subtract).
+Return new start time in milliseconds or nil if it didn't change."
(subed-disable-sync-point-to-player-temporarily)
(let* ((msecs-start (subed-srt--subtitle-msecs-start))
(msecs-new (when msecs-start (+ msecs-start msecs)))
@@ -311,14 +312,17 @@ Return point or nil if there is no previous subtitle."
(setq msecs-new msecs-min))
(when (> msecs-new msecs-max)
(setq msecs-new msecs-max))
- (save-excursion
- (subed-srt-jump-to-subtitle-time-start)
- (when (looking-at subed-srt--regexp-timestamp)
- (replace-match (subed-srt--msecs-to-timestamp msecs-new))))
- (subed--run-subtitle-time-adjusted-hook))))
+ (unless (eq msecs-new msecs-start)
+ (save-excursion
+ (subed-srt-jump-to-subtitle-time-start)
+ (when (looking-at subed-srt--regexp-timestamp)
+ (replace-match (subed-srt--msecs-to-timestamp msecs-new))
+ (subed--run-subtitle-time-adjusted-hook)
+ msecs-new))))))
(defun subed-srt--adjust-subtitle-stop-relative (msecs)
- "Add MSECS milliseconds to stop time (use negative value to subtract)."
+ "Add MSECS milliseconds to stop time (use negative value to subtract).
+Return new stop time in milliseconds or nil if it didn't change."
(subed-disable-sync-point-to-player-temporarily)
(let* ((msecs-stop (subed-srt--subtitle-msecs-stop))
(msecs-new (when msecs-stop (+ msecs-stop msecs)))
@@ -332,11 +336,13 @@ Return point or nil if there is no previous subtitle."
(setq msecs-new msecs-min))
(when (and msecs-max (> msecs-new msecs-max))
(setq msecs-new msecs-max))
- (save-excursion
- (subed-srt-jump-to-subtitle-time-stop)
- (when (looking-at subed-srt--regexp-timestamp)
- (replace-match (subed-srt--msecs-to-timestamp msecs-new))))
- (subed--run-subtitle-time-adjusted-hook))))
+ (unless (eq msecs-new msecs-stop)
+ (save-excursion
+ (subed-srt-jump-to-subtitle-time-stop)
+ (when (looking-at subed-srt--regexp-timestamp)
+ (replace-match (subed-srt--msecs-to-timestamp msecs-new))
+ (subed--run-subtitle-time-adjusted-hook)
+ msecs-new))))))
(defun subed-srt-subtitle-insert (&optional arg)
"Insert subtitle(s).
diff --git a/subed/subed.el b/subed/subed.el
index 07bc00a..29573c1 100644
--- a/subed/subed.el
+++ b/subed/subed.el
@@ -180,6 +180,8 @@ Before BODY is run, point is placed on the subtitle's ID."
"Add `subed-milliseconds-adjust' milliseconds to start time of
current subtitle.
+Return new start time in milliseconds or nil if it didn't change.
+
If a prefix argument is given, it is used to set
`subed-milliseconds-adjust' before moving subtitles. If the
prefix argument is given but not numerical,
@@ -198,6 +200,7 @@ Example usage:
(defun subed-decrease-start-time (&optional arg)
"Subtract `subed-milliseconds-adjust' milliseconds from start
time of current subtitle.
+Return new start time in milliseconds or nil if it didn't change.
See also `subed-increase-start-time'."
(interactive "P")
(subed--adjust-subtitle-start-relative (* -1 (subed--get-milliseconds-adjust
arg))))
@@ -205,6 +208,7 @@ See also `subed-increase-start-time'."
(defun subed-increase-stop-time (&optional arg)
"Add `subed-milliseconds-adjust' milliseconds to stop time of
current subtitle.
+Return new stop time in milliseconds or nil if it didn't change.
See also `subed-increase-start-time'."
(interactive "P")
(subed--adjust-subtitle-stop-relative (subed--get-milliseconds-adjust arg)))
@@ -212,6 +216,7 @@ See also `subed-increase-start-time'."
(defun subed-decrease-stop-time (&optional arg)
"Subtract `subed-milliseconds-adjust' milliseconds from stop
time of current subtitle.
+Return new stop time in milliseconds or nil if it didn't change.
See also `subed-increase-start-time'."
(interactive "P")
(subed--adjust-subtitle-stop-relative (* -1 (subed--get-milliseconds-adjust
arg))))
diff --git a/tests/test-subed-srt.el b/tests/test-subed-srt.el
index 3b4004f..90e68c1 100644
--- a/tests/test-subed-srt.el
+++ b/tests/test-subed-srt.el
@@ -611,71 +611,71 @@ Baz.
(add-hook 'subed-subtitle-time-adjusted-hook 'foo)
(with-temp-buffer
(insert mock-srt-data)
- (subed-increase-start-time)
+ (expect (subed-increase-start-time) :to-equal 183550)
(expect 'foo :to-have-been-called-with 3 183550)
(expect 'foo :to-have-been-called-times 1)
(subed-srt-jump-to-subtitle-id 1)
- (subed-increase-stop-time)
+ (expect (subed-increase-stop-time) :to-equal 65223)
(expect 'foo :to-have-been-called-with 1 61000)
(expect 'foo :to-have-been-called-times 2)
(subed-srt-jump-to-subtitle-end 2)
- (subed-decrease-start-time)
+ (expect (subed-decrease-start-time) :to-equal 122134)
(expect 'foo :to-have-been-called-with 2 122134)
(expect 'foo :to-have-been-called-times 3)
(subed-srt-jump-to-subtitle-text 3)
- (subed-decrease-stop-time 100)
+ (expect (subed-decrease-stop-time) :to-equal 195400)
(expect 'foo :to-have-been-called-with 3 183550)
(expect 'foo :to-have-been-called-times 4))))
(it "adjusts the start/stop time."
(with-temp-buffer
(insert mock-srt-data)
(subed-srt-jump-to-subtitle-id 1)
- (subed-increase-start-time)
+ (expect (subed-increase-start-time) :to-equal 61100)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-start)
(thing-at-point 'line)) :to-equal
"00:01:01,100 --> 00:01:05,123\n")
- (subed-decrease-start-time)
- (subed-decrease-start-time)
+ (expect (subed-decrease-start-time) :to-equal 61000)
+ (expect (subed-decrease-start-time) :to-equal 60900)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-start)
(thing-at-point 'line)) :to-equal
"00:01:00,900 --> 00:01:05,123\n")
- (subed-increase-stop-time)
- (subed-increase-stop-time)
+ (expect (subed-increase-stop-time) :to-equal 65223)
+ (expect (subed-increase-stop-time) :to-equal 65323)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-start)
(thing-at-point 'line)) :to-equal
"00:01:00,900 --> 00:01:05,323\n")
- (subed-decrease-stop-time)
+ (expect (subed-decrease-stop-time) :to-equal 65223)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-start)
(thing-at-point 'line)) :to-equal
"00:01:00,900 --> 00:01:05,223\n")))
(it "adjusts the start/stop time if milliseconds lack digits."
(with-temp-buffer
(insert mock-srt-data)
(subed-srt-jump-to-subtitle-id 3)
- (subed-increase-start-time 200)
- (subed-decrease-start-time 100)
+ (expect (subed-increase-start-time 200) :to-equal 183650)
+ (expect (subed-decrease-start-time 100) :to-equal 183550)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-start)
(thing-at-point 'line)) :to-equal
"00:03:03,550 --> 00:03:15,5\n")
- (subed-increase-stop-time 100)
- (subed-decrease-stop-time 200)
+ (expect (subed-increase-stop-time 100) :to-equal 195600)
+ (expect (subed-decrease-stop-time 200) :to-equal 195400)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-stop)
(thing-at-point 'line)) :to-equal
"00:03:03,550 --> 00:03:15,400\n")))
(it "sets the number of seconds if given an argument."
(with-temp-buffer
(insert mock-srt-data)
(subed-srt-jump-to-subtitle-id 1)
- (subed-increase-start-time 200)
- (subed-increase-start-time)
- (subed-increase-start-time)
+ (expect (subed-increase-start-time 200) :to-equal 61200)
+ (expect (subed-increase-start-time) :to-equal 61400)
+ (expect (subed-increase-start-time) :to-equal 61600)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-start)
(thing-at-point 'line)) :to-equal
"00:01:01,600 --> 00:01:05,123\n")
- (subed-decrease-start-time 50)
- (subed-decrease-start-time)
+ (expect (subed-decrease-start-time 50) :to-be 61550)
+ (expect (subed-decrease-start-time) :to-be 61500)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-start)
(thing-at-point 'line)) :to-equal
"00:01:01,500 --> 00:01:05,123\n")
- (subed-decrease-stop-time 1000)
- (subed-decrease-stop-time)
- (subed-decrease-stop-time)
+ (expect (subed-decrease-stop-time 1000) :to-be 64123)
+ (expect (subed-decrease-stop-time) :to-be 63123)
+ (expect (subed-decrease-stop-time) :to-be 62123)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-start)
(thing-at-point 'line)) :to-equal
"00:01:01,500 --> 00:01:02,123\n")
- (subed-increase-stop-time 2000)
- (subed-increase-stop-time)
+ (expect (subed-increase-stop-time 2000) :to-be 64123)
+ (expect (subed-increase-stop-time) :to-be 66123)
(expect (save-excursion (subed-srt-jump-to-subtitle-time-start)
(thing-at-point 'line)) :to-equal
"00:01:01,500 --> 00:01:06,123\n")))
(describe "enforces limits"
@@ -684,27 +684,30 @@ Baz.
(with-temp-buffer
(insert mock-srt-data)
(subed-srt-jump-to-subtitle-id 1)
- (subed-decrease-start-time 60999)
+ (expect (subed-decrease-start-time 60999)
:to-be 1)
(expect (subed-srt--subtitle-msecs-start)
:to-be 1)
- (subed-decrease-start-time 1)
+ (expect (subed-decrease-start-time 1)
:to-be 0)
(expect (subed-srt--subtitle-msecs-start)
:to-be 0)
- (subed-decrease-start-time 1)
+ (expect (subed-decrease-start-time 1)
:to-be nil)
(expect (subed-srt--subtitle-msecs-start)
:to-be 0)))
(it "of a non-first subtitle."
(with-temp-buffer
(insert mock-srt-data)
(subed-srt-jump-to-subtitle-id 2)
- (subed-decrease-start-time (-
(subed-srt--subtitle-msecs-start 2)
-
(subed-srt--subtitle-msecs-stop 1)
-
subed-subtitle-spacing
- 1))
+ (expect (subed-decrease-start-time (-
(subed-srt--subtitle-msecs-start 2)
+
(subed-srt--subtitle-msecs-stop 1)
+
subed-subtitle-spacing
+ 1))
:to-be (+ (subed-srt--subtitle-msecs-stop 1)
+
subed-subtitle-spacing
+
1))
(expect (subed-srt--subtitle-msecs-start)
:to-be (+ (subed-srt--subtitle-msecs-stop 1)
subed-subtitle-spacing
1))
- (subed-decrease-start-time 1)
+ (expect (subed-decrease-start-time 1)
:to-be (+ (subed-srt--subtitle-msecs-stop 1)
+
subed-subtitle-spacing))
(expect (subed-srt--subtitle-msecs-start)
:to-be (+ (subed-srt--subtitle-msecs-stop 1)
subed-subtitle-spacing))
- (subed-decrease-start-time 1)
+ (expect (subed-decrease-start-time 1)
:to-be nil)
(expect (subed-srt--subtitle-msecs-start)
:to-be (+ (subed-srt--subtitle-msecs-stop 1)
subed-subtitle-spacing))))
)
@@ -712,21 +715,21 @@ Baz.
(with-temp-buffer
(insert mock-srt-data)
(subed-srt-jump-to-subtitle-id 2)
- (subed-increase-start-time (-
(subed-srt--subtitle-msecs-stop 2)
-
(subed-srt--subtitle-msecs-start 2)
- 1))
+ (expect (subed-increase-start-time (-
(subed-srt--subtitle-msecs-stop 2)
+
(subed-srt--subtitle-msecs-start 2)
+ 1)) :to-be (-
(subed-srt--subtitle-msecs-stop 2) 1))
(expect (subed-srt--subtitle-msecs-start 2) :to-be
(- (subed-srt--subtitle-msecs-stop 2) 1))
- (subed-increase-start-time 1)
+ (expect (subed-increase-start-time 1) :to-be
(subed-srt--subtitle-msecs-stop 2))
(expect (subed-srt--subtitle-msecs-start 2) :to-be
(subed-srt--subtitle-msecs-stop 2))
- (subed-increase-start-time 1)
+ (expect (subed-increase-start-time 1) :to-be nil)
(expect (subed-srt--subtitle-msecs-start 2) :to-be
(subed-srt--subtitle-msecs-stop 2))))
(it "when decreasing stop time."
(with-temp-buffer
(insert mock-srt-data)
(subed-srt-jump-to-subtitle-id 2)
(subed-decrease-stop-time (-
(subed-srt--subtitle-msecs-stop 2)
-
(subed-srt--subtitle-msecs-start 2)
- 1))
+
(subed-srt--subtitle-msecs-start 2)
+ 1))
(expect (subed-srt--subtitle-msecs-stop 2) :to-be (+
(subed-srt--subtitle-msecs-start 2) 1))
(subed-decrease-stop-time 1)
(expect (subed-srt--subtitle-msecs-stop 2) :to-be
(subed-srt--subtitle-msecs-start 2))
@@ -737,17 +740,24 @@ Baz.
(with-temp-buffer
(insert mock-srt-data)
(subed-srt-jump-to-subtitle-id 3)
- (subed-increase-stop-time (- (* 99 3600000)
-
(subed-srt--subtitle-msecs-stop 3)))
+ (expect (subed-increase-stop-time (- (* 99
3600000)
+
(subed-srt--subtitle-msecs-stop 3)))
+ :to-be (* 99 3600000))
(expect (subed-srt--subtitle-msecs-stop 3)
:to-be (* 99 3600000))
- (subed-increase-stop-time (* 59 60000))
+ (expect (subed-increase-stop-time (* 59
60000)) :to-be (+ (* 99 3600000)
+
(* 59 60000)))
(expect (subed-srt--subtitle-msecs-stop 3)
:to-be (+ (* 99 3600000)
(* 59 60000)))
- (subed-increase-stop-time (* 59 1000))
+ (expect (subed-increase-stop-time (* 59
1000)) :to-be (+ (* 99 3600000)
+
(* 59 60000)
+
(* 59 1000)))
(expect (subed-srt--subtitle-msecs-stop 3)
:to-be (+ (* 99 3600000)
(* 59 60000)
(* 59 1000)))
- (subed-increase-stop-time 999)
+ (expect (subed-increase-stop-time 999)
:to-be (+ (* 99 3600000)
+
(* 59 60000)
+
(* 59 1000)
+
999))
(expect (subed-srt--subtitle-msecs-stop 3)
:to-be (+ (* 99 3600000)
(* 59 60000)
(* 59 1000)
@@ -756,17 +766,20 @@ Baz.
(with-temp-buffer
(insert mock-srt-data)
(subed-srt-jump-to-subtitle-id 2)
- (subed-increase-stop-time (-
(subed-srt--subtitle-msecs-start 3)
-
(subed-srt--subtitle-msecs-stop 2)
-
subed-subtitle-spacing
- 1))
+ (expect (subed-increase-stop-time (-
(subed-srt--subtitle-msecs-start 3)
+
(subed-srt--subtitle-msecs-stop 2)
+
subed-subtitle-spacing
+ 1))
:to-be (- (subed-srt--subtitle-msecs-start 3)
+
subed-subtitle-spacing
+
1))
(expect (subed-srt--subtitle-msecs-stop 2)
:to-be (- (subed-srt--subtitle-msecs-start 3)
subed-subtitle-spacing
1))
- (subed-increase-stop-time 1)
+ (expect (subed-increase-stop-time 1)
:to-be (- (subed-srt--subtitle-msecs-start 3)
+
subed-subtitle-spacing))
(expect (subed-srt--subtitle-msecs-stop 2)
:to-be (- (subed-srt--subtitle-msecs-start 3)
subed-subtitle-spacing))
- (subed-increase-stop-time 1)
+ (expect (subed-increase-stop-time 1)
:to-be nil)
(expect (subed-srt--subtitle-msecs-stop 2)
:to-be (- (subed-srt--subtitle-msecs-start 3)
subed-subtitle-spacing))))
)
@@ -775,13 +788,13 @@ Baz.
(with-temp-buffer
(insert "foo")
(goto-char (point-min))
- (subed-increase-start-time)
+ (expect (subed-increase-start-time) :to-be nil)
(expect (buffer-string) :to-equal "foo")
- (subed-decrease-start-time)
+ (expect (subed-decrease-start-time) :to-be nil)
(expect (buffer-string) :to-equal "foo")
- (subed-increase-stop-time)
+ (expect (subed-increase-stop-time) :to-be nil)
(expect (buffer-string) :to-equal "foo")
- (subed-decrease-stop-time)
+ (expect (subed-decrease-stop-time) :to-be nil)
(expect (buffer-string) :to-equal "foo")))
)
- [nongnu] elpa/subed 3aa9a71 131/389: Pause player by default when editing subtitle text, (continued)
- [nongnu] elpa/subed 3aa9a71 131/389: Pause player by default when editing subtitle text, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed d85f988 136/389: Add keybindings for subed-shift-subtitle-forward/backward, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 5b90306 140/389: Round mpv's playback position to prevent float weirdness (n.99999...), ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 0f3add7 141/389: Temporarily disable point-to-player syncing when adjusting time, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 3081983 144/389: Add commentary section to header, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed c069e23 145/389: subed is named "subed", ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 522017e 146/389: Add packaging information to header, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 3bc609d 147/389: Make run-subtitle-time-adjusted-hook not srt specific, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed f3fe9d8 148/389: Make increase/decrease-start/stop-time not srt specific, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 53bad4a 149/389: Explain what moving does in general in comment, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 800d4b3 150/389: Return new start/stop time when adjusting,
ELPA Syncer <=
- [nongnu] elpa/subed 6122de0 151/389: Rename adjust-subtitle-start/stop-relative to adjust-subtitle-start/stop, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 06a4681 153/389: Adjusting functions return milliseconds moved, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed c7d3fcb 156/389: Add autoloading, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 20c70e8 160/389: Make more functions public, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed af2004c 172/389: subed-mode-enable: Add autoload cookie, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed a5d750d 162/389: Inser empty line after section header comment, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed e22f4b7 157/389: Make subed-srt-* functions private, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 3af0bb2 169/389: subed-guess-video-file: Don't croak if buffer-file-name returns nil, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed e195756 179/389: Rewrite adjusting tests, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 3e818aa 173/389: Remove useless (progn ...) in (if ...), ELPA Syncer, 2021/12/03