Я столкнулся с проблемой просмотра PDF-файлов документации с AucTex. Я использую pdf-toolsдля просмотра PDF-файлов из Emacs, и я установил emacsclient -npdf-viewer по умолчанию (через xdg-mime в Debian Linux). В большинстве случаев это работает нормально, но нарушает (Tex-documentation-texdoc ...)функцию Auctex ( C-c ?).
Я сузил проблему до одной строки кода. Когда я пытаюсь просмотреть документацию для listingsпакета, TeX-documentation-texdocпревращает это в следующий sexp:
(shell-command-to-string "texdoc --view listings")
texdocв свою очередь призывает emacsclientфактически открыть файл (в зависимости от того, как я настроил свой рабочий стол через xdg). Однако на этом этапе Emacs зависает, и мне нужно выйти ( C-g), чтобы вернуть контроль. После этого новый PDF не открывается. То же самое происходит, если я пытаюсь вызвать emacsclient напрямую:
(shell-command-to-string "emacsclient -n tmp.pdf")
Обе команды работают в командной строке (то есть, emacsclient -n tmp.pdfи texdoc --view listings.
Мой вопрос, как в таком случае, как я могу вызвать emacsclient из Emacs? (и я знаю, что могу просто открыть файл pdf с помощью find-file; здесь это не вариант, так как мне нужно вызвать внешний процесс (texdoc), чтобы найти файл, и этот процесс затем вызывает emacsclient).
texdoc --viewа затем переключение обратно на Emacs, когда он открывает файл. Но я думаю, что должен быть способ сделать это за один шаг от Emacs?
(async-shell-command "emacsclient -n tmp.pdf")решить проблему?
(async-shell-command "emacsclient -n tmp.pdf")работает, а не (async-shell-command "texdoc --view listings")нет. Так что это полезная подсказка.
C-u C-c ?? Сначала отображается список документов, связанных с пакетом, а затем открывается окно просмотра (call-process "texdoc" nil 0 nil "--just-view" doc).
texdoc -M --list listingsчтобы найти файл, а затем использоватьfind-file?