Ho riscontrato un problema durante la visualizzazione dei file di documentazione pdf con AucTex. Uso pdf-tools
per visualizzare i file PDF da Emacs e ho impostato emacsclient -n
il mio visualizzatore di PDF predefinito (tramite xdg-mime su Debian Linux). Funziona bene nella maggior parte dei casi, ma interrompe la (Tex-documentation-texdoc ...)
funzione di Auctex ( C-c ?
).
Ho ridotto il problema a una singola riga di codice. Quando provo a visualizzare la documentazione per il listings
pacchetto, lo TeX-documentation-texdoc
trasformo nel seguente sexp:
(shell-command-to-string "texdoc --view listings")
texdoc
a sua volta chiama emacsclient
per aprire effettivamente il file (in base a come ho configurato il mio desktop tramite xdg). Tuttavia, a questo punto, Emacs si blocca e ho bisogno di uscire ( C-g
) per riprendere il controllo. Successivamente, non viene aperto alcun nuovo pdf. La stessa cosa succede se provo a chiamare direttamente emacsclient:
(shell-command-to-string "emacsclient -n tmp.pdf")
Entrambi i comandi funzionano dalla riga di comando (cioè, emacsclient -n tmp.pdf
e texdoc --view listings
.
La mia domanda è, in un caso come questo, come posso chiamare emacsclient da Emacs? (e so che potrei semplicemente aprire il file pdf con find-file
; questa non è un'opzione qui perché ho bisogno di chiamare un processo esterno (texdoc) per trovare il file, e quel processo invoca emacsclient).
texdoc --view
e quindi tornare a Emacs quando apre il file. Ma penso che dovrebbe esserci un modo per farlo in un solo passo da Emacs?
(async-shell-command "emacsclient -n tmp.pdf")
risolvere il problema?
(async-shell-command "emacsclient -n tmp.pdf")
funziona, ma non lo (async-shell-command "texdoc --view listings")
fa. Quindi questo è un indizio utile.
C-u C-c ?
? Prima mostra l'elenco dei documenti relativi al pacchetto, quindi apre il visualizzatore con (call-process "texdoc" nil 0 nil "--just-view" doc)
.
texdoc -M --list listings
per trovare il file e quindi utilizzarefind-file
?