Saya mengalami masalah saat melihat file dokumentasi pdf dengan AucTex. Saya gunakan pdf-tools
untuk melihat file PDF dari dalam Emacs, dan saya telah menetapkan emacsclient -n
sebagai pdf-viewer default saya (via xdg-mime di Debian Linux). Ini berfungsi dengan baik di sebagian besar keadaan, tetapi itu merusak (Tex-documentation-texdoc ...)
fungsi Auctex ( C-c ?
).
Saya telah mempersempit masalahnya menjadi satu baris kode. Ketika saya mencoba melihat dokumentasi untuk listings
paket, TeX-documentation-texdoc
ubah ini menjadi sexp berikut:
(shell-command-to-string "texdoc --view listings")
texdoc
pada gilirannya panggilan emacsclient
untuk benar-benar membuka file (berdasarkan bagaimana saya mengkonfigurasi desktop saya via xdg). Namun, pada titik ini, Emacs hang dan saya harus berhenti ( C-g
) untuk mendapatkan kontrol kembali. Setelah itu, tidak ada pdf baru dibuka. Hal yang sama terjadi jika saya mencoba memanggil emacsclient secara langsung:
(shell-command-to-string "emacsclient -n tmp.pdf")
Kedua perintah bekerja di baris perintah (yaitu, emacsclient -n tmp.pdf
dan texdoc --view listings
.
Pertanyaan saya adalah, dalam contoh seperti ini, bagaimana saya memanggil emacsclient dari dalam Emacs? (dan saya tahu saya bisa membuka file pdf dengan find-file
; itu bukan pilihan di sini karena saya perlu memanggil proses eksternal (texdoc) untuk menemukan file, dan proses itu kemudian memanggil emacsclient).
texdoc --view
dan kemudian beralih kembali ke Emacs ketika membuka file. Tapi saya pikir harus ada cara untuk melakukan ini dalam satu langkah dari Emacs?
(async-shell-command "emacsclient -n tmp.pdf")
memecahkan masalah?
(async-shell-command "emacsclient -n tmp.pdf")
berfungsi, tetapi tidak (async-shell-command "texdoc --view listings")
tidak. Jadi itu petunjuk yang berguna.
C-u C-c ?
bekerja? Pertama-tama menunjukkan daftar dokumen yang terkait dengan paket, kemudian membuka pemirsa dengan (call-process "texdoc" nil 0 nil "--just-view" doc)
.
texdoc -M --list listings
untuk mencari file, lalu gunakanfind-file
?