[Top][All Lists]

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

Re: Detect latexmk is running on currently buffer.

From: Ikumi Keita
Subject: Re: Detect latexmk is running on currently buffer.
Date: Wed, 13 Oct 2021 18:19:37 +0900

Hi Hongyi,

>>>>> Hongyi Zhao <> writes:

> Though the above method works, I meet a problem when the project LaTeX
> files are large to some extent. To be more specific, when the project
> is large to a certain extent, the compilation time of latexmk will be
> relatively long, which may lead to the following race condition: When
> the previous latexmk process has not ended, the subsequent latexmk
> process is launched again.

> Any hints for fixing this problem?

Maybe the following stuff works, though I haven't test it.

(defvar my-AUCTeX-process nil)
(use-package smart-compile
  (declare-function smart-compile-string "smart-compile")
  (defun run-latexmk ()
    (when (string-match ".tex$" (buffer-file-name))
      (let ((buf (get-buffer "*Background TeX proccess*")))
        (if (bufferp buf) (kill-buffer buf))) ;; flush previous log
      (unless (and (processp my-AUCTeX-process)
                   (eq (process-status my-AUCTeX-process) 'run))
        (setq my-AUCTeX-process
               "Background TeX" "*Background TeX proccess*"
               ;; use an external application as the previewer
               ;;(smart-compile-string "latexmk -pv %f")

               ;; use pdf-tools
               (smart-compile-string "latexmk %f"))))))
  (define-minor-mode AutoTeX-mode
    "Mode for compiling latex sources and creating PDFs after saving."
    :global nil
    :lighter " Auto"
    (if AutoTeX-mode
        (add-hook 'after-save-hook 'run-latexmk t t)
      (remove-hook 'after-save-hook 'run-latexmk t)))

  :hook (LaTeX-mode . (lambda () (AutoTeX-mode 1))))

Ikumi Keita

reply via email to

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