J'ai rencontré un problème lors de l'affichage des fichiers de documentation pdf avec AucTex. J'utilise pdf-tools
pour afficher les fichiers PDF à partir d'Emacs, et j'ai défini emacsclient -n
comme visionneuse pdf par défaut (via xdg-mime sur Debian Linux). Cela fonctionne très bien dans la plupart des cas, mais cela casse la (Tex-documentation-texdoc ...)
fonction d'Auctex ( C-c ?
).
J'ai réduit le problème à une seule ligne de code. Lorsque j'essaie d'afficher la documentation du listings
package, TeX-documentation-texdoc
cela se transforme en sexp suivant:
(shell-command-to-string "texdoc --view listings")
texdoc
à son tour, appelle emacsclient
à ouvrir réellement le fichier (basé sur la façon dont j'ai configuré mon bureau via xdg). Cependant, à ce stade, Emacs se bloque et je dois quitter ( C-g
) pour reprendre le contrôle. Après cela, aucun nouveau pdf n'est ouvert. La même chose se produit si j'essaie d'appeler directement emacsclient:
(shell-command-to-string "emacsclient -n tmp.pdf")
Les deux commandes fonctionnent sur la ligne de commande (c'est-à-dire, emacsclient -n tmp.pdf
et texdoc --view listings
.
Ma question est, dans un cas comme celui-ci, comment appeler emacsclient depuis Emacs? (et je sais que je pourrais simplement ouvrir le fichier pdf avec find-file
; ce n'est pas une option ici car j'ai besoin d'appeler un processus externe (texdoc) pour trouver le fichier, et ce processus appelle ensuite emacsclient).
texdoc --view
, puis à revenir à Emacs lorsqu'il ouvre le fichier. Mais je pense qu'il devrait y avoir un moyen de le faire en une seule étape depuis Emacs?
(async-shell-command "emacsclient -n tmp.pdf")
résoudre le problème?
(async-shell-command "emacsclient -n tmp.pdf")
fonctionne, mais pas (async-shell-command "texdoc --view listings")
non. Voilà donc un indice utile.
C-u C-c ?
marche? Il affiche d'abord la liste des documents liés au package, puis ouvre la visionneuse avec (call-process "texdoc" nil 0 nil "--just-view" doc)
.
texdoc -M --list listings
pour rechercher le fichier, puis l'utiliserfind-file
?