Tôi đã gặp vấn đề khi xem các tệp tài liệu pdf với AucTex. Tôi sử dụng pdf-tools
để xem các tệp PDF từ bên trong Emacs và tôi đã đặt emacsclient -n
làm trình xem pdf mặc định của mình (thông qua xdg-mime trên Debian Linux). Điều này hoạt động tốt trong hầu hết các trường hợp, nhưng nó phá vỡ (Tex-documentation-texdoc ...)
chức năng của Auctex ( C-c ?
).
Tôi đã thu hẹp vấn đề xuống một dòng mã. Khi tôi cố gắng xem tài liệu cho listings
gói, TeX-documentation-texdoc
biến nó thành sexp sau:
(shell-command-to-string "texdoc --view listings")
texdoc
lần lượt gọi emacsclient
để thực sự mở tệp (dựa trên cách tôi đã cấu hình máy tính để bàn của mình qua xdg). Tuy nhiên, tại thời điểm này, Emacs bị treo và tôi cần phải thoát ( C-g
) để lấy lại quyền kiểm soát. Sau đó, không có pdf mới được mở. Điều tương tự cũng xảy ra nếu tôi cố gắng gọi trực tiếp emacsclient:
(shell-command-to-string "emacsclient -n tmp.pdf")
Cả hai lệnh làm việc tại dòng lệnh (nghĩa là emacsclient -n tmp.pdf
và texdoc --view listings
.
Câu hỏi của tôi là, trong một trường hợp như thế này, làm thế nào để tôi gọi emacsclient từ bên trong Emacs? (và tôi biết rằng tôi chỉ có thể mở tệp pdf bằng find-file
; đó không phải là một tùy chọn ở đây vì tôi cần gọi một quy trình bên ngoài (texdoc) để tìm tệp, và quá trình đó sau đó gọi emacsclient).
texdoc --view
và sau đó chuyển trở lại Emacs khi nó mở tệp. Nhưng tôi nghĩ nên có một cách để làm điều này trong một bước duy nhất từ Emacs?
(async-shell-command "emacsclient -n tmp.pdf")
giải quyết vấn đề?
(async-shell-command "emacsclient -n tmp.pdf")
hoạt động, nhưng (async-shell-command "texdoc --view listings")
không. Vì vậy, đó là một đầu mối hữu ích.
C-u C-c ?
hoạt động không? Đầu tiên, nó hiển thị danh sách các tài liệu liên quan đến gói, sau đó mở trình xem với (call-process "texdoc" nil 0 nil "--just-view" doc)
.
texdoc -M --list listings
để tìm tập tin, và sau đó sử dụngfind-file
?