unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Detect latexmk is running on currently buffer.
@ 2021-10-12  7:54 Hongyi Zhao
  2021-10-12  9:32 ` Emanuel Berg via Users list for the GNU Emacs text editor
  0 siblings, 1 reply; 9+ messages in thread
From: Hongyi Zhao @ 2021-10-12  7:54 UTC (permalink / raw)
  To: help-gnu-emacs

Currently, I'm using the following configuration to automate the LaTeX
workflow in Emacs with AUCTeX:

```emacs-lisp
;; Automatically revert a buffer when the corresponding file on disk is updated.
(global-auto-revert-mode 1)
(setq auto-revert-use-notify nil)

;; Automatically save the buffer to disk periodically.
(use-package real-auto-save
   :hook ((TeX-mode python-mode) . real-auto-save-mode)
   :config
  (setq real-auto-save-interval 5) ;; in seconds
  )

;; After the buffer is changed and saved to disk, run latexmk on the
;; corresponding file immediately.
;;See ~/.latexmkrc for correspoding configuration
(use-package smart-compile
  :init
  (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
      (start-process-shell-command
       "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)))
  )
```
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?

Regards
-- 
Assoc. Prof. Hongyi Zhao <hongyi.zhao@gmail.com>
Theory and Simulation of Materials
Hebei Vocational University of Technology and Engineering
No. 473, Quannan West Street, Xindu District, Xingtai, Hebei province



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-10-12 17:33 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-10-12  7:54 Detect latexmk is running on currently buffer Hongyi Zhao
2021-10-12  9:32 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-12 12:08   ` Hongyi Zhao
2021-10-12 12:58     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-12 12:15   ` Hongyi Zhao
2021-10-12 12:59     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-12 13:10       ` Hongyi Zhao
2021-10-12 13:23         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-12 17:33           ` Emanuel Berg via Users list for the GNU Emacs text editor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).