Recientemente, Rpresencié la introducción inteligente del operador de tuberías %>%u thenoperador 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 elispcó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.elo .emacsarchivo:
(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 ESSmodo?
Tenga en
cuenta que me di cuenta de que el bloqueo de fuente %>%se puede hacer habilitando ess-fl-keyword:operatorsdesde el menú ESS.
inferior...y ess-mode...?
ess-modese activa al editar, por ejemplo, .Rarchivos. inferior-ess-modese activa cuando se ejecuta un Rproceso interactivo dentro de Emacs (es decir, a través del Rcomando o con el C-c C-zque llama ess-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 ambos ess-modey inferior, ¿verdad?
(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).