P: ¿cómo puedo obtener ESS (R) para trazar directamente a un búfer de Emacs?
Al interactuar con R a través de ESS, R por defecto genera una ventana gráfica separada fuera de Emacs para dibujar sus trazados. (Por supuesto, uno puede elegir otros dispositivos gráficos, que es cómo trazamos en PDF, etc.) Dos problemas: primero, la nueva ventana le roba el foco a Emacs, y segundo, seguro que sería bueno mantener todo bien y ordenado dentro del ecosistema Emacs.
Entonces: ¿hay alguna forma de trazar "directamente" (o incluso indirectamente) a un búfer de Emacs y, lo que es más importante, hacerlo sin mucha intervención manual por parte del usuario?
Hubo alguna discusión previa en este viejo hilo de desbordamiento de pila , pero las soluciones parciales propuestas no son ideales. Principalmente implican cambiar el dispositivo de trazado en R (por ejemplo, a PNG), trazar en un archivo temporal y luego visitar manualmente ese archivo en un búfer de Emacs. Todo eso me parece muy torpe, especialmente si el objetivo es usar la ventana de trama / buffer de forma interactiva y dibujar muchas parcelas en una sesión (o agregar capas sobre la marcha).
Estoy especulando aquí, pero me parece que, dado que tanto R como Emacs admiten SVG, ese podría ser un formato útil para usar. Sin embargo, no me queda claro si / cómo se podría conectar al proceso R para comunicarse sobre la marcha. ¿Hay alguna manera de hacer que R escupe el código SVG directamente en un búfer de Emacs, o necesitaría pasar por el intermediario de un archivo temporal? ¿Cómo podría uno convencer a Emacs para que visite un nuevo archivo temporal de forma automática cuando R lo crea, o para actualizar dicho búfer de trama cuando el archivo temporal se actualiza / sobrescribe con una nueva trama?
create-image
. Sin embargo, no puedo ayudarte a hacer que R y Emacs se comuniquen entre sí para lograrlo.Respuestas:
No es una respuesta completa a la pregunta, pero cuando uno usa R en el babel de org-mode:
Hacer
C-c C-c
esto en modo org creará un*my-R*
búfer con un búfer ESS interactivo, creará el diagrama en elexample.svg
archivo y luego puede hacer clic (o presionar enter) en el enlace creado al archivo, que lo abrirá.Org-mode es capaz de alinear la imagen, pero lo hace al alternar esta funcionalidad (con
M-x org-toggle-inline-images
) o al abrir el archivo, pero no al ejecutar un código en él.Entonces esta no es una solución completa.
fuente
(add-hook 'org-babel-after-execute-hook 'org-display-inline-images)
, pero esto (creo) todavía no es realmente lo que quería el OP.Acabo de publicar una respuesta a la publicación anterior a la que te refieres en tu pregunta. Como escribí allí, esto puede no funcionar para usted, ya que sería un cambio bastante dramático en el flujo de trabajo general de su computadora.
Pero exwm , al permitir que cualquier ventana que no sea emacs sea un búfer de emacs, permite tener gráficos R en los búferes de emacs que están controlados por las configuraciones y combinaciones de teclas habituales de emacs.
Aquí hay un ejemplo de cómo se ve esto:
fuente