branch: elpa/subed commit 5b8c23a4d74a6fd697f10143de93b8340b0d6660 Author: Sacha Chua <sa...@sachachua.com> Commit: Sacha Chua <sa...@sachachua.com>
New commands: subed-merge-with-next, subed-merge-with-previous * subed/subed.el (subed-mode-map): Bind M-m to subed-merge-with-next. Bind M-M to subed-merge-with-previous (subed--generic-function-suffixes): Add generic merge-with-next. * subed/subed-common.el (subed-merge-with-previous): New command. * subed/subed-srt.el (subed-srt--merge-with-next): New command. * subed/subed-vtt.el (subed-vtt--merge-with-next): New command. --- subed/subed-common.el | 9 +++++++++ subed/subed-srt.el | 17 +++++++++++++++++ subed/subed-vtt.el | 17 +++++++++++++++++ subed/subed.el | 4 +++- 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/subed/subed-common.el b/subed/subed-common.el index 6f866cb..d501331 100644 --- a/subed/subed-common.el +++ b/subed/subed-common.el @@ -621,6 +621,15 @@ following manner: (subed-regenerate-ids-soon)) (point)) +;;; Merging + +(defun subed-merge-with-previous () + "Merge the current subtitle with the previous subtitle. +Update the end timestamp accordingly." + (interactive) + (if (subed-backward-subtitle-id) + (subed-merge-with-next) + (error "No previous subtitle to merge into"))) ;;; Replay time-adjusted subtitle diff --git a/subed/subed-srt.el b/subed/subed-srt.el index d738ea8..794a538 100644 --- a/subed/subed-srt.el +++ b/subed/subed-srt.el @@ -419,6 +419,23 @@ Return new point." (delete-region beg end)) (subed-srt--regenerate-ids-soon)) +(defun subed-srt--merge-with-next () + "Merge the current subtitle with the next subtitle. +Update the end timestamp accordingly." + (interactive) + (save-excursion + (subed-srt--jump-to-subtitle-end) + (let ((pos (point)) new-end) + (if (subed-srt--forward-subtitle-time-stop) + (progn + (when (looking-at subed-srt--regexp-timestamp) + (setq new-end (subed-srt--timestamp-to-msecs (match-string 0)))) + (subed-srt--jump-to-subtitle-text) + (delete-region pos (point)) + (insert "\n") + (subed-srt--set-subtitle-time-stop new-end) + (subed-srt--regenerate-ids-soon)) + (error "No subtitle to merge into"))))) ;;; Maintenance diff --git a/subed/subed-vtt.el b/subed/subed-vtt.el index 76db4d7..dbdb282 100644 --- a/subed/subed-vtt.el +++ b/subed/subed-vtt.el @@ -416,6 +416,23 @@ Return new point." end (save-excursion (goto-char (point-max))))) (delete-region beg end))) +(defun subed-vtt--merge-with-next () + "Merge the current subtitle with the next subtitle. +Update the end timestamp accordingly." + (interactive) + (save-excursion + (subed-vtt--jump-to-subtitle-end) + (let ((pos (point)) new-end) + (if (subed-vtt--forward-subtitle-time-stop) + (progn + (when (looking-at subed-vtt--regexp-timestamp) + (setq new-end (subed-vtt--timestamp-to-msecs (match-string 0)))) + (subed-vtt--jump-to-subtitle-text) + (delete-region pos (point)) + (insert "\n") + (subed-vtt--set-subtitle-time-stop new-end)) + (error "No subtitle to merge into"))))) + ;;; Maintenance diff --git a/subed/subed.el b/subed/subed.el index 43a1e1d..7ae7807 100644 --- a/subed/subed.el +++ b/subed/subed.el @@ -56,6 +56,8 @@ (define-key subed-mode-map (kbd "M-i") #'subed-insert-subtitle) (define-key subed-mode-map (kbd "C-M-i") #'subed-insert-subtitle-adjacent) (define-key subed-mode-map (kbd "M-k") #'subed-kill-subtitle) + (define-key subed-mode-map (kbd "M-m") #'subed-merge-with-next) + (define-key subed-mode-map (kbd "M-M") #'subed-merge-with-previous) (define-key subed-mode-map (kbd "M-s") #'subed-sort) (define-key subed-mode-map (kbd "M-SPC") #'subed-mpv-toggle-pause) (define-key subed-mode-map (kbd "C-c C-d") #'subed-toggle-debugging) @@ -98,7 +100,7 @@ "forward-subtitle-time-start" "backward-subtitle-time-start" "forward-subtitle-time-stop" "backward-subtitle-time-stop" "set-subtitle-time-start" "set-subtitle-time-stop" - "prepend-subtitle" "append-subtitle" "kill-subtitle" + "prepend-subtitle" "append-subtitle" "kill-subtitle" "merge-with-next" "regenerate-ids" "regenerate-ids-soon" "sanitize" "validate" "sort"))