Ocorreu um problema ao exibir arquivos de documentação em pdf com o AucTex. Eu uso pdf-toolspara visualizar arquivos PDF no Emacs e defini emacsclient -ncomo meu visualizador de PDF padrão (via xdg-mime no Debian Linux). Isso funciona bem na maioria das circunstâncias, mas quebra a (Tex-documentation-texdoc ...)função de Auctex ( C-c ?).
Eu reduzi o problema a uma única linha de código. Quando tento visualizar a documentação do listingspacote, TeX-documentation-texdoctransforma isso no seguinte sexp:
(shell-command-to-string "texdoc --view listings")
texdocpor sua vez, chama emacsclientpara realmente abrir o arquivo (com base em como eu configurei minha área de trabalho via xdg). No entanto, neste momento, o Emacs trava e eu preciso sair ( C-g) para recuperar o controle. Depois disso, nenhum novo pdf é aberto. O mesmo acontece se eu tentar ligar diretamente para o emacsclient:
(shell-command-to-string "emacsclient -n tmp.pdf")
Ambos os comandos funcionam na linha de comando (ou seja, emacsclient -n tmp.pdfe texdoc --view listings.
Minha pergunta é, em uma instância como esta, como chamo o emacsclient de dentro do Emacs? (e eu sei que eu poderia simplesmente abrir o arquivo pdf find-file; isso não é uma opção aqui, pois preciso chamar um processo externo (texdoc) para encontrar o arquivo, e esse processo chama o emacsclient).
texdoc --viewe depois voltar para o Emacs quando ele abrir o arquivo. Mas acho que deveria haver uma maneira de fazer isso em uma única etapa do Emacs?
(async-shell-command "emacsclient -n tmp.pdf")resolver o problema?
(async-shell-command "emacsclient -n tmp.pdf")funciona, mas não (async-shell-command "texdoc --view listings"), não. Então essa é uma pista útil.
C-u C-c ?? Primeiro, mostra a lista de documentos relacionados ao pacote e abre o visualizador com (call-process "texdoc" nil 0 nil "--just-view" doc).
texdoc -M --list listingspara encontrar o arquivo e depois usá-lofind-file?