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.

(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-modese activa al editar, por ejemplo,.Rarchivos.inferior-ess-modese activa cuando se ejecuta unRproceso interactivo dentro de Emacs (es decir, a través delRcomando o con elC-c C-zque 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-modeyinferior, ¿verdad?Respuestas:
Gracias a Mutbuerger por los útiles comentarios. Actualmente, uso esto para que este operador trabaje solo con ESS.
fuente