Me he encontrado con un problema al ver los archivos de documentación en pdf con AucTex. Utilizo pdf-tools
para ver archivos PDF desde Emacs, y lo configuré emacsclient -n
como mi visor de PDF predeterminado (a través de xdg-mime en Debian Linux). Esto funciona bien en la mayoría de las circunstancias, pero rompe la (Tex-documentation-texdoc ...)
función de Auctex ( C-c ?
).
He reducido el problema a una sola línea de código. Cuando intento ver la documentación del listings
paquete, lo TeX-documentation-texdoc
convierto en el siguiente sexp:
(shell-command-to-string "texdoc --view listings")
texdoc
a su vez llama emacsclient
a abrir realmente el archivo (según cómo configuré mi escritorio a través de xdg). Sin embargo, en este punto, el Emacs se cuelga y necesito salir ( C-g
) para recuperar el control. Después de eso, no se abre un nuevo pdf. Lo mismo sucede si intento llamar a emacsclient directamente:
(shell-command-to-string "emacsclient -n tmp.pdf")
Ambos comandos funcionan en la línea de comando (es decir, emacsclient -n tmp.pdf
y texdoc --view listings
.
Mi pregunta es, en un caso como este, ¿cómo llamo a emacsclient desde Emacs? (y sé que podría abrir el archivo pdf con find-file
; esa no es una opción aquí, ya que necesito llamar a un proceso externo (texdoc) para encontrar el archivo, y ese proceso invoca a emacsclient).
texdoc --view
y luego volver a Emacs cuando abre el archivo. Pero creo que debería haber una manera de hacer esto en un solo paso desde Emacs.
(async-shell-command "emacsclient -n tmp.pdf")
resolver el problema?
(async-shell-command "emacsclient -n tmp.pdf")
funciona, pero no (async-shell-command "texdoc --view listings")
no. Esa es una pista útil.
C-u C-c ?
? Primero muestra la lista de documentos relacionados con el paquete, luego abre el visor con (call-process "texdoc" nil 0 nil "--just-view" doc)
.
texdoc -M --list listings
para encontrar el archivo y luego usarfind-file
?