emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/subed c865969 058/389: Toggle subed-mode when `subed-mode'


From: ELPA Syncer
Subject: [nongnu] elpa/subed c865969 058/389: Toggle subed-mode when `subed-mode' is called
Date: Fri, 3 Dec 2021 10:59:56 -0500 (EST)

branch: elpa/subed
commit c8659691181889e68cb17a06bb6c6e9747c08a4b
Author: Random User <rndusr@posteo.de>
Commit: Random User <rndusr@posteo.de>

    Toggle subed-mode when `subed-mode' is called
---
 subed/subed-config.el |  4 ++++
 subed/subed.el        | 60 ++++++++++++++++++++++++++++++++++-----------------
 2 files changed, 44 insertions(+), 20 deletions(-)

diff --git a/subed/subed-config.el b/subed/subed-config.el
index e112fd9..f9e6fd7 100644
--- a/subed/subed-config.el
+++ b/subed/subed-config.el
@@ -77,6 +77,10 @@
   :group 'hypermedia
   :prefix "subed-")
 
+(defvar-local subed--mode-enabled nil
+  "Whether `subed-mode' is enabled.
+This is automatically set by `subed-mode-enable' and `subed-mode-disable'.")
+
 (defvar-local subed--debug-enabled nil
   "Whether `subed-debug' prints to `subed-debugging-buffer'.")
 
diff --git a/subed/subed.el b/subed/subed.el
index b1769f1..c45270a 100644
--- a/subed/subed.el
+++ b/subed/subed.el
@@ -25,7 +25,7 @@
 ;;
 ;;; Code:
 
-(add-to-list 'auto-mode-alist '("\\.srt$" . subed-mode))
+(add-to-list 'auto-mode-alist '("\\.srt$" . subed-mode-enable))
 
 (require 'subed-config)
 (require 'subed-srt)
@@ -383,47 +383,67 @@ existing file."
             (throw 'found-videofile file-video)))))))
 
 
-(defun subed-mode ()
-  "Major mode for editing subtitles.
-
-Key bindings:
-\\{subed-mode-map}"
+(defun subed-mode-enable ()
+  "Enable subed mode."
+  (message "enabling subed-mode")
   (interactive)
-
-  ;; Buffer-local variables
   (kill-all-local-variables)
   (setq-local font-lock-defaults '(subed-font-lock-keywords))
   (setq-local paragraph-start "^[[:alnum:]\n]+")
   (setq-local paragraph-separate "\n\n")
-
-  ;; Keybindings
   (use-local-map subed-mode-map)
-
-  ;; Provide point-motion and subtitle-motion hooks
   (add-hook 'post-command-hook 'subed--post-command-handler :append :local)
-
-  ;; Sort and reload subtitles in player on C-x C-s
   (add-hook 'before-save-hook 'subed-sort :append :local)
   (add-hook 'after-save-hook 'subed-mpv-reload-subtitles :append :local)
-
-  ;; Close player when buffer is killed
   (add-hook 'kill-buffer-hook 'subed-mpv-kill :append :local)
-
-  ;; Auto-open relevant video file
   (when subed-auto-find-video
     (let ((video-file (subed-guess-video-file)))
       (when video-file
         (subed-debug "Auto-discovered video file: %s" video-file)
         (subed-mpv-find-video video-file))))
-
   (subed-enable-pause-while-typing)
   (subed-enable-sync-point-to-player)
   (subed-enable-sync-player-to-point)
   (subed-enable-replay-adjusted-subtitle)
-
   (setq major-mode 'subed-mode
         mode-name "SubEd")
+  (setq subed--mode-enabled t)
   (run-mode-hooks 'subed-mode-hook))
 
+(defun subed-mode-disable ()
+  "Disable subed mode."
+  (interactive)
+  (message "disabling subed-mode")
+  (subed-disable-pause-while-typing)
+  (subed-disable-sync-point-to-player)
+  (subed-disable-sync-player-to-point)
+  (subed-disable-replay-adjusted-subtitle)
+  (subed-mpv-kill)
+  (subed-disable-debugging)
+  (kill-all-local-variables)
+  (remove-hook 'post-command-hook 'subed--post-command-handler :local)
+  (remove-hook 'before-save-hook 'subed-sort :local)
+  (remove-hook 'after-save-hook 'subed-mpv-reload-subtitles :local)
+  (remove-hook 'kill-buffer-hook 'subed-mpv-kill :local)
+  (setq subed--mode-enabled nil)
+  (message "post-command-hook: %s" post-command-hook)
+  (message "before-save-hook: %s" before-save-hook)
+  (message "after-save-hook: %s" after-save-hook)
+  (message "kill-buffer-hook: %s" kill-buffer-hook))
+
+(defun subed-mode ()
+  "Major mode for editing subtitles.
+
+This function enables or disables subed-mode.  See also
+`subed-mode-enable' and `subed-mode-disable'.
+
+Key bindings:
+\\{subed-mode-map}"
+  (interactive)
+  ;; Use 'enabled property of this function to store enabled/disabled status
+  (if subed--mode-enabled
+      (subed-mode-disable)
+    (subed-mode-enable)))
+
 (provide 'subed)
 ;;; subed.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]