fix(latex): reorder viewers wrt +latex-viewers

If a viewer already exists in `TeX-view-program-selection`, loading
`+viewer.el` does not change its order because `add-to-list` does
nothing when the item is already in the list.

Close: #8046
Fix: #5275
Co-authored-by: cartoonist <cartoonist@users.noreply.github.com>
This commit is contained in:
Henrik Lissner 2024-09-05 14:45:16 -04:00
parent 1fa1eba5ac
commit 03e5f1333c
No known key found for this signature in database
GPG key ID: B60957CA074D39A3

View file

@ -4,7 +4,10 @@
(add-to-list 'TeX-view-program-selection '(output-pdf "preview-pane") 'append) (add-to-list 'TeX-view-program-selection '(output-pdf "preview-pane") 'append)
(add-to-list 'TeX-view-program-list '("preview-pane" latex-preview-pane-mode)) (add-to-list 'TeX-view-program-list '("preview-pane" latex-preview-pane-mode))
(dolist (viewer (reverse +latex-viewers)) (letf! (defun prepend-to-list (list-var value &optional append)
(set list-var (delete value (symbol-value list-var)))
(add-to-list list-var value append))
(dolist (viewer (reverse +latex-viewers))
(pcase viewer (pcase viewer
(`skim (`skim
(when-let (when-let
@ -12,7 +15,7 @@
(and (featurep :system 'macos) (and (featurep :system 'macos)
(file-exists-p! (or "/Applications/Skim.app" (file-exists-p! (or "/Applications/Skim.app"
"~/Applications/Skim.app")))) "~/Applications/Skim.app"))))
(add-to-list 'TeX-view-program-selection '(output-pdf "Skim")) (prepend-to-list 'TeX-view-program-selection '(output-pdf "Skim"))
(add-to-list 'TeX-view-program-list (add-to-list 'TeX-view-program-list
(list "Skim" (format "%s/Contents/SharedSupport/displayline -r -b %%n %%o %%b" (list "Skim" (format "%s/Contents/SharedSupport/displayline -r -b %%n %%o %%b"
app-path))))) app-path)))))
@ -20,31 +23,31 @@
(`sumatrapdf (`sumatrapdf
(when (and (featurep :system 'windows) (when (and (featurep :system 'windows)
(executable-find "SumatraPDF")) (executable-find "SumatraPDF"))
(add-to-list 'TeX-view-program-selection '(output-pdf "SumatraPDF")))) (prepend-to-list 'TeX-view-program-selection '(output-pdf "SumatraPDF"))))
(`okular (`okular
(when (executable-find "okular") (when (executable-find "okular")
;; Configure Okular as viewer. Including a bug fix ;; Configure Okular as viewer. Including a bug fix
;; (https://bugs.kde.org/show_bug.cgi?id=373855). ;; (https://bugs.kde.org/show_bug.cgi?id=373855).
(add-to-list 'TeX-view-program-list '("Okular" ("okular --noraise --unique file:%o" (mode-io-correlate "#src:%n%a")))) (add-to-list 'TeX-view-program-list '("Okular" ("okular --noraise --unique file:%o" (mode-io-correlate "#src:%n%a"))))
(add-to-list 'TeX-view-program-selection '(output-pdf "Okular")))) (prepend-to-list 'TeX-view-program-selection '(output-pdf "Okular"))))
(`zathura (`zathura
(when (executable-find "zathura") (when (executable-find "zathura")
(add-to-list 'TeX-view-program-selection '(output-pdf "Zathura")))) (prepend-to-list 'TeX-view-program-selection '(output-pdf "Zathura"))))
(`evince (`evince
(when (executable-find "evince") (when (executable-find "evince")
(add-to-list 'TeX-view-program-selection '(output-pdf "Evince")))) (prepend-to-list 'TeX-view-program-selection '(output-pdf "Evince"))))
(`pdf-tools (`pdf-tools
(when (modulep! :tools pdf) (when (modulep! :tools pdf)
(add-to-list 'TeX-view-program-selection '(output-pdf "PDF Tools")) (prepend-to-list 'TeX-view-program-selection '(output-pdf "PDF Tools"))
(when (featurep :system 'macos) (when (featurep :system 'macos)
;; PDF Tools isn't in `TeX-view-program-list-builtin' on macs. ;; PDF Tools isn't in `TeX-view-program-list-builtin' on macs.
(add-to-list 'TeX-view-program-list '("PDF Tools" TeX-pdf-tools-sync-view))) (add-to-list 'TeX-view-program-list '("PDF Tools" TeX-pdf-tools-sync-view)))
;; Update PDF buffers after successful LaTeX runs. ;; Update PDF buffers after successful LaTeX runs.
(add-hook 'TeX-after-compilation-finished-functions #'TeX-revert-document-buffer))))) (add-hook 'TeX-after-compilation-finished-functions #'TeX-revert-document-buffer))))))
(after! latex-preview-pane (after! latex-preview-pane