branch: elpa/subed commit 53d1e336550c3de3809674cfd40c75103cf6f6f2 Author: Random User <rnd...@posteo.de> Commit: Random User <rnd...@posteo.de>
Fix error when adjusting start/stop time in empty buffer --- subed/subed-srt.el | 36 ++++++++++++++++++++---------------- tests/test-subed-srt.el | 12 ++++++++++++ 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/subed/subed-srt.el b/subed/subed-srt.el index 135c363..f4ec666 100644 --- a/subed/subed-srt.el +++ b/subed/subed-srt.el @@ -298,26 +298,30 @@ Return point or nil if there is no previous subtitle." (defun subed-srt--adjust-subtitle-start-relative (msecs) "Add MSECS milliseconds to start time (use negative value to subtract)." - (let ((msecs-new (+ (subed-srt--subtitle-msecs-start) msecs))) - (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)))) - (when subed-subtitle-time-adjusted-hook - (let ((sub-id (subed-srt--subtitle-id))) - (run-hook-with-args 'subed-subtitle-time-adjusted-hook sub-id msecs-new))))) + (let* ((msecs-start (subed-srt--subtitle-msecs-start)) + (msecs-new (when msecs-start (+ msecs-start msecs)))) + (when msecs-new + (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)))) + (when subed-subtitle-time-adjusted-hook + (run-hook-with-args 'subed-subtitle-time-adjusted-hook + (subed-srt--subtitle-id) msecs-new))))) (defun subed-srt--adjust-subtitle-stop-relative (msecs) "Add MSECS milliseconds to stop time (use negative value to subtract)." - (let ((msecs-new (+ (subed-srt--subtitle-msecs-stop) msecs))) - (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)))) + (let* ((msecs-stop (subed-srt--subtitle-msecs-stop)) + (msecs-new (when msecs-stop (+ msecs-stop msecs)))) + (when msecs-new + (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)))) (when subed-subtitle-time-adjusted-hook - (let ((sub-id (subed-srt--subtitle-id))) - (run-hook-with-args 'subed-subtitle-time-adjusted-hook sub-id - (subed-srt--subtitle-msecs-start)))))) + (run-hook-with-args 'subed-subtitle-time-adjusted-hook + (subed-srt--subtitle-id) + (subed-srt--subtitle-msecs-start)))))) (defun subed-srt-increase-start-time (&optional arg) "Add `subed-seconds-adjust' milliseconds to start time of current subtitle. diff --git a/tests/test-subed-srt.el b/tests/test-subed-srt.el index 9a0ff2e..ef60f5d 100644 --- a/tests/test-subed-srt.el +++ b/tests/test-subed-srt.el @@ -678,6 +678,18 @@ Baz. (subed-srt-increase-stop-time) (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"))) + (it "does nothing if no timestamp can be found." + (with-temp-buffer + (insert "foo") + (goto-char (point-min)) + (subed-srt-increase-start-time) + (expect (buffer-string) :to-equal "foo") + (subed-srt-decrease-start-time) + (expect (buffer-string) :to-equal "foo") + (subed-srt-increase-stop-time) + (expect (buffer-string) :to-equal "foo") + (subed-srt-decrease-stop-time) + (expect (buffer-string) :to-equal "foo"))) ) (describe "Killing a subtitle"