AucTex ile pdf dokümantasyon dosyalarını görüntülerken bir sorunla karşılaştım. pdf-toolsPDF dosyalarını Emacs içinden görüntülemek için kullanıyorum ve emacsclient -nvarsayılan pdf-görüntüleyicim olarak ayarladım (Debian Linux'ta xdg-mime aracılığıyla). Bu çoğu durumda iyi çalışır, ancak (Tex-documentation-texdoc ...)Auctex ( C-c ?) işlevini bozar .
Sorunu tek bir kod satırına daralttım. listingsPaketin belgelerini görüntülemeye çalıştığımda , TeX-documentation-texdocbunu aşağıdaki sexp'e dönüştürür:
(shell-command-to-string "texdoc --view listings")
texdocsırayla emacsclientdosyayı gerçekten açmak için aramalar (masaüstümü xdg üzerinden nasıl yapılandırdığımı temel alarak). Ancak, bu noktada, Emacs askıda kalır ve C-gkontrolü geri almak için ( ) çıkmak gerekir . Bundan sonra yeni pdf açılmaz. Aynı şeyi doğrudan emacsclient aramaya çalışırsanız olur:
(shell-command-to-string "emacsclient -n tmp.pdf")
Her iki komut da komut satırında (yani, emacsclient -n tmp.pdfve texdoc --view listings.
Benim sorum, böyle bir örnekte Emacsli'den nasıl emacsclient diyebilirim? (ve ben sadece pdf dosyasını açabileceğimi biliyorum find-file; burada bir seçenek değil çünkü dosyayı bulmak için harici bir işlemi (texdoc) çağırmam gerekiyor ve bu işlem daha sonra emacsclient'i çağırıyor).
texdoc --viewve daha sonra dosyayı açtığında Emacs'a geri dönmek. Ama bence bunu Emacs'tan tek adımda yapmanın bir yolu olmalı mı?
(async-shell-command "emacsclient -n tmp.pdf")sorunu çözmek?
(async-shell-command "emacsclient -n tmp.pdf")işe yarıyor ama (async-shell-command "texdoc --view listings")çalışmıyor. Bu yararlı bir ipucu.
C-u C-c ?iş? İlk olarak paketle ilgili dokümanların listesini gösterir, ardından görüntüleyiciyi ile açar (call-process "texdoc" nil 0 nil "--just-view" doc).
texdoc -M --list listingsdosyayı bulmak için kullanmıyoruzfind-file?