branch: externals/auctex-cont-latexmk
commit 831be210d9ee64d1aee478243042ff947633fe21
Author: Paul Nelson <ultr...@gmail.com>
Commit: Paul Nelson <ultr...@gmail.com>

    Deactivate upon file rename
    
    * tex-continuous.el (tex-continuous--compilation-buffer): New
    variable, replacing function of the same name.
    (tex-continuous--fresh-p, tex-continuous--unsubscribe): Use it.
    (tex-continuous-mode-disable, tex-continuous-turn-on,
    tex-continuous-turn-off): New functions.
    (tex-continuous-mode, tex-continuous-toggle): Use them.
---
 tex-continuous.el | 68 ++++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 45 insertions(+), 23 deletions(-)

diff --git a/tex-continuous.el b/tex-continuous.el
index 298e2370e9..fc809324ce 100644
--- a/tex-continuous.el
+++ b/tex-continuous.el
@@ -175,9 +175,8 @@ Return a list of triples as in the docstring of
   (let ((master (abbreviate-file-name (expand-file-name (TeX-master-file)))))
     (format "*pvc-%s*" master)))
 
-(defun tex-continuous--compilation-buffer ()
-  "Return the buffer used for LaTeX compilation."
-  (get-buffer (tex-continuous--compilation-buffer-name)))
+(defvar-local tex-continuous--compilation-buffer nil
+  "The buffer used for LaTeX compilation.")
 
 (defconst tex-continuous--watching-str
   "=== Watching for updated files. Use ctrl/C to stop ..."
@@ -202,7 +201,7 @@ either in a watching state or has not updated recently."
   (when-let* ((file (buffer-file-name))
               (log-file (tex-continuous--build-file "log")))
     (and
-     (when-let ((buf (tex-continuous--compilation-buffer)))
+     (when-let ((buf tex-continuous--compilation-buffer))
        (with-current-buffer buf
          (or
           (progn
@@ -258,7 +257,7 @@ report diagnostics."
 (defun tex-continuous--unsubscribe ()
   "Unsubscribe from LaTeX compilation if the current buffer is in the list."
   (let ((buf (current-buffer))
-        (comp-buf (tex-continuous--compilation-buffer))
+        (comp-buf tex-continuous--compilation-buffer)
         done)
     (when comp-buf
       (with-current-buffer comp-buf
@@ -274,26 +273,34 @@ report diagnostics."
             (delete-process process))
           (kill-buffer comp-buf))))))
 
+(defun tex-continuous-mode-disable ()
+  "Disable `tex-continuous-mode' in all buffers."
+  (tex-continuous-mode 0))
+
 ;;;###autoload
 (define-minor-mode tex-continuous-mode
   "If enabled, run latexmk on the current tex file."
   :lighter nil
   (cond
    (tex-continuous-mode
-    (let ((buf (current-buffer)))
-      (if-let ((comp-buf (tex-continuous--compilation-buffer)))
+    (let ((buf (current-buffer))
+          (comp-buf-name (tex-continuous--compilation-buffer-name)))
+      (if-let ((comp-buf (setq tex-continuous--compilation-buffer
+                               (get-buffer comp-buf-name))))
           (with-current-buffer comp-buf
             (push buf tex-continuous--subscribed-buffers))
         (unless (start-process-shell-command
                  "tex-continuous"
-                 (tex-continuous--compilation-buffer-name)
+                 comp-buf-name
                  (tex-continuous--compilation-command))
           (error "Failed to start LaTeX compilation"))
-        (with-current-buffer (tex-continuous--compilation-buffer)
+        (with-current-buffer (setq tex-continuous--compilation-buffer
+                                   (get-buffer comp-buf-name))
           (special-mode)
           (add-hook 'after-change-functions #'tex-continuous--update-time nil 
t)
           (push buf tex-continuous--subscribed-buffers))))
     (add-hook 'kill-buffer-hook 'tex-continuous--unsubscribe nil t)
+    (add-hook 'after-set-visited-file-name-hook 'tex-continuous-mode-disable 
nil t)
     (when tex-continuous--timer
       (cancel-timer tex-continuous--timer)
       (setq tex-continuous--timer nil))
@@ -302,6 +309,7 @@ report diagnostics."
    (t
     (tex-continuous--unsubscribe)
     (remove-hook 'kill-buffer-hook 'tex-continuous--unsubscribe t)
+    (remove-hook 'after-set-visited-file-name-hook 
'tex-continuous-mode-disable t)
     (when tex-continuous--report-fn
       (setq tex-continuous--report-fn nil)))))
 
@@ -309,24 +317,38 @@ report diagnostics."
   "Saved value of `flymake-diagnostic-functions'.
 Saved and restored by `tex-continuous-toggle'.")
 
+(defun tex-continuous-turn-on ()
+  "Enable `tex-continuous-mode' and `flymake-mode'.
+Also set `flymake-diagnostic-functions' to `tex-continuous-flymake'."
+  (interactive)
+  (tex-continuous-mode 1)
+  (setq tex-continuous--saved-flymake-diagnostic-functions
+        flymake-diagnostic-functions)
+  (setq-local flymake-diagnostic-functions '(tex-continuous-flymake))
+  (flymake-mode 1)
+  (remove-hook 'after-set-visited-file-name-hook 'tex-continuous-mode-disable 
t)
+  (add-hook 'after-set-visited-file-name-hook 'tex-continuous-turn-off nil t)
+  (message "tex-continuous-mode and flymake-mode enabled"))
+
+(defun tex-continuous-turn-off ()
+  "Disable `tex-continuous-mode' and `flymake-mode'.
+Also restore `flymake-diagnostic-functions'."
+  (interactive)
+  (tex-continuous-mode 0)
+  (flymake-mode 0)
+  (setq-local flymake-diagnostic-functions
+              tex-continuous--saved-flymake-diagnostic-functions)
+  (remove-hook 'after-set-visited-file-name-hook 'tex-continuous-turn-off t)
+  (message "tex-continuous-mode and flymake-mode disabled"))
+
 ;;;###autoload
 (defun tex-continuous-toggle ()
   "Toggle `tex-continuous-mode', and also `flymake-mode'."
   (interactive)
-  (cond
-   (tex-continuous-mode
-    (tex-continuous-mode 0)
-    (flymake-mode 0)
-    (setq-local flymake-diagnostic-functions
-                tex-continuous--saved-flymake-diagnostic-functions)
-    (message "tex-continuous-mode and flymake-mode disabled"))
-   (t
-    (tex-continuous-mode 1)
-    (setq tex-continuous--saved-flymake-diagnostic-functions
-          flymake-diagnostic-functions)
-    (setq-local flymake-diagnostic-functions '(tex-continuous-flymake))
-    (flymake-mode 1)
-    (message "tex-continuous-mode and flymake-mode enabled"))))
+  (cond (tex-continuous-mode
+         (tex-continuous-turn-off))
+        (t
+         (tex-continuous-turn-on))))
 
 (provide 'tex-continuous)
 ;;; tex-continuous.el ends here

Reply via email to