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.
inferior...
y ess-mode...
?
ess-mode
se activa al editar, por ejemplo, .R
archivos. inferior-ess-mode
se activa cuando se ejecuta un R
proceso interactivo dentro de Emacs (es decir, a través del R
comando o con el C-c C-z
que 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-mode
y 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)
.