NonGNU ELPA - subed

subed

Description
A major mode for editing subtitles
Latest
subed-0.0.3.tar, 2021-Dec-30, 670 KiB
Maintainer
Home page
https://github.com/rndusr/subed
Browse ELPA's repository
CGit or Gitweb
Badge

To install this package, run in Emacs:

M-x package-install RET subed RET

Full description

subed

subed is an Emacs major mode for editing subtitles while playing the corresponding video with mpv. At the moment, the only supported formats are SubRip ( .srt), WebVTT ( .vtt ), and Advanced SubStation Alpha ( .ass, experimental ).

screenshot.jpg

Features

  • Quickly jump to next (M-n) and previous (M-p) subtitle text.
  • Quickly jump to the beginning (C-M-a) and end (C-M-e) of the current subtitle's text.
  • Insert subtitles evenly spaced throughout the available space (M-i) or right next the current subtitle (C-M-i). A prefix argument controls how many subtitles to insert and whether they are inserted before or after the current subtitle.
  • Kill subtitles (M-k).
  • Adjust subtitle start (M-[ / M-]) and stop (M-{ / M-}) time. A prefix argument sets the number of milliseconds for the current session (e.g. C-u 1000 M-[ M-[ M-[ decreases start time by 3 seconds).
  • Move the current subtitle or all marked subtitles forward (C-M-n) or backward (C-M-p) in time without changing subtitle duration. A prefix argument sets the number of milliseconds for the current session (e.g. C-u 500 C-M-n C-M-n moves the current subtitle 1 second forward).
  • Shift the current subtitle forward (C-M-f) or backward (C-M-b) together with all following subtitles. This is basically a convenience shortcut for C-SPC M-> C-M-n/p.
  • Scale all subtitles or all marked subtitles forward (C-M-x) or backward (C-M-S-x) in time without changing subtitle duration. A prefix argument sets the number of milliseconds for the current session (e.g. C-u 500 C-M-x moves the last [or last marked] subtitle forward 500ms and proportionally scales all [or all marked] subtitles based on this time extension. Similarly, C-u 500 C-M-S-x moves the last [or last marked] subtitle backward 500ms and proportionally scales all [or all marked] subtitles based on this time contraction). This can be extremely useful to correct synchronization issues in existing subtitle files. First, adjust the starting time if necessary (e.g. C-M-f), then adjust the ending and scale constituent subtitles (e.g. C-M-x).
  • Show CPS (characters per second) for the current subtitle.
  • Insert HTML-like tags (C-c C-t C-t, with an optional attribute when prefixed by C-u), in particular italics (C-c C-t C-i) or boldface (C-c C-t C-b).
  • Sort and re-number subtitles and remove any extra spaces and newlines (M-s). This is done automatically every time the buffer is saved.
  • Trim subtitle overlaps with M-x subed-trim-overlaps. By default, this adjusts the stop time of overlapping subtitles to subed-subtitle-spacing milliseconds before the next subtitle starts. Use M-x customize-group subed to configure trimming to happen automatically when buffers are loaded or saved, which time is adjusted, and how much time to leave between subtitles.
mpv integration (optional)
  • Open videos with C-c C-v or automatically when entering subed-mode if the video file is named like the subtitle file but with a video extension (e.g. .mkv or .avi).
  • Subtitles are automatically reloaded in mpv when the buffer is saved.
  • Cursor and playback position are synchronized:
    • Playback in mpv seeks to the position of the current subtitle as the cursor moves between subtitles (C-c ,).
    • The cursor is moved to the currently relevant subtitle as the video is playing (C-c .).
  • Copy the current playback position as start (C-c [) or stop (C-c ]) time of the current subtitle.
  • Playback is paused or slowed down when a subtitle's text is edited (C-c C-p).
  • Loop over the current subtitle in mpv (C-c C-l).
  • When a subtitle's start or stop time changes, mpv seeks to the subtitle's start time (C-c C-r).
  • Pause video playback without leaving Emacs (M-SPC).
  • Move one frame forward or backward (C-c C-f . and C-c C-f ,; pressing , or . afterwards moves by frames until any other key is pressed).

Installation

subed is now on NonGNU ELPA. On Emacs 28 and later, you can install it with M-x package-install subed.

To install it on Emacs 27 or earlier, add the following to your Emacs configuration file:

(with-eval-after-load 'package (add-to-list 'package-archives '("nongnu" . "https://elpa.nongnu.org/nongnu/")))

Use M-x eval-buffer to run the code, and then use M-x package-install subed.

If that doesn't work, you can install it manually. For example, copy subed/*.el to

$HOME/.emacs.d/elisp/ and add $HOME/.emacs.d/elisp/ to your load-path.

Here's some sample code for manual installation:

(add-to-list 'load-path "~/.emacs.d/elisp")
(require 'subed)

Here's an example setup if you use use-package:

(use-package subed
  :ensure t
  :config
  ;; Disable automatic movement of point by default
  (add-hook 'subed-mode-hook 'subed-disable-sync-point-to-player)
  ;; Remember cursor position between sessions
  (add-hook 'subed-mode-hook 'save-place-local-mode)
  ;; Break lines automatically while typing
  (add-hook 'subed-mode-hook 'turn-on-auto-fill)
   ;; Break lines at 40 characters
  (add-hook 'subed-mode-hook (lambda () (setq-local fill-column 40))))

C-h f subed-mode should get you started.

Contributions

Contributions would be really appreciated! subed conforms to the REUSE Specification; this means that every file has copyright and license information. If you modify a file, please update the year shown after SPDX-FileCopyrightText. Thank you!

There's a list of authors in the file AUTHORS.org. If you have at any point contributed to subed, you are most welcome to add your name (and email address if you like) to the list.

License

subed is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Old versions

subed-0.0.2.tar.lz2021-Dec-07 154 KiB
subed-0.0.1.tar.lz2021-Dec-03 139 KiB