У мене виникла проблема з переглядом файлів документації у форматі PDF з AucTex. Я використовую pdf-tools
для перегляду PDF-файлів зсередини Emacs, і я встановив emacsclient -n
як свій pdf-переглядач за замовчуванням (через xdg-mime на Debian Linux). Це працює чудово за більшості обставин, але порушує (Tex-documentation-texdoc ...)
функцію Auctex ( C-c ?
).
Я звузив проблему до одного рядка коду. Коли я намагаюся переглянути документацію для listings
пакета, TeX-documentation-texdoc
перетворює це на наступний сексп:
(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
?