[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/subed 0e6ba37 180/389: Add option to ignore subtitle spaci
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/subed 0e6ba37 180/389: Add option to ignore subtitle spacing when adjusting start/stop time |
Date: |
Fri, 3 Dec 2021 11:00:21 -0500 (EST) |
branch: elpa/subed
commit 0e6ba377b4c15d76f1a7c127264e9f2a8a15dbdc
Author: Random User <rndusr@posteo.de>
Commit: Random User <rndusr@posteo.de>
Add option to ignore subtitle spacing when adjusting start/stop time
---
subed/subed-srt.el | 24 ++++++++++++++----------
tests/test-subed-srt.el | 32 ++++++++++++++++++++++++++++++++
2 files changed, 46 insertions(+), 10 deletions(-)
diff --git a/subed/subed-srt.el b/subed/subed-srt.el
index b1052d2..c87772d 100644
--- a/subed/subed-srt.el
+++ b/subed/subed-srt.el
@@ -315,12 +315,13 @@ Return point or nil if there is no previous subtitle."
;;; Manipulation
-(defun subed-srt--adjust-subtitle-start (msecs)
+(defun subed-srt--adjust-subtitle-start (msecs &optional ignore-spacing)
"Add MSECS milliseconds to start time (use negative value to subtract).
If the adjustment would result in overlapping subtitles, reduce
MSECS so that there are at least `subed-subtitle-spacing'
-milliseconds between subtitles.
+milliseconds between subtitles. If IGNORE-SPACING is non-nil
+this limitation is disabled.
Return the number of milliseconds the start time was adjusted or
nil if nothing was adjusted."
@@ -330,12 +331,12 @@ nil if nothing was adjusted."
(msecs-prev (save-excursion
(when (subed-srt--backward-subtitle-id)
(subed-srt--subtitle-msecs-stop))))
- (msecs-min (if msecs-prev (+ msecs-prev subed-subtitle-spacing) 0))
- (msecs-max (subed-srt--subtitle-msecs-stop)))
+ (msecs-min (if ignore-spacing nil (if msecs-prev (+ msecs-prev
subed-subtitle-spacing) 0)))
+ (msecs-max (if ignore-spacing nil (subed-srt--subtitle-msecs-stop))))
(when msecs-new
(when (and msecs-min (< msecs-new msecs-min))
(setq msecs-new msecs-min))
- (when (> msecs-new msecs-max)
+ (when (and msecs-max (> msecs-new msecs-max))
(setq msecs-new msecs-max))
;; msecs-new must be bigger than the current start time if we are adding
;; or smaller if we are subtracting.
@@ -348,12 +349,13 @@ nil if nothing was adjusted."
(subed--run-subtitle-time-adjusted-hook)
(- msecs-new msecs-start)))))))
-(defun subed-srt--adjust-subtitle-stop (msecs)
+(defun subed-srt--adjust-subtitle-stop (msecs &optional ignore-spacing)
"Add MSECS milliseconds to stop time (use negative value to subtract).
If the adjustment would result in overlapping subtitles, reduce
MSECS so that there are at least `subed-subtitle-spacing'
-milliseconds between subtitles.
+milliseconds between subtitles. If IGNORE-SPACING is non-nil
+this limitation is disabled.
Return the number of milliseconds the stop time was adjusted or
nil if nothing was adjusted."
@@ -363,10 +365,12 @@ nil if nothing was adjusted."
(msecs-next (save-excursion
(when (subed-srt--forward-subtitle-id)
(subed-srt--subtitle-msecs-start))))
- (msecs-min (subed-srt--subtitle-msecs-start))
- (msecs-max (when msecs-next (- msecs-next subed-subtitle-spacing))))
+ (msecs-min (if ignore-spacing nil (subed-srt--subtitle-msecs-start)))
+ (msecs-max (if ignore-spacing nil (when msecs-next
+ (- msecs-next
subed-subtitle-spacing)))))
+ (message "min:%S max:%S" msecs-min msecs-max)
(when msecs-new
- (when (< msecs-new msecs-min)
+ (when (and msecs-min (< msecs-new msecs-min))
(setq msecs-new msecs-min))
(when (and msecs-max (> msecs-new msecs-max))
(setq msecs-new msecs-max))
diff --git a/tests/test-subed-srt.el b/tests/test-subed-srt.el
index 1d13f02..08106d8 100644
--- a/tests/test-subed-srt.el
+++ b/tests/test-subed-srt.el
@@ -655,6 +655,38 @@ Baz.
(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")))
(describe "enforces limits"
+ (describe "unless the second argument is truthy"
+ (it "when adjusting start 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,100 -->
00:00:03,000\n"
+ "Bar.\n"))
+ (subed-srt--jump-to-subtitle-id 2)
+ (expect (subed-srt--adjust-subtitle-start
-100 :ignore-spacing) :to-be -100)
+ (expect (subed-srt--subtitle-msecs-start
2) :to-be 2000)
+ (expect (subed-srt--subtitle-msecs-stop 1)
:to-be 2000)
+ (expect (subed-srt--adjust-subtitle-start
-200 :ignore-spacing) :to-be -200)
+ (expect (subed-srt--subtitle-msecs-start
2) :to-be 1800)
+ (expect (subed-srt--subtitle-msecs-stop 1)
:to-be 2000)))
+ (it "when adjusting stop 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,100 -->
00:00:03,000\n"
+ "Bar.\n"))
+ (subed-srt--jump-to-subtitle-id 1)
+ (expect (subed-srt--adjust-subtitle-stop
100 :ignore-spacing) :to-be 100)
+ (expect (subed-srt--subtitle-msecs-stop 1)
:to-be 2100)
+ (expect (subed-srt--subtitle-msecs-start
2) :to-be 2100)
+ (expect (subed-srt--adjust-subtitle-stop
200 :ignore-spacing) :to-be 200)
+ (expect (subed-srt--subtitle-msecs-stop 1)
:to-be 2300)
+ (expect (subed-srt--subtitle-msecs-start
2) :to-be 2100)))
+ )
(describe "when decreasing start time"
(it "of the first subtitle."
(with-temp-buffer
- [nongnu] elpa/subed 19efbb8 161/389: Rename subed--mode-enabled to subed-mode--enabled-p, (continued)
- [nongnu] elpa/subed 19efbb8 161/389: Rename subed--mode-enabled to subed-mode--enabled-p, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed a9a6835 154/389: Ensure subtitle length stays the same when moving, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 10e0e28 155/389: Use #' for functions, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed e799392 174/389: subed-move-subtitle: Fix docstring, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 381ed1e 159/389: Add subed-srt--max-subtitle-id, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 2b3a1d4 165/389: Regenerate IDs after killing a subtitle, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 4d2c26d 163/389: Add subed-srt--regenerate-ids-soon-timer, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed a6300b2 164/389: Don't regenerate IDs immediately after inserting subtitle(s), ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 800b7aa 166/389: Move timer variables from subed-config.el to where they are used, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 3792b4b 178/389: subed-move-subtitle: Adjust docstring, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 0e6ba37 180/389: Add option to ignore subtitle spacing when adjusting start/stop time,
ELPA Syncer <=
- [nongnu] elpa/subed a7fa089 202/389: Remove unused variable err when parsing JSON response, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 41fa03d 195/389: Use temporary-file-directory for mpv socket, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed c326079 185/389: subed-guess-video-file: Handle language name in subtitle file name, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 300341a 186/389: subed-guess-video-file: Elaborate docstring, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed ab651e8 217/389: Rename subed-srt--max-subtitle-id to subed-srt--subtitle-id-max, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 909cffd 216/389: Use generic function subed-subtitle-text in test-subed.el, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 1654a08 207/389: Properly indent tests, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 3bab6b7 196/389: Use subed-mpv-socket-dir for subed-mpv--socket, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 08e9762 188/389: Add option to ignore negative duration when adjusting start/stop time, ELPA Syncer, 2021/12/03
- [nongnu] elpa/subed 06aa155 187/389: Remove debugging messages from tests, ELPA Syncer, 2021/12/03