Ocorreu um problema ao exibir arquivos de documentação em pdf com o AucTex. Eu uso pdf-tools
para visualizar arquivos PDF no Emacs e defini emacsclient -n
como 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 listings
pacote, TeX-documentation-texdoc
transforma isso no seguinte sexp:
(shell-command-to-string "texdoc --view listings")
texdoc
por sua vez, chama emacsclient
para 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.pdf
e 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 --view
e 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 listings
para encontrar o arquivo e depois usá-lofind-file
?