问:如何获得ESS(R)直接绘制到Emacs缓冲区?
通过ESS与R交互时,R默认会在Emacs外部生成一个单独的图形窗口以绘制其图。(当然,一个可以选择其他图形设备,这就是我们将其绘制为PDF的方式,等等。)两个问题:首先,新窗口夺走了Emacs的关注,其次,确保所有内容都保持整洁会很好在Emacs生态系统中。
因此:有没有办法将“直接”(或什至是间接)绘制到Emacs缓冲区,更重要的是,这样做无需用户进行大量手动干预?
在这个旧的Stack Overflow线程中已有一些先前的讨论,但是提出的部分解决方案并不理想。它们主要涉及更改R中的绘图设备(例如,更改为PNG),绘图到临时文件,然后在Emacs缓冲区中手动访问该文件。这一切让我感到非常笨拙,特别是如果目标是交互使用绘图窗口/缓冲区并在一个会话中绘制许多绘图(或动态添加图层)。
我在这里推测,但令我惊讶的是,由于R和Emacs都支持SVG,因此这可能是一种有用的格式。但是,我不清楚是否/如何挂接到R进程中以进行实时通信。有没有一种方法可以将R吐出的SVG代码直接放入Emacs缓冲区中,还是需要通过临时文件的中介?当R创建一个临时文件时,如何说服Emacs自动访问一个新的临时文件,或者当临时文件被新图更新/覆盖时,如何更新这样的图缓冲区?
create-image
。但是,我无法真正使R和Emacs相互通信以实现这一目标。