Ich habe ein Problem beim Anzeigen von PDF-Dokumentationsdateien mit AucTex. Ich verwende pdf-tools
zum Anzeigen von PDF-Dateien in Emacs und habe emacsclient -n
als Standard-PDF-Viewer festgelegt (über xdg-mime unter Debian Linux). Dies funktioniert in den meisten Fällen (Tex-documentation-texdoc ...)
einwandfrei, unterbricht jedoch die Funktion von Auctex ( C-c ?
).
Ich habe das Problem auf eine einzige Codezeile eingegrenzt. Wenn ich versuche, die Dokumentation für das listings
Paket TeX-documentation-texdoc
anzuzeigen , wird daraus folgendes Geschlecht:
(shell-command-to-string "texdoc --view listings")
texdoc
Aufrufe emacsclient
zum Öffnen der Datei (basierend darauf, wie ich meinen Desktop über xdg konfiguriert habe). Zu diesem Zeitpunkt hängt der Emacs jedoch und ich muss beenden ( C-g
), um die Kontrolle zurückzugewinnen. Danach wird kein neues PDF geöffnet. Das gleiche passiert, wenn ich versuche, emacsclient direkt aufzurufen:
(shell-command-to-string "emacsclient -n tmp.pdf")
Beide Befehle arbeiten in der Befehlszeile (dh emacsclient -n tmp.pdf
und texdoc --view listings
.
Meine Frage ist in einem solchen Fall, wie ich emacsclient innerhalb von Emacs aufrufe. (und ich weiß, dass ich die PDF-Datei einfach mit öffnen könnte find-file
; das ist hier keine Option, da ich einen externen Prozess (texdoc) aufrufen muss, um die Datei zu finden, und dieser Prozess dann emacsclient aufruft).
texdoc --view
und dann wieder zu Emacs zu wechseln, wenn die Datei geöffnet wird. Aber ich denke, es sollte eine Möglichkeit geben, dies in einem einzigen Schritt von Emacs aus zu tun?
(async-shell-command "emacsclient -n tmp.pdf")
das Problem lösen?
(async-shell-command "emacsclient -n tmp.pdf")
funktioniert, aber (async-shell-command "texdoc --view listings")
nicht. Das ist also ein nützlicher Hinweis.
C-u C-c ?
? Es zeigt zuerst die Liste der Dokumente an, die sich auf das Paket beziehen, und öffnet dann den Viewer mit (call-process "texdoc" nil 0 nil "--just-view" doc)
.
texdoc -M --list listings
, um die Datei zu finden, und dann verwendenfind-file
?