Я столкнулся с проблемой просмотра PDF-файлов документации с AucTex. Я использую pdf-tools
для просмотра PDF-файлов из Emacs, и я установил emacsclient -n
pdf-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
?