Recientemente, R
presencié la introducción inteligente del operador de tuberías %>%
u then
operador en el código que uso con bastante frecuencia en la actualidad. Me pregunto si esto ya se ha implementado en la versión más reciente de ESS . Si no, no debería ser un problema encontrar un elisp
código para escribir una función para él. Necesito implementar esto para que imprima ese operador %>%
y luego salte a una nueva línea con sangría.
MWE
library(ggplot2)
library(dplyr)
diamonds %>%
filter(cut=="Ideal") %>%
ggplot(aes(price)) +
geom_histogram() +
facet_wrap (~ color)
Mi prueba elisp - en .init.el
o .emacs
archivo:
(defun then_R_operator ()
"%>% operator or 'then' pipe operator"
(interactive)
(insert " %>%") ; note the space before the first %
(reindent-then-newline-and-indent))
(global-set-key (kbd "C-%") 'then_R_operator)
Funciona, pero quiero verificar si hay algo mal con él o si hay alguna sugerencia para mejorarlo (ser un novato en elisp). ¿Cómo restringir esto solo al ESS
modo?
Tenga en
cuenta que me di cuenta de que el bloqueo de fuente %>%
se puede hacer habilitando ess-fl-keyword:operators
desde el menú ESS.
(just-one-space 1)
antes de la tubería. Desea usar eless-mode-map
(y probablemente elinferior-ess-mode-map
) para establecer la clave con(define-key ess-mode-map (kbd "C-%") 'then_R_operator)
.inferior...
yess-mode...
?ess-mode
se activa al editar, por ejemplo,.R
archivos.inferior-ess-mode
se activa cuando se ejecuta unR
proceso interactivo dentro de Emacs (es decir, a través delR
comando o con elC-c C-z
que llamaess-switch-to-inferior-or-script-buffer
).inferior...
esto me permitirá usarla en la consola interactiva de R, que está dentro de Emacs? en caso afirmativo, creo que sería mejor definir claves para ambosess-mode
yinferior
, ¿verdad?Respuestas:
Gracias a Mutbuerger por los útiles comentarios. Actualmente, uso esto para que este operador trabaje solo con ESS.
fuente