我在使用AucTex查看pdf文档文件时遇到问题。我pdf-tools
曾经在Emacs中查看PDF文件,并且将其设置emacsclient -n
为默认的pdf查看器(通过Debian Linux上的xdg-mime)。在大多数情况下,此方法工作正常,但会破坏(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
。
我的问题是,在这种情况下,如何在Emacs中调用emacsclient?(而且我知道我可以使用find-file
;仅打开pdf文件,这不是一个选项,因为我需要调用外部进程(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
?